RouterOS(以下简称ROS)的原生脚本来实现域名的动态解析。
版本说明
1、该脚本只在RouterOS v7.x测试通过,其他版本Ros请自行测试。
2、不存在的记录,不会自动添加,需要手动在cloudflare添加记录,默认了解析A记录,TTL=60秒,不开启代理模式。为什么不加自动了添加域名之类的,因为一次添加永久有效,所以脚本中不添加自动了。节省ROS性能(我懒)
3、只支持IPv4,不支持IPv6
RouterOS(以下简称ROS)的原生脚本来实现域名的动态解析。
版本说明
1、该脚本只在RouterOS v7.x测试通过,其他版本Ros请自行测试。
2、不存在的记录,不会自动添加,需要手动在cloudflare添加记录,默认了解析A记录,TTL=60秒,不开启代理模式。为什么不加自动了添加域名之类的,因为一次添加永久有效,所以脚本中不添加自动了。节省ROS性能(我懒)
3、只支持IPv4,不支持IPv6
本文主要讲解如何借助cloudflare的API接口来实现RouterOS(以下简称ROS)的DDNS动态解析。
1、创建API密钥 Global API Key
访问cloudflare后台,API令牌管理:https://dash.cloudflare.com/profile/api-tokens
1.1 token模式,用户API令牌,点击创建令牌,选择编辑区域DNS,再选择域名,生成API token令牌
1.2 API Email + API Key,使用cloudflare用户邮箱和Global API key
2、PHP脚本
接口地址
http(s)://api.77bx.com/cfdns/本文主要讲解如何借助DNSPOD的新版API接口来实现RouterOS的DDNS动态解析。
看到DNSPOD官网有即将下架老版本API的提示,所以使用新版本的API来写了一个更新接口。
一、创建Token添加域名
首先域名要在DNSPOD解析,然后在腾讯云后台开启的API Token。
详细开通API Token教程:https://console.cloud.tencent.com/cam/capi
二、PHP制作DNSPOD API动态解析接口
以下是我制作好的php解析接口,支持SSL
解析接口
http://api.77bx.com/dnspod/dnspod.php https://api.77bx.com/dnspod/dnspod.php
HTTP请求方式
POST/GET
请求参数
参数名称 必选 类型 描述 id 是 String 腾讯云API密钥SecretId key 是 String 腾讯云API密钥SecretKey domain 是 String 域名。如77bx.com record 否 String 主机记录。如不传默认为@ type 否 String 记录类型。如不传默认为A记录 ip 否 String IP地址。如不传默认为来源IPv4地址
请求事例
curl -X POST http://api.77bx.com/dnspod/dnspod.php -d "id=SecretId&key=SecretKey&domain=77bx.com&record=op&ip=1.1.1.1&type=A"
请求输出
返回提示 描述 0 表示更新成功(当前IP地址和域名IP地址相同也返回0) 1 参数错误 2 域名或API密钥错误 3 更新或API密钥错误
安全说明
1、本接口未记录所有的解析token和解析记录,但是服务器的访问日志会有链接记录(按照政策要求需保存6个月的日志)。虽然有日志但是本接口不提供任何查询。
2、建议使用独立的DNSPOD账号来使用本接口,重要的域名请自建PHP服务器用来解析。由于使用本接口出现的任何安全问题,本人概不负责。这边只能保证本人不会去做任何后门行为。这边建议如果使用了本接口请勤换token(token可以管理账号下的所有域名)。
源代码
暂时不提供
RouterOS脚本
#PPPoE :local pppoe "pppoe-out1" #DNSPOD Token :local secretid "secretid" :local secretkey "secretkey" #DNSPOD域名 :local record "op1" :local domain "77bx.com" #以下非专业人士请勿修改 :global ipold :local ipnew [/ip address get [/ip address find interface=$pppoe] address] :set ipnew [:pick $ipnew 0 ([len $ipnew] -3)] :if ($ipnew != $ipold ) do={ :local postdata "id=$secretid&key=$secretkey&domain=$domain&record=$record&ip=$ipnew" :local response [/tool fetch http-method="post" url=http://api.77bx.com/dnspod/dnspod.php http-data=$postdata as-value output=user] :if ($response->"data" = "0") do={ :log info "DDNS: changed $ipold to $ipnew" :set ipold $ipnew } }
以上脚本需要修改pppoe(宽带拨号的名称),secretid,secretkey,record和domain
注意:ROS可以设置定时1分钟执行一次脚本,脚本中带有ip是否相同判断,相同就不执行;然后是我做的API接口后台中也有ip是否相同的判断,一般不会引起DNSPOD锁域名的情况。
ChangeIP是一个提供免费二级域名和免费DNS域名解析服务的网站,跟花生壳之类的DDNS动态域名解析服务很像,但是ChangeP的限制少,更新快,域名后缀多。
下面主要讲讲RouterOS使用ChangeIP DDNS动态解析的方法
1、ChangeIP账号
注册并配置好二级域名。(这边不详细说明了,如果不明白的可以评论咨询)
ChangIP官网地址:https://www.changeip.com/accounts/cart.php?a=confproduct&i=0
no-ip是一个提供免费二级域名和免费DNS域名解析服务的网站。
下面主要讲讲RouterOS使用no-ip DDNS动态解析的方法
1、no-ip账号
注册并配置好二级域名。(这边不详细说明了,如果不明白的可以评论咨询)
no-ip官网地址:https://www.noip.com
FreeDNS提供最多5个子域的免费DNS托管。 您可以设置一个域名,例如staryu.mooo.com,并将其指向您想要的任何IP。
下面主要讲讲RouterOS使用FreeDNS DDNS动态解析的方法
1、FreeDNS账号
注册并配置好二级域名。(这边不详细说明了,如果不明白的可以评论咨询)
FreeDNS官网地址:https://freedns.afraid.org
花生壳是国内一个提供免费二级域名和免费DNS域名解析服务的网站。
下面主要讲讲RouterOS使用花生壳DDNS动态解析的方法
1、花生壳账号
注册并配置好二级域名,并进行实名认证。(这边不详细说明了,如果不明白的可以评论咨询)
官网地址:https://www.oray.com/
公云PubYun是国内一个提供免费二级域名和免费DNS域名解析服务的网站。
下面主要讲讲RouterOS使用公云PubYun DDNS动态解析的方法
1、公云PubYun账号
注册并配置好二级域名,并进行实名认证。(这边不详细说明了,如果不明白的可以评论咨询)
官网地址:https://www.pubyun.com/
2、RouterOS脚本
Winbox中,System -> Scheduler,新建计划任务,Interval设置为00:02:00(表示120秒运行次)。
/tool fetch url="http://用户名:密码@http://members.3322.net/dyndns/update?hostname=二级域名"注意:
(1)用户名与密码之间使用半角的冒号:分隔(用户名和密码中不能含有@、: 、/、?、&、=、. 等符号)
(2)二级域名为公云PubYun注册的二级域名
3、RouterOS脚本2
local user "用户名" local pass "密码" local domain "二级域名" local ddnsurl "http://http://members.3322.net/dyndns/update?hostname=$domain" /tool fetch url=$ddnsurl mode=http user=$user password=$pass我前面有文章《RouterOS利用DNSPOD的API接口实现DDNS动态解析》写过通过PHP服务器更新DNSPOD解析的域名IP,但是更多的是带来安全问题,所有这次写了一个RouterOS(以下简称ROS)的原生脚本来实现域名的动态解析。
版本说明
1、最低版本支持RouterOS v6.43,低于这个版本的要么升级,要么还是使用第三方服务器来动态解析。
2、不存在的记录,不会自动添加,需要手动在DNSPOD添加记录,线路为默认,不支持单记录多线路解析。为什么不加自动了添加域名之类的,因为一次添加永久有效,所以脚本中不添加自动了。节省ROS性能(我懒)
3、只支持IPv4,不支持IPv6
本文主要讲解如何借助DNSPOD的API接口来实现RouterOS的DDNS动态解析。
一、创建Token添加域名
首先域名要在DNSPOD解析,然后在DNSPOD后台开启的API Token。
详细开通API Token教程:https://support.dnspod.cn/Kb/showarticle/tsid/227/