一个基于 Express 的 Web 服务,用于自动更新阿里云 DNS 记录。该服务特别适用于需要动态 DNS 更新的场景,支持 IPv4 (A记录) 和 IPv6 (AAAA记录) 的更新。
- 支持 IPv4 和 IPv6 记录更新
- 基于 API Key 的安全认证
- 自动检测已存在的 DNS 记录
- 智能判断是否需要更新(避免重复更新相同IP)
- 详细的日志记录
- 低 TTL (60秒) 设置,确保 DNS 记录快速更新
- Node.js
- npm
- 阿里云账号及 DNS 解析权限
在项目根目录创建 .env
文件,配置以下环境变量:
PORT=3000 # 服务运行端口
API_KEY=your-api-key # API 访问密钥
ACCESS_KEY_ID=your-key-id # 阿里云 AccessKey ID
ACCESS_KEY_SECRET=your-secret # 阿里云 AccessKey Secret
DOMAIN=example.com # 要管理的域名
npm install
npm run dev
此命令会启动 TypeScript 编译器的监听模式,自动编译变更的文件。
npm run build
此命令会将 TypeScript 代码编译为 JavaScript。
npm start
此命令会启动编译后的服务。
端点: /change-ip
方法: GET
参数:
key
: API 密钥(必需)server
: 子域名前缀(必需)ip
: 新的 IP 地址(必需)type
: 记录类型(可选,默认为 'AAAA')- 可选值: 'A' 或 'AAAA'
示例请求:
# IPv6 更新
curl "http://localhost:3000/change-ip?key=your-api-key&server=test&ip=2001:db8::1&type=AAAA"
# IPv4 更新
curl "http://localhost:3000/change-ip?key=your-api-key&server=test&ip=192.168.1.1&type=A"
成功响应:
{
"success": true,
"message": "DNS record updated successfully",
"details": {
"domain": "test.example.com",
"ip": "2001:db8::1",
"type": "AAAA",
"operation": "update"
}
}
- 使用环境变量存储敏感信息
- API Key 认证机制
- 详细的日志记录,包含操作时间和持续时间
- 参数验证和错误处理
- 确保服务器安全性
- 使用反向代理(如 Nginx)
- 启用 HTTPS
- 设置适当的防火墙规则
- 定期更新依赖包
如果您想要复制或修改此项目,以下是关键的开发要点:
- 创建一个 Express 服务器,用于处理动态 DNS 更新请求
- 集成阿里云 DNS API,实现域名记录的增删改查
- 实现以下核心功能:
- API 密钥验证
- IPv4/IPv6 支持
- DNS 记录管理(查询、添加、更新)
- 错误处理和日志记录
- 使用环境变量进行配置管理
- 实现请求参数验证
- 添加详细的日志记录功能
服务会返回适当的 HTTP 状态码和错误消息:
- 400: 缺少必需参数或参数无效
- 401: API 密钥无效
- 500: 服务器内部错误
服务会记录以下信息:
- 请求开始时间
- 操作类型和详情
- 执行时长
- 错误信息(如果有)
- DNS 记录变更详情
[添加适当的许可证信息]
[添加贡献指南信息]