|
|
本帖最后由 白云朵朵 于 2024-2-16 13:51 编辑
https://post.smzdm.com/p/ax0202l9/ 这里有人发过Routeros配合阿里云实现的DDNS脚本,我来分享利用Cloudflare实现的脚本,在最新版Routeros 7.13.4上测试成功:
- # Cloudflare Dynamic DNS update script
- # Required policy: read, write, test, policy
- # Add this script to scheduler
- # Install DigiCert root CA or disable check-certificate
- # Configuration ---------------------------------------------------------------------
- :local TOKEN "__APITOKEN__"
- :local ZONEID "__ZONEIDENTIFIER__"
- :local RECORDID "__RECORDIDENTIFIER__"
- :local RECORDNAME "__DNSRECORD__"
- :local WANIF "__WANINTERFACE__"
- #------------------------------------------------------------------------------------
- :global IP4NEW
- :global IP4CUR
- :local url "https://api.cloudflare.com/client/v4/zones/$ZONEID/dns_records/$RECORDID/"
- :if ([/interface get $WANIF value-name=running]) do={
- # Get the current public IP
- :local currentIP [/ip address get [/ip address find interface=$WANIF ] address];
- :set IP4NEW [:pick $currentIP 0 [:find $currentIP "/"]];
- # Check if IP has changed
- :if ($IP4NEW != $IP4CUR) do={
- :log info "CF-DDNS: Public IP changed to $IP4NEW, updating"
- :local cfapi [/tool fetch http-method=put mode=https url=$url check-certificate=no output=user as-value \
- http-header-field="Authorization: Bearer $TOKEN,Content-Type: application/json" \
- http-data="{"type":"A","name":"$RECORDNAME","content":"$IP4NEW","ttl":120,"proxied":false}"]
- :set IP4CUR $IP4NEW
- :log info "CF-DDNS: Host $RECORDNAME updated with IP $IP4CUR"
- } else={
- :log info "CF-DDNS: Previous IP $IP4NEW not changed, quitting"
- }
- } else={
- :log info "CF-DDNS: $WANIF is not currently running, quitting"
- }
复制代码 这个脚本出自于 https://github.com/misterkrittin ... e%20Record%20ID.txt ,我仅将原脚本中查询IPv4地址的方式由访问 https://ipv4.icanhazip.com 变成了直接从本地PPPOE连接查询,当然不修改也正常运行。修改的此处同样是抄来的,出自于 https://www.51it.wang/ll/1921 。不过国内大神的这个脚本我没有运行成功。
脚本运行只需要自己手动替换双引号里的5个变量值,简单介绍:
:local TOKEN "__APITOKEN__" 在Cloudfare中自行创建API Token,不要用Global API KEY。具体方法有很多教程不再赘述,用过类似DDNS-GO的人会很熟悉。
:local ZONEID "__ZONEIDENTIFIER__" 对应Cloudflare域名管理“overview”页面右下能直接看到的 Zone ID值。
:local RECORDID "__RECORDIDENTIFIER__" 先在CLoudflare管理面板中为动态域名随便创建一条A记录。例如,创建 ros.ithome.com 并通过A记录指向1.1.1.1,保存后退出到域名管理的上一级界面,点击左下角 Management Account (找不到的看我截图),进入二级菜单 Audit LOG,能看到LOG中有一条CREATE的记录,点进去黑体标粗的 Resource ID 就是 ros.ithome.com 这个域名的ID值。 :local RECORDNAME "__DNSRECORD__" 用到的动态域名。本例中即为 ros.ithome.com :local WANIF "__WANINTERFACE__" PPPOE接口名称。如未自行修改,即为pppoe-out1 。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|