RouteOS 利用DNSPOD的API接口实现DDNS解析
目 录
前言:
Token 的生成是完全独立于帐号密码的,即使 Token 丢失,黑客也不知道用户的帐号和密码,万一 Token 泄漏,用户只需要登录 DNSPod 后台,将有安全问题的 Token 删除即可,极大的提高了帐号安全性
DNSPOD的API申请地址:https://support.dnspod.cn/Kb/showarticle/tsid/227/
完整的请求地址为:https://www.dwhd.org/dnspod_v2.php?code=(API ID)&token=(API Token)&domain_id=(域名ID)&record_id=(解析ID)&sub_domain[域名解解析名]&record_type=[域名解析类型]&record_line=[域名解析线路]&value=[域名解析地址]
脚本说明:
1. 不存在的记录,不会自动添加,需要手动在DNSPOD添加记录,线路为默认,不支持单记录多线路解析。
2. 只支持IPv4,不支持IPv6
3. 脚本中需要自己修改的信息
pppoe,拨号连接的名称,如pppoe-out1
token,dnspod的token。id和token之间用半角逗号连接(英文状态下的逗号)
domain,域名
subdomain,主机记录
版本更新:
1.0 beta by 2019/11/13
1. 测试版本,有任何问题请留言。
2. 为什么不加自动了添加域名之类的,因为一次添加永久有效,所以脚本中不添加自动了。节省ROS性能
欢迎进群交流12337701
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #PPPoE :local pppoe "ADSL-PPPoE" #DNSPOD token :local token "xxxxx,xxxxxxxxxxxxxxxxxxx" #域名 :local domain "myxzy.com" #域名主机名 :local subdomain "www" #以下不是专业人士请不要修改 #domain :local dname ($subdomain.".".$domain) #获取pppoe拨号ip :local ipaddr [/ip address get [/ip address find interface=$pppoe] address] :set ipaddr [:pick $ipaddr 0 ([len $ipaddr] -3)] #获取域名列表 :local record [/tool fetch url="https://dnsapi.cn/Record.List" http-data="login_token=$token&format=json&domain=$domain&sub_domain=$subdomain&record_type=A" as-value output=user] #获取id和ip :set record ($record->"data") :set record [:pick $record [:find $record ""records":"] [:len $record]] :local recordid [:pick $record ([:find $record ""id":""]+6) [:find $record "","ttl"]] :local recordip [:pick $record ([:find $record ""value":""]+9) [:find $record "","en"]] #更新ip地址 :if ($recordip!=$ipaddr) do={ /tool fetch url="https://dnsapi.cn/Record.Ddns" http-data="login_token=$token&format=json&domain=$domain&sub_domain=$subdomain&record_id=$recordid&record_line_id=0&value=$ipaddr" :log info ("[".$dname."] ip update") } else={ :log info ("[".$dname."] ip not update") } |
RouteOS 6.x
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
请教一下,如果域名是 abc.def.com,那脚本是不是
:local domain “def.com”
:local subdomain “abc”