RouterOS 7.22 + Cloudflare IPv6 DDNS 脚本


一、前期准备

  • 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"

 

, ,

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注