ESADDNS 是一个基于 Deno 构建的 DDNS(动态域名系统)客户端,专为阿里云 ESA 服务设计。它能够自动检测您的公网 IP 地址变化,并实时更新 ESA 中的 DNS 记录。
- 🚀 基于 Deno - 使用最新的 Deno 运行时,安全且易于部署
- 💪 双栈支持 - 同时支持 IPv4 和 IPv6 网络环境
- ⚙️ 多域名管理 - 支持同时更新多个 DNS 记录
- 📝 简洁配置 - 使用带注释的 JSONC 配置文件,易于理解和维护
- 🔁 自动轮询 - 按设定的时间间隔自动检查和更新记录
- 🎨 彩色日志 - 提供详细的运行日志,便于监控和故障排查
- 读取配置文件
- 根据配置文件设定的
时间间隔循环获取当前设备互联网出口 IP - 如
当前设备互联网出口 IP和配置文件中的TTL与ESA中记录不一致,则自动更新ESA记录参数
-
阿里云账号和域名
- 您需要拥有一个阿里云账号
- 在 ESA 服务中添加并管理您的域名
-
获取访问密钥
- 创建一个 RAM 用户并获取
AccessKeyID和AccessKeySecret - 为该用户分配适当的权限(参见权限配置部分)
- 创建一个 RAM 用户并获取
-
下载程序
- 前往 Releases 页面
- 下载适用于您操作系统的最新版本可执行文件
要获取记录 ID,请按照以下步骤操作:
-
查看浏览器地址栏中的 URL,格式如下:
https://esa.console.aliyun.com/site/114514/dns-record/updateRecord/4039320643643520 -
URL 末尾的数字
4039320643643520就是该记录的RecordId
首次运行程序时会自动生成配置文件 Config.jsonc,包含以下字段:
| 字段 | 类型 | 描述 |
|---|---|---|
Auth.AccessKeyId |
string | 阿里云 RAM 用户的 AccessKey ID |
Auth.AccessKeySecret |
string | 阿里云 RAM 用户的 AccessKey Secret |
Cycle |
number | 执行周期(分钟) |
DDNSRecords |
array | 动态域名记录列表 |
| 字段 | 类型 | 描述 |
|---|---|---|
RecordId |
number | DNS 记录 ID |
IpVersion |
number (4 或 6) | IP 版本 |
TTL |
number | DNS 记录的 TTL 值(设为 1 即为自动) |
有两种方式为 RAM 用户授权:
-
推荐方式:使用系统策略 直接为 RAM 用户附加系统策略
AliyunESAFullAccess -
最小权限方式:自定义策略 如果希望遵循最小权限原则,可以创建自定义策略,包含以下权限:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "esa:UpdateRecord", "esa:GetRecord" ], "Resource": "*" } ] }
程序正常运行需要以下操作权限:
esa:UpdateRecord- 更新 DNS 记录esa:GetRecord- 获取 DNS 记录详情
ESADDNS 是一个简单而强大的 DDNS 解决方案,专为阿里云 ESA 服务打造。通过自动化更新您的动态 IP 地址到 DNS 记录,您可以轻松地从外部网络访问您的家庭服务器或其他设备,而无需担心 IP 地址变更带来的问题。
如果您在使用过程中遇到任何问题或有任何建议,欢迎:
- 提交 Issues 报告 Bug 或提出功能需求
- 参与 Pull Requests 贡献代码
本项目采用 GPL-3.0 许可证。详情请参阅 LICENSE 文件。
