找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 8950|回复: 23

[Router OS] 分享Routeros配合Cloudflare域名实现动态域名的脚本

[复制链接]
发表于 2024-2-16 13:46 | 显示全部楼层 |阅读模式
本帖最后由 白云朵朵 于 2024-2-16 13:51 编辑

https://post.smzdm.com/p/ax0202l9/ 这里有人发过Routeros配合阿里云实现的DDNS脚本,我来分享利用Cloudflare实现的脚本,在最新版Routeros 7.13.4上测试成功:

  1. # Cloudflare Dynamic DNS update script
  2. # Required policy: read, write, test, policy
  3. # Add this script to scheduler
  4. # Install DigiCert root CA or disable check-certificate
  5. # Configuration ---------------------------------------------------------------------

  6. :local TOKEN "__APITOKEN__"
  7. :local ZONEID "__ZONEIDENTIFIER__"
  8. :local RECORDID "__RECORDIDENTIFIER__"
  9. :local RECORDNAME "__DNSRECORD__"
  10. :local WANIF "__WANINTERFACE__"

  11. #------------------------------------------------------------------------------------

  12. :global IP4NEW
  13. :global IP4CUR

  14. :local url "https://api.cloudflare.com/client/v4/zones/$ZONEID/dns_records/$RECORDID/"

  15. :if ([/interface get $WANIF value-name=running]) do={
  16. # Get the current public IP
  17.     :local currentIP [/ip address get [/ip address find interface=$WANIF ] address];
  18.     :set IP4NEW [:pick $currentIP 0 [:find $currentIP "/"]];
  19. # Check if IP has changed
  20.     :if ($IP4NEW != $IP4CUR) do={
  21.         :log info "CF-DDNS: Public IP changed to $IP4NEW, updating"
  22.         :local cfapi [/tool fetch http-method=put mode=https url=$url check-certificate=no output=user as-value \
  23.             http-header-field="Authorization: Bearer $TOKEN,Content-Type: application/json" \
  24.             http-data="{"type":"A","name":"$RECORDNAME","content":"$IP4NEW","ttl":120,"proxied":false}"]
  25.         :set IP4CUR $IP4NEW
  26.         :log info "CF-DDNS: Host $RECORDNAME updated with IP $IP4CUR"
  27.     }  else={
  28.         :log info "CF-DDNS: Previous IP $IP4NEW not changed, quitting"
  29.     }
  30. } else={
  31.     :log info "CF-DDNS: $WANIF is not currently running, quitting"
  32. }
复制代码
这个脚本出自于 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 。


















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 2恩山币 +2 收起 理由
haohanyanhai + 1 感谢你的分享,无论怎样,你都是最无私的人.
linuxunion + 1 你好,久仰卧龙大名,在下凤雏!.

查看全部评分

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2024-2-18 22:47 | 显示全部楼层
本帖最后由 lonei 于 2024-7-20 21:30 编辑

是获取IP4的
在命令下
global cfg do={\
/tool fetch mode=https\
http-method=get\
url="https://api.cloudflare.com/client/v4/zones/$cfi/dns_records"\
http-header-field="content-type:application/json,X-Auth-Email:888888$cfe,X-Auth-Key:888888$cfk"\                  //把这些88888删掉,因图标关系
}

获取:local cfrecord "4fd812f2489dfa014f059ad16a******";\  第一个ID的值,

再运行这条赋值

$cfg cfi="08256e4405b9a3ea97b5ea9ed7******" cfe="lo***@***.com" cfk="25944b0216fbe28c80b900996******"

最后要Scrcip里面添加这些命令

:global cfupdate do={\
:local cfzoneid "08256e4405b9a3ea97b5ea9ed7******";\
:local cfrecord "4fd812f2489dfa014f059ad16a******";\
:local cfemail "lo******";\
:local cfapikey "25944b0216fbe28c80b900996******";\
:local cfdomain "163.com";\
:local currentIP [/ip address get [/ip address find interface=pppoe-out1 ] address];\                        //改你自己的拨号pppoe-out1
:local cfip [:pick $currentIP 0 [:find $currentIP "/"]];\

/tool fetch mode=https\
http-method=put\
url="https://api.cloudflare.com/client/v4/zones/$cfzoneid/dns_records/$cfrecord"\
http-header-field="content-type:application/json,X-Auth-Email:888888$cfemail,X-Auth-Key:888888$cfapikey"\          //把这些88888删掉,因图标关系
http-data="{"type":"A","name":"$cfdomain","content":"$cfip"}"\
output=none\
}
:delay 1
$cfupdate

点评

这段脚本是?接上面的吗?  详情 回复 发表于 2024-7-20 20:01
RouterOS版本 v6.49.13 运行不成功,不知道原因  详情 回复 发表于 2024-2-23 18:26
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-2-20 15:16 | 显示全部楼层
感谢分享干活!
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-2-23 18:26 | 显示全部楼层
本帖最后由 haohanyanhai 于 2024-2-23 18:30 编辑

RouterOS版本 v6.49.13
运行不成功,不知道原因
cfrecord  是不是Resource ID?

点评

1楼有说明,你看看  详情 回复 发表于 2024-2-23 23:13
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-2-23 23:13 | 显示全部楼层
haohanyanhai 发表于 2024-2-23 18:26
RouterOS版本 v6.49.13
运行不成功,不知道原因
cfrecord  是不是Resource ID?

1楼有说明,你看看
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-2-24 09:07 来自手机 | 显示全部楼层
我原来在namecheap,用脚本来做类似的事,然后后来也搬移到cf,也打算做类似的脚本。

不过,我看到,直接用cname,定义一条记录指向ros自带的云域名就可以解决问题,就没再用脚本了。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-2-24 11:06 | 显示全部楼层
RouterOS版本 v6.49.13运行不成功,不折腾了,换回cname 记录
利用Routeros的cloud 解决问题吧,不然太折腾了

点评

脚本权限给了吗,需要read,write,test,policy。另外这个脚本运行时会生成日志,可以到routeros日志里看看什么情况  详情 回复 发表于 2024-2-24 13:49
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2024-2-24 13:49 | 显示全部楼层
haohanyanhai 发表于 2024-2-24 11:06
RouterOS版本 v6.49.13运行不成功,不折腾了,换回cname 记录
利用Routeros的cloud 解决问题吧,不然太折腾 ...

脚本权限给了吗,需要read,write,test,policy。另外这个脚本运行时会生成日志,可以到routeros日志里看看什么情况

点评

开启了 read,write,test,policy这四项,查看日志 脚本无法运行,无奈又利用cloud换回了cname 记录  详情 回复 发表于 2024-2-24 21:38
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-2-24 14:56 | 显示全部楼层
收藏,说不定啥时候就用上了。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-2-24 21:38 | 显示全部楼层
白云朵朵 发表于 2024-2-24 13:49
脚本权限给了吗,需要read,write,test,policy。另外这个脚本运行时会生成日志,可以到routeros日志里 ...

开启了 read,write,test,policy这四项,查看日志 脚本无法运行,无奈又利用cloud换回了cname 记录
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-3-24 09:02 | 显示全部楼层
本帖最后由 ljj23h 于 2024-3-24 09:07 编辑

Download from api.cloudflare.com FAILED: Fetch failed with status 400
请问是CF那边服务改动了吗?我之前能用的以及这个脚本都是这个错误

已解决:用户令牌问题  谢谢
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-4-26 15:14 | 显示全部楼层
支持楼主了。~
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-7-20 20:01 | 显示全部楼层

这段脚本是?接上面的吗?

点评

刚好在线,改了,有图标问题,  详情 回复 发表于 2024-7-20 21:19
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-7-20 21:19 | 显示全部楼层
依风听雨 发表于 2024-7-20 20:01
这段脚本是?接上面的吗?

刚好在线,改了,有图标问题,

点评

一楼的脚本就是改好的是吗?问下7.X阿里或者DNSPOD更新V4 V6你这里有脚本吗?  详情 回复 发表于 2024-7-20 21:22
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-7-20 21:22 | 显示全部楼层
lonei 发表于 2024-7-20 21:19
刚好在线,改了,有图标问题,

一楼的脚本就是改好的是吗?问下7.X阿里或者DNSPOD更新V4 V6你这里有脚本吗?

点评

我没有,我是用cf的,不好意思哦,  详情 回复 发表于 2024-7-20 21:23
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 18:09

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表