【RouterOS(ROS)】Cloudflare DDNS 脚本

本文基于 ROS 7.18.2 编写

前言

因为最近忽悠了个同事玩NAS,暂时用的我的域名,给他整完反代之后,看着 cloudflare 一大串的域名记录,看着很蛋疼,索性把没必要更新的地址全都换成了 CNAME 记录,看起来清爽多了
然后还是感觉原本的脚本不太好用,就重新写了一个脚本自用
和网上流传的脚本,主要有以下改进:

  • ✅ 支持多个域名和记录类型(A / AAAA)同时更新
  • 🔐 使用 Cloudflare API Token,设置更简单
  • ➕ 自动新建域名记录,无需手动创建
  • 🧠 使用缓存机制,避免高频 API 请求,支持强制更新时间间隔
  • 📤 支持提交本机或内网设备的 IPv6 地址(如 ::1、手动后缀拼接、MAC 地址获取)
  • 📡 使用 Cloudflare DNS API 读取域名记录,而非 DNS 解析

其实本来应该加上可以同步多个设备 IPv6 地址的,不过考虑到设置反代之后其实根本不需要这个功能,就懒得做了

配置说明

设置方面比较简单,只需要在脚本顶部设置以下变量:

1
2
3
4
5
6
7
8
9
10
11
:local CFiface "pppoe-out1"      # 获取IPv4地址的接口
:local CFiface6 "pppoe-out1" # 获取IPv6前缀的接口
:local CFzoneid "你的Zone ID" # 区域 ID
:local CFtoken "你的API令牌" # 创建令牌->编辑区域 DNS (请勿使用全局 API)
# 设置要更新的记录(支持多个):
:local DomainsToUpdate {
"v4.domain.com|A";
"v6.domain.com|AAAA";
"ds.domain.com|A";
"ds.domain.com|AAAA";
}

项目地址