Mikrotik RouterOS 路由器 CloudFlare DDNS 动态解析脚本(IPv4/IPv6)
2020-3-13
| 2023-9-1
0  |  0 分钟
页面类型
发布状态
发布日期
文章地址
内容摘要
文章标签
文章分类
icon代码
密码
在 RouterOS 添加一个脚本执行后将公网IPv4/IPv6解析到指定域名,该脚本改自 github 的 viritt/cloudflare_update.script 相比原版本增加IPv6解析以及双栈的支持。

前提条件

注意:脚本是基于RouterOS v6.46.4 编写的,大于小于此版本都可能导致一些命令问题

确认正确的公网地址

IPv4验证方法:
脚本提取 (WinBox --> IP --> Address List) 内指定接口的IP地址进行解析
ROS终端运行:/ip address get [/ip address find interface=接口名称] address
IPv6验证方法:
脚本提取 DHCPv6 Client 获取的 Prefix 并加上指定的IPv6后缀进行解析
ROS终端运行:/ipv6 dhcp-client get [find interface=接口名称] status
查看读出的数据是否为公网地址,

提前新建子域名

在 CloudFlare 新建需要解析的子域名,若需要解析IPv6 和双栈还需要建立IPv4同名子域名和单独子域名,单独子域名用于IPv6是否更新的判断
  1. ipv4.hscbook.com(A记录)
  1. ipv4.hscbook.com(AAAA记录)
  1. ipv6.hscbook.com(AAAA记录)

建立脚本

使用 WinBox 客户端连接至 RouterOS ;依次 System --> Scripts 进入脚本列表,新建一个名为DDNS_CloudFlare 脚本,将下面内容复制粘贴。

配置脚本

在 CloudFlare 域名主页的最下面 API 处
  1. 将 Zone ID 填入脚本的 CFzoneid 变量
  1. 点击 Get your API token 获取 API token 填入脚本的 CFtkn 变量
  1. 将 CloudFlare 的邮箱账号填入 CFemail 变量
根据三项信息套入 url -X GET \\"<https://api.cloudflare.com/client/v4/zones/$CFzoneid/dns_records\\>" -H \\"X-Auth-Email: $CFemail\\" -H \\"X-Auth-Key: $CFtkn\\" -H \\"Content-Type: application/json\\" | python -mjson.tool" 并在 linux 终端中运行可取得子域名的 CFid 并填入 CFdomainid 变量
其他变量根据注释以实际情况自行修改后点击 Run Script 运行脚本测试,查看系统日志无报错即可

创建任务计划

修改好脚本后使用 WinBox 客户端连接至 RouterOS ;依次 System --> Scheduler进入任务计划列表新建一个任务计划间隔时间建议为 TTL 变量的两倍,内容为 /system script run "DDNS_CloudFlare";

END

参考文档:MikroTik Wiki
获取 CFid 可使用 API 调试工具,例:Postwoman(ApiDebug)
网络运维
  • RouterOS
  • DDNS
  • Hexo自动部署博客脚本,具有微信确认、部署前预览确认的功能Nginx 结合又拍云反代理 Google Analytics 加速国内访问
    目录