首先需要在“域名管理 → DDNS”中为指定的 A/AAAA 记录创建 DDNS 令牌。DDNS 专用令牌只能修改绑定记录的 IP 地址;它无法访问或修改其他记录。
**端点:** `ddns`
**操作:** `update`
**方法:** `GET`、`POST` 或 `PUT`
**身份验证:** `Authorization: Bearer <DDNS_TOKEN>` 或 `X-DDNS-Token`。DDNS 令牌不能通过 URL 或请求正文传递。
如果未指定 IP 地址,则使用请求的直接源 IP 地址:
```bash
curl -X POST "https://api005.dnshe.com/index.php?m=domain_hub&endpoint=ddns&action=update" \
-H "Authorization: Bearer ddns_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
```
也可以显式提交 IPv4 或 IPv6 地址:
```bash
curl -X POST "https://api005.dnshe.com/index.php?m=domain_hub&endpoint=ddns&action=update" \
-H "X-DDNS-Token: ddns_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"ip":"192.168.1.1"}'
```
如果 IP 更新成功,则返回 `good`;如果 IP 未更改,则返回 `nochg`,并且不调用 DNS 提供商:
```json
{
"success": true,
"status": "nochg",
"changed": false,
"ip": "192.168.1.1"
}
```
##### 2.5.1 Synology DSM 和其他设备
DDNS 更新地址为 `https://api005.dnshe.com`。由于 DDNS 专用令牌只能通过请求头传递,因此建议使用 Synology DSM 的任务调度脚本,而不是将令牌放入第三方 DDNS 服务提供商的 URL 模板中。
1. 在“域名管理 → DDNS”中为目标 A/AAAA 记录创建令牌并立即保存。 2. 在 DSM 中,打开“控制面板 → 任务计划程序 → 添加 → 计划任务 → 用户自定义脚本”。建议将其设置为每 5 分钟运行一次,且此间隔不应小于后台配置的最小更新间隔。
3. 将以下 Token 替换为您的实际值,然后手动运行一次。返回的 JSON 中,如果 `status` 为 `good`(IP 已更新)或 `nochg`(IP 未更改),则表示操作成功。
```sh
#!/bin/sh
TOKEN='ddns_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
URL='https://api005.dnshe.com/index.php?m=domain_hub&endpoint=ddns&action=update'
/usr/bin/curl -fsS -X POST -H "X-DDNS-Token: ${TOKEN}" "${URL}"
```
如果未传递 `ip` 参数,系统将使用请求源的公网 IP 地址;如果需要指定 IP 地址,可以在请求体中传递 JSON 格式,例如:`-H "Content-Type: application/json" -d '{"ip":"192.168.1.1"}'`