首页 > 网络技术

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

发布时间:2018-02-25 12:04:46 来源:星知苑 作者:星之宇

本文主要讲解如何借助DNSPOD的API接口来实现RouterOS的DDNS动态解析。

 

一、创建Token添加域名

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

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

 

二、PHP制作DNSPOD API动态解析接口

以下是我制作好的php解析接口[break]

接口地址:

 

查询接口

 

链接自动生成接口

 

HTTP请求方式:

  • POST/GET

 

请求参数:

  • token    (必选)  DNSPod Token,格式 "ID,Token",如“12345,3a13a4331549*******127c185368303”
  • domain (必选)  域名(如:myxzy.com)
  • record  (必选)  记录名(如:www)
  • record_id  (必选)  记录名id, 和record二选一
  • ip         (可选,默认值为请求来源IPv4)  DDNS的IP地址(或者CNAME、MX记录值)
  • line      (可选,默认值为默认)  线路设置,详细参数请看注1
  • type     (可选,默认值为A记录  支持AAAA、CNAME、MX记录
  • format    (可选,默认值为xml  xml和json,返回的数据格式

 

注意:

2019-9-16

已更换服务器,没有解析次数限制,希望这次不会经常把服务器玩挂。

2019-8-5

现在一天的解析量很大,一天解析次数已经超过100万了,1次解析2~3次curl,而curl又很占资源,为了其他资源正常,我设置了监控脚本,所以会导致该解析动不动就关站。为了保证大家的正常使用,所以我这边对解析接口1加了限制,限制为1分钟内最多5次,超过了就禁用60分钟,第6次解析不生效。如果需要高解析量的,那么请使用解析接口2,其实本人还是希望有这种高解析量的自建php服务器。

 

注1:

line参数说明:如&line=cmcc,那么线路就是移动线路,请按照下面的对照表来。

default  =>  默认
ctc  =>  电信
cucc  =>  联通
cernet  =>  教育网
cmcc  =>  移动
ctt  =>  铁通
home  =>  国内
abord  =>  国外
search  =>  搜索引擎
baidu  =>  百度
google  =>  谷歌
youdao  =>  有道
bing  =>  必应
soso  =>  搜搜
sogou  =>  搜狗
qihu  =>  奇虎

 

示例:

curl -X POST http://u.myxzy.com/dnspod -d 'token=id,token&domain=myxzy.com&record=www&ip=1.1.1.1&line=ctc&record_type=A&format=json'
返回参考:
{
    "code": "1",
    "message": "Record created success, ip updated",
    "time": "2019-03-08 09:28:34",
    "info": "dnspod-api-php V1.4 By Star.Yu"
}
字段说明:

code:状态id编号,1是成功,0是失败,其他的数字请参考DNSPOD的API ID对应的报错

message:本php接口输出的信息

time:访问时间

info:本php接口的版本信息等

 

安全说明:

1、本接口未记录所有的解析token和解析记录,但是服务器的访问日志会有链接记录(按照政策要求需保存6个月的日志虽然有日志但是本接口不提供任何查询。

2、建议使用独立的DNSPOD账号来使用本接口,重要的域名请自建PHP服务器用来解析。由于使用本接口出现的任何安全问题,本人概不负责。这边只能保证本人不会去做任何后门行为。这边建议如果使用了本接口请勤换token

PS:因为有了token可以管理账号下的所有域名。

 

dnspod-api-php Github地址:https://github.com/myxzy/dnspod-api-php/

 

ROS脚本:

 

#PPPoE
:local pppoe "pppoe-out1"

#DDNS Token
:local token "id,token"

#DDNS域名
:local record "www"
:local domain "myxzy.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 url "http://u.myxzy.com/dnspod/?token=$token&ip=$ipnew&domain=$domain&record=$record"
/tool fetch url=$url mode=http keep-result=no
:set ipold $ipnew
log info "DDNS: Sending UPDATE!"
}

以上脚本需要修改pppoe(宽带拨号的名称),token,record和domain

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

 

更新说明:

by 2019-9-25

1.8服务器版本

1、为了降低负载使用memcached进行缓存降低压力而开发的(不适合个人使用,所以不更新到github)

2、增加list.php页面用于token查询A和AAAA记录

3、测试功能加入record_id支持,使用list.php查询。

 

by 2019-6-16

bug修复:

1、修复脚本不更新ip的问题

 

by 2019-4-7

1.7版本

1、支持cname和mx记录添加和修改

2、A和AAAA记录会判断IP值是否正确

 

 

 

by 2019-4-3

1.6版本

1、优化部分Bug

2、不添加参数自动跳转到demo页面

 

by 2019-3-18

1.5版本

1、支持POST和GET提交

 

 

by 2019-3-8

1.4版本

1、重写返回数据格式,因为我要对接项目,所以返回格式可以是xml或json

2、重写更新ipv4和修改ipv6

3、ip地址可以根据来源自动更新。

4、自动添加解析记录,不存在就自动添加解析记录

 

by 2018-12-19

1.3版本

1、去除服务器获取域名DNS解析地址去判断是否相同(不影响和DNSPOD后台记录是否相同的判断)

2、因为突然发现可以通过访问日志查看解析的API ID和Token,有不安全的可能的,所以提供代码,建议自建PHP服务器保证域名解析安全

3、如果不怕安全问题,这边还会继续提供解析服务,不过会修改本API的服务器地址,老版本接口保证持续1个月

 

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小时

相关合集

  • 最好玩的魔幻手游推荐
最好玩的魔幻手游推荐

简介:游戏画面不管是声效还是效果上都是有着非常精良的制作,还有插入了各种CG动画,这样的大型的魔幻史诗级手游也是超多的玩家喜欢,就是需要手机有着超高的配置才可以享受到那种画质效果,这里也是整理了在近年来最火爆的最棒的手游,让玩家可以随时进入到各种魔幻大陆中尽情的冒险升级打怪。