RouterOS利用DNSPOD的API接口实现DDNS动态解析

首先域名要在DNSPOD解析,然后在DNSPOD后台开启的API Token。

详细开通API Token教程:https://support.dnspod.cn/Kb/showarticle/tsid/227/

以下是我通过DNSPOD官方API开发的更新域名请求地址:http://www.myxzy.com/dnspod.php?id=(API ID)&token=(API Token)&ip=(域名解析IP地址)&domain=(域名)&sub_domain=(域名解析名)&line=cmcc&chk=1&type=AAAA

参数说明(以下参数为必填参数):

1、(API ID):API Token ID,一般都是5位数字。

2、(API Token):API Token,一大串字符串,只有申请的第一次才会显示。

3、(域名解析IP地址):IP地址,ROS中由PPPoE获取到的地址

4、(域名):域名地址,如myxzy.com

5、(域名解析名):解析名,如www

以下是选用参数,不带这些参数为默认设置:

6、line默认设置为默认,如&line=cmcc,那么线路就是移动线路,请按照下面的对照表来。

default  =>  默认
ctc  =>  电信
cucc  =>  联通
cernet  =>  教育网
cmcc  =>  移动
ctt  =>  铁通
home  =>  国内
abord  =>  国外
search  =>  搜索引擎
baidu  =>  百度
google  =>  谷歌
youdao  =>  有道
bing  =>  必应
soso  =>  搜搜
sogou  =>  搜狗
qihu  =>  奇虎
7、&chk=1 该参数是防止服务器从DNS获取域名的解析IP地址来判断是否IP相同,默认是开启的

8、&type=AAAA 该参数为IPv6参数,默认是A记录

注:本接口未记录所有解析的token和解析记录,所以所有由本接口更改的DNS记录是不可查询的,请一段时间更换次API token,以及需要动态解析的域名为不重要域名,DNSPOD账号如果可以分开,请单独使用账号,因为token带入链接中去了,获取还是很简单的。有了token可以管理账号下的所有域名。本接口的源代码暂时不发布,如果需要请单独联系我(源代码不提供之后的任何技术支持)。

更新说明:


by 2018-10-18

1.1版本

1、增加ipv6支持,在连接后面加上&type=AAAA为IPv6(不加默认是A解析)

2、把更新DNS记录接口修改为修改DNS接口(更新DNS接口不支持IPv6)

3、IPv6不增加从服务器获取IPv6进行判断


1.0版本

1、增加按照线路更新ip地址

2、对服务器获取域名IP判断DNS记录添加开关 &chk=1

3、优化本接口报错信息提示


0.1beta版本

1、基本实现DNS域名动态解析

2、可以判断IP是否相同,防止DNSPOD相同修改记录超过5次被锁域名1小时


DNSPOD后台:

添加一条A记录,不然API接口会报错的


以下是ROS的脚本:

:global ipnew [/ip address get [/ip address find interface=ADSL-PPPoE] address]
:set ipnew [:pick $ipnew 0 ([len $ipnew] -3)]
:global ipold
:if (($ipnew != "") && ($ipnew != $ipold)) do={
/tool fetch url=("http://www.myxzy.com/dnspod.php\?id=token id&token=api token&ip=$ipnew&domain=myxzy.com&sub_domain=ros") mode=http keep-result=no
:set ipold $ipnew
log info "DDNS: Sending UPDATE!"
}

以上脚本需要修改ADSL-PPPoE(宽带拨号的名称),token id,API token,域名和域名解析名

注:ROS可以设置定时1分钟执行一次脚本,脚本中带有ip是否相同判断,相同就不执行;然后是我做的API接口后台中也有ip是否相同的判断,所以不会引起DNSPOD锁域名的情况。

目前有 27 条评论

avatar

游客2099790817  2018-12-07 17:27 10楼

谢谢楼主分享  能否分享下您的源码呢   我想用易语言写个  但是不会用易语言代替curl  谢谢老师 回复
avatar

星之宇  2018-12-07 18:50

@游客2099790817:发你邮箱 回复
avatar

游客2099790817  2018-12-07 18:51

@星之宇:谢谢老师  已经收到 回复
avatar

游客2099790817  2018-12-07 22:01

@游客2099790817:老师  如果解析名称为空 也就是比如@abc.com  那么这里的@怎么填写呢   &sub_domain=(域名解析名)  如果域名解析名写@   提示失败 回复
avatar

星之宇  2018-12-08 05:09

@游客2099790817:@.abc.com就可以了 回复
avatar

游客2100221755  2018-12-08 10:13

@星之宇:老师是这样的比如解析abc.com(非www.abc.com)到A记录1.1.1.1.1  按照您的格式写
&domain=abc.com&sub_domain=&line=default&chk=1&type=A的话  那么  &sub_domain=后面应该写什么  如果留空  则提示失败 解析名不能为空  应该如何写呢   谢谢老师 回复
avatar

星之宇  2018-12-08 11:12

@游客2100221755:&sub_domain=@这么写 回复
avatar

游客2100221755  2018-12-08 11:23

@星之宇:老师如果写@  则如下提示
Error 未知,id::DNS记录更新失败 回复
avatar

星之宇  2018-12-08 11:35

@游客2100221755:我已经测试是可以的,查看dnspod后台有没有添加这个解析。 回复
avatar

游客1960160246  2018-12-05 12:28 9楼

正好在测试,一直不成功,可否分享下源码?非常感谢!! 回复
avatar

星之宇  2018-12-06 11:58

@游客1960160246:已发邮箱 回复
avatar

游客1960160246  2018-12-06 15:23

@星之宇:已收到,谢谢!! 回复
avatar

游客1960160246  2018-12-05 12:12 8楼

可否分享一下源码?正需要,太及时了,非常谢谢!谢谢 回复
avatar

游客828151719  2018-12-02 20:32 7楼

我想自己也部署一个,求分享源码,感谢。 回复 回复
avatar

星之宇  2018-12-02 20:46

@游客828151719:已发你邮箱。 回复
avatar

游客1019090878  2018-11-28 08:40 6楼

我想自己也部署一个,求分享源码,感谢 回复
avatar

星之宇  2018-11-28 08:42

@游客1019090878:已发邮箱 回复
avatar

游客3730754938  2018-11-27 15:16 5楼

我想自己也部署一个,求分享源码,感谢。 回复
avatar

星之宇  2018-11-27 15:34

@游客3730754938:已发你邮箱 回复
avatar

游客1927091787  2018-11-16 21:47 4楼

想自己内网部署份,求分享源码,感谢。 回复
avatar

星之宇  2018-11-17 06:32

@游客1927091787:已发你邮箱 回复
avatar

游客3733053474  2018-11-15 14:09 3楼

非常感谢楼主的分享,因单位内所有的域名都使用的是dnspod,在网上查了好多文章都不行,谢谢了!方便提供一下源代码吗?十分感谢! 回复
avatar

星之宇  2018-11-15 14:23

@游客3733053474:已发你邮箱。 回复
avatar

游客829508880  2018-10-27 22:08 2楼

谢谢您的分享,请问有没有阿里云DDNS的动态解析方案?阿里云DDNS动态解析脚本嘛? 回复
avatar

星之宇  2018-10-27 22:09

@游客829508880:没有。我的域名都是dnspod解析的。 回复
avatar

游客1786349960  2018-10-24 11:48 1楼

谢谢楼主分享,请问是否可以分享一下php版本的ddns服务器源码?我需要做个动态解析,公网ip地址cmd不好获取,想做个默认ip就是当前公网ip的接口来实现,谢谢~ 回复
avatar

星之宇  2018-10-24 12:02

@游客1786349960:你邮箱有问题,发给你退信。 回复
昵称
邮箱
主页
提交
订阅