使用 DDNS 动态更新 ZZ.AC 域名

💡 原文中文,约3600字,阅读约需9分钟。
📝

内容提要

ZZ.AC域名现已支持DDNS动态更新功能。其设计理念是通过“备案”机制防止滥用,用户需在后台登记用途并获取Token。使用方法包括通过curl API更新A/AAAA记录,以及创建ACME DNS-01类型Token以自动申请SSL证书,并提供了acme.sh集成脚本示例。相比deSEC,官方DDNS更新更快,两分钟内生效。

🔎

延伸解读

“备案”机制如何防滥用

ZZ.AC 的 DDNS 默认不开启,用户需在后台为子域名创建令牌并登记用途,管理员可查看所有登记信息,并自动检查滥用行为,一旦发现直接封禁。这种“备案”设计借鉴了工信部思路,在开放 API 的同时保留审核和追溯能力,平衡了便利与安全。

DDNS 与 ACME DNS-01 的差异

DDNS 令牌用于更新 A/AAAA 记录,而 ACME DNS-01 令牌专门用于更新 TXT 记录以完成证书验证。两者 API 调用方式类似,但 ACME 令牌删除时必须指定记录值,避免误删同域名的其他 TXT 记录。用户需根据实际需求选择对应令牌类型。

为何弃用 deSEC 而自建

作者曾使用 deSEC 实现 DDNS,但其最小 TTL 为一小时,导致 IP 变更后解析生效过慢,无法满足家庭动态 IP 场景。ZZ.AC 官方 DDNS 可在两分钟内生效,且仍有优化空间,因此选择自建方案,以更及时地更新解析记录。

Q&A

ZZ.AC 域名如何通过 DDNS 更新 A 记录?

使用 curl 命令,向 https://nic.zz.ac/api/ddns/records 发送 PUT 请求,请求头包含 Authorization: Bearer <token>,请求体为 JSON 格式,例如 {"a":"1.2.3.4","ttl":300}。

ZZ.AC 的 DDNS 功能如何防止滥用?

通过“备案”机制:默认不开启 DDNS,用户需在后台登记用途并创建 Token,管理员会审核并自动检查滥用行为,发现后封禁用户。

为什么 ZZ.AC 之前不支持 DDNS?

一是系统设计简单,每个用户使用单独的 zone 文件,支持 API 更新需要重新设计;二是为了防止滥用,避免用户将动态 IP 映射到域名后难以追踪内容。

如何通过 acme.sh 为 ZZ.AC 域名自动申请 SSL 证书?

创建 ACME DNS-01 类型的 Token,将 dns_zz.sh 脚本保存到 .acme.sh/dnsapi/ 目录,设置环境变量 ZZ_DDNS_TOKEN,然后使用命令 acme.sh --issue --dns dns_zz -d example.zz.ac -d "*.example.zz.ac" 签发证书。

ZZ.AC 官方 DDNS 相比 deSEC 有什么优势?

ZZ.AC 官方 DDNS 更新生效时间约两分钟,而 deSEC 的最小 TTL 为一小时,对于动态 IP 变化来说太慢。

为什么作者需要 DDNS 功能?

作者家里的设备需要将 ISP 的动态公网 IP 映射到域名,且公网 IP 的 80 和 443 端口被禁用,无法使用 HTTP-01 和 ALPN-01 验证,只能使用 DNS-01 验证,因此需要域名支持 API 更新。

🏷️

标签

➡️

继续阅读