基于阿里云官方SDK的动态域名解析脚本,自动获取公网IP并更新阿里云DNS解析记录。

功能特点

  • 支持 IPv4 和 IPv6 解析
  • 多接口自动切换,提高IP获取成功率
  • 支持多个子域名前缀(如 *, www, mc
  • 获取失败自动重试机制
  • 时间戳日志,方便定时任务排查
  • 私有IP过滤,避免错误更新

环境要求

  • Python >= 3.7
  • 阿里云账号及AccessKey

安装步骤

1. 安装依赖

pip install alibabacloud_alidns20150109==4.4.1 alibabacloud_tea_openapi alibabacloud_tea_util

2. 获取阿里云AccessKey

  1. 登录阿里云控制台
  2. 点击右上角头像 → AccessKey管理
  3. 创建AccessKey,记录 AccessKey IDAccessKey Secret

3. 配置脚本

github地址:https://github.com/tianlingzi/aliyunddns

本站下载:阿里云云解析脚本

编辑 aliyunddns.py,修改以下配置:

# 必填配置
access_key_id = "你的AccessKey ID"
access_key_secret = "你的AccessKey Secret"
domain = "你的主域名"  # 如:example.com

# IPv4配置
ipv4_flag = 1  # 1=开启,0=关闭
name1_ipv4 = "*,www,@"  # 多个前缀用逗号分隔

# IPv6配置
ipv6_flag = 1  # 1=开启,0=关闭
name1_ipv6 = "*,www,@"  # 多个前缀用逗号分隔

参数说明

参数说明示例
access_key_id阿里云AccessKey IDLTxxxxxxxxxxxx
access_key_secret阿里云AccessKey Secret8xZxxxxxxxxxxxxxxxxxxxx
domain主域名example.com
ipv4_flag是否开启IPv4解析1=开启,0=关闭
name1_ipv4IPv4子域名前缀,多个用逗号分隔"*""*,www,@"
ipv4_endpointsIPv4公网IP获取接口列表可自行添加或替换
ipv4_repetitionIPv4获取失败后重试次数0=不重试
ipv6_flag是否开启IPv6解析1=开启,0=关闭
name1_ipv6IPv6子域名前缀,多个用逗号分隔"*""*,www,@"
ipv6_endpointsIPv6公网IP获取接口列表可自行添加或替换
ipv6_repetitionIPv6获取失败后重试次数0=不重试

使用方法

直接运行

python3 aliyunddns.py

设置定时任务(推荐)

在Linux系统中,可以通过crontab设置定时任务,自动更新DNS解析:

# 编辑crontab
crontab -e

# 添加以下内容,每5分钟执行一次
*/5 * * * * /usr/bin/python3 aliyunddns.py >> /var/log/ddns.log 2>&1

输出示例

[2026-06-26 10:30:00] 开始解析主域名:example.com

[2026-06-26 10:30:00] 进行ipv4解析
[2026-06-26 10:30:01] 获取ipv4成功:192.168.1.100
[2026-06-26 10:30:01] 正在解析域名:*.example.com
[2026-06-26 10:30:02] IPv4地址没变

[2026-06-26 10:30:02] 进行ipv6解析
[2026-06-26 10:30:03] 获取ipv6成功:2409:8a5c:67e:2660::1
[2026-06-26 10:30:03] 正在解析域名:*.example.com
[2026-06-26 10:30:04] 修改域名解析成功

[2026-06-26 10:30:04] 完成

注意事项

  1. 安全提示:请妥善保管你的AccessKey,不要泄露给他人
  2. 域名要求:确保域名已添加到阿里云云解析DNS控制台
  3. IPv6支持:确保你的网络环境支持IPv6,否则IPv6解析会失败
  4. 权限设置:AccessKey需要具有云解析DNS的读写权限
  5. 日志查看:建议开启定时任务日志,方便排查问题

常见问题

Q: 运行时提示"access_key_id或access_key_secret为空"

A: 请检查脚本中 access_key_idaccess_key_secret 是否填写正确。

Q: 获取IPv6失败

A: 请检查网络环境是否支持IPv6,或更换IPv6获取接口。

Q: 修改域名解析失败

A: 请检查AccessKey权限是否足够,或域名是否已添加到阿里云解析控制台。

最后修改:2026 年 06 月 26 日
如果觉得我的文章对你有用,请随意赞赏