ZoneDeck

DDNS 教程:用脚本更新解析记录

先在控制台创建域名,再通过 API 随时把记录更新到最新 IP——动态 IP 场景的最佳搭档。

这只是 DDNS 一部分 —— 完整 API 文档 覆盖域名添加、解析增删改、泛域名证书 DNS-01 等全部操作。

第 1 步 · 创建域名

登录控制台,在「域名」页添加您的域名(例如 example.com),然后到注册商处把 NS 改成平台分配的域名服务器。

第 2 步 · 创建 API 令牌

在「API 令牌」页创建令牌,至少勾选 records:write 权限。令牌永远只能操作您自己名下的域名。

第 3 步 · 一条命令更新记录

DDNS 接口按「主机名 + 类型」覆盖式更新:记录不存在就创建,值变了就替换,没变就不动——适合定时任务反复调用。

curl -X POST https://dns.us.wr.rs/api/v1/ddns \
  -H "Authorization: Bearer dcp_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"zone":"example.com","name":"home","type":"A","value":"203.0.113.7","ttl":60}'

请求参数

参数说明
zone域名(可选)。缺省时按 name 里的完整主机名自动定位所属域名。
name要更新的主机名:「home」(区内)、「home.example.com」(完整)或「@」(根域)。
type记录类型:A、AAAA、CNAME 或 TXT。
value新值(IPv4/IPv6 地址、目标主机或文本)。
ttl可选,TTL 秒数(最小 30),默认 300。

返回的 action 为 created(新建)/ updated(已替换)/ unchanged(无变化);record 为当前生效的记录。

自动更新:Linux(cron)

下面的脚本从平台获取本机公网 IPv4 并调用接口;配合 cron 每 5 分钟跑一次即可。

#!/bin/sh
# DDNS update: keep home.example.com pointed at this machine's IPv4.
TOKEN="dcp_xxxxxxxxxxxxxxxx"     # API token with records:write
NAME="home.example.com"          # full hostname to update

IP=$(curl -s https://dns.us.wr.rs/api/v1/ddns/ip | sed 's/.*"ip":"\([^"]*\)".*/\1/')
if [ -n "$IP" ]; then
  curl -s -X POST https://dns.us.wr.rs/api/v1/ddns \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d "{\"name\":\"$NAME\",\"type\":\"A\",\"value\":\"$IP\",\"ttl\":60}"
fi
crontab -e
*/5 * * * * /usr/local/bin/ddns-update.sh >/dev/null 2>&1

Windows(计划任务 + PowerShell)

# DDNS update (Windows Task Scheduler, every 5 minutes)
$token = "dcp_xxxxxxxxxxxxxxxx"
$name  = "home.example.com"
$api   = "https://dns.us.wr.rs"

$ip = (Invoke-RestMethod "$api/api/v1/ddns/ip").ip
Invoke-RestMethod -Method Post -Uri "$api/api/v1/ddns" `
  -Headers @{ Authorization = "Bearer $token" } `
  -ContentType "application/json" `
  -Body (@{ name = $name; type = "A"; value = $ip; ttl = 60 } | ConvertTo-Json)

验证

更新完成后,用 dig 检查权威应答:

dig +short home.example.com @ns1.qn.cx

小技巧:DDNS 记录的 TTL 建议 60–300 秒,IP 变化后全世界能更快切到新地址。