DDNS

DDNS

Cloudflare

使用 cloudflare API 直接更新 DNS 记录。需要安装 curl 和 jsonfilter。

#!/bin/sh
wanip_v4=`ubus call network.interface.wan status | grep \"address\" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'`
record_name='abc.example.com'
zoneid='ffffff'
cftoken='fffffffffffff'

zoneinfo=`curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records?name=$record_name&type=A" \
     -H "Authorization: Bearer $cftoken" \
     -H "Content-Type:application/json"`

recordid=`jsonfilter -s $zoneinfo -e '$.result[0].id'`

result_cf=`curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zoneid/dns_records/$recordid" \
     -H "Authorization: Bearer $cftoken" \
     -H "Content-Type: application/json" \
     --data "{\"type\":\"A\",\"name\":\"$record_name\",\"content\": \"$wanip_v4\", \"ttl\":1,\"proxied\":false}"`
echo $result_cf

注意:

  • 在 Cloudflare Dashboard - My Profile - API tokens 里申请一个API Token,权限需要Zone->Zone以及Zone->DNS的Edit权限。
  • 在 Cloudflare Dashboardzone - Select Domain - Overview 里查看域名的 zone id。
  • 需要先在 Cloudflare 里创建一个对应域名的 A 记录。
  • 上面脚本里的 IPV4 获取方式仅适用于 OpenWrt。其他 Linux 可以尝试通用的获取网卡 IP 方式: ip addr | grep eth0 | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1

ChangeIp.com

更新 IP:

curl -k "https://nic.ChangeIP.com/nic/update?u=user@example.com&p=password&ip=1.2.3.4&hostname=domain.dynamic-dns.net"

  • ip 可选,默认自动检测。

dynu.com

更新 IP:

curl -k --user user:pass "https://api.dynu.com/nic/update?hostname=userdomain.dynu.com&myip=${IP}"

  • myip 可选,默认自动检测。

Last update: 2021-01-04 07:43:47 UTC