一、前期准备
- Cloudflare 托管域名
- 创建 AAAA 记录
- 创建 API Token(权限:Zone → DNS → Edit)
二、原始脚本
# Cloudflare Dynamic IPv6 DDNS for RouterOS v7.22+
# Required policy: read, write, test, policy
:local TOKEN "YOUR_API_TOKEN"
:local ZONEID "YOUR_ZONE_ID"
:local RECORD6ID "YOUR_RECORD_ID"
:local RECORDNAME "your.domain.com"
:local WANIF "bridge"
:global IP6NEW
:global IP6CUR
:local url6 "https://api.cloudflare.com/client/v4/zones/$ZONEID/dns_records/$RECORD6ID/"
:if ([/interface get $WANIF value-name=running]) do={
:local currentIP [/ipv6/address/get [:pick [find global interface=$WANIF] 0 ] address]
:set IP6NEW [:pick $currentIP 0 [:find $currentIP "/"]]
:if ($IP6NEW != $IP6CUR) do={
:log info "CF-DDNS: IPv6 changed to $IP6NEW, updating Cloudflare..."
/tool fetch http-method=put mode=https url=$url6 check-certificate=no output=user as-value \
http-header-field="Authorization: Bearer $TOKEN,Content-Type: application/json" \
http-data="{\"type\":\"AAAA\",\"name\":\"$RECORDNAME\",\"content\":\"$IP6NEW\",\"ttl\":120,\"proxied\":false}"
:set IP6CUR $IP6NEW
:log info "CF-DDNS: Host $RECORDNAME updated with $IP6CUR"
} else={
:log info "CF-DDNS: IPv6 $IP6NEW unchanged"
}
} else={
:log info "CF-DDNS: Interface $WANIF not running, skipping update"
}
三、需要修改的地方
- TOKEN → Cloudflare API Token
- ZONEID → 域名 Zone ID
- RECORD6ID → AAAA 记录 ID
- RECORDNAME → 域名
- WANIF → IPv6 接口(bridge / pppoe-out1)
四、添加脚本
/system script add name=cf-ddns-ipv6 policy=read,write,test source="(粘贴上面的脚本)"
五、添加定时任务
/system scheduler add \
name=cf-ddns \
interval=30m \
on-event=cf-ddns-ipv6 \
policy=read,write,test
六、验证
/system script run cf-ddns-ipv6
/log print where message~"CF-DDNS"