DualWAN+PHP+DNSPOD实现域名自动解析

  • A+
所属分类:安全工具

DualWAN+PHP+DNSPOD实现域名自动解析

去年折腾的一个小玩意, 出发点是电脑上搭了一个php程序, 需要实现外网实时访问然后路由是用的dualwan, tomato的固件, 其实固件里已经内置了解析功能, 可以直接解析3322和花生壳, 
但是由于几个动态域名服务商都不太稳定的原因 (其实就是他妈闲的蛋疼瞎折腾), 所以就想用用dnspod来动态解析.
首先dnspod自己就提供了一套动态解析的服务端, (地址:https://support.dnspod.cn/Kb/showarticle/tsid/19)
但是由于是软件模式的, 你还得搞个开机启动, 还得装个服务才能用, 还是很不爽, 如果直接在路由上实现就不会有这些问题了.

好了不废话了, dnspod官方有提供域名解析相应的api (地址: https://www.dnspod.cn/docs/records.html#record-modify)

DualWAN+PHP+DNSPOD实现域名自动解析

DualWAN+PHP+DNSPOD实现域名自动解析

其实这里就已经很简单了, 一个curl就可以搞定, but蛋疼的是路由并没有预装这个curl类
也不想手动的去装他, 所以就另辟蹊径, curl不能用, 我用wget还不行嘛! 所以就有了后面结合php的想法

好了开始说正题吧, api有两个比较重要的参数需要获取, 那就是

DualWAN+PHP+DNSPOD实现域名自动解析
这两个参数值我发现dnspod官方并没有给出获取方法, google了一下发现可以用以下方法获取,
第一, 安装dnspod官方的动态解析软件 (https://www.dnspod.cn/client/DNSPodClientLite.zip), 登录你的帐号 如图

DualWAN+PHP+DNSPOD实现域名自动解析


DualWAN+PHP+DNSPOD实现域名自动解析


然后选择要解析的域名点击"动态解析", 之后选择对应的记录添加到启动动态解析:

DualWAN+PHP+DNSPOD实现域名自动解析


设置好以后再看软件目录下的config.xml文件就可以找到你域名的id(domain_id)和记录id(record_id):

DualWAN+PHP+DNSPOD实现域名自动解析



有了这些参数以后再用php来提交就可以了, 这里用了一个dnspod开发人员写的api类, 直接调用一下就可以了, 
index.php里修改一下对应的参数即可:

DualWAN+PHP+DNSPOD实现域名自动解析


classh.php(api提交类), index.php(功能) 两个文件代码文末会贴出
之后放到web目录下, 比如我本地访问地址为 http://127.0.0.1/DNSPOD/index.php
而我本机对应的内网ip为192.168.1.210

然后进入"tomato - 系统管理 - 定时任务", 开启一个脚本, 命令代码如下:

DualWAN+PHP+DNSPOD实现域名自动解析
这里记得写你的内网地址, 别写127.0.0.1, 如图:

设置完成后保存设置就大功告成了! 

最后说一下为什么我这里是提交的4个ip, 因为我是设置的4条多拨, 入过没有设置多拨就是单拨的黑客直接把wget地址修改成

DualWAN+PHP+DNSPOD实现域名自动解析
即可, 如果是两拨或者三拨设置相应的参数就行了, 以 |^ 为分隔符, 如下:

DualWAN+PHP+DNSPOD实现域名自动解析
这里不需要再设置当wan联机的脚本了, 反正这个任务也是每分钟就执行一次, 设置好以后等个一分钟可以去dnspod控制面板看ip是否已经更新成功
其实很简单, 这个问题也有很多人在各种地方问, 大部分人就卡在不能用curl那了, 各种不能安装, 其实有时候多转转脑子问题就解决了

最后贴代码 index.php:

DualWAN+PHP+DNSPOD实现域名自动解析

DualWAN+PHP+DNSPOD实现域名自动解析

class.php:

DualWAN+PHP+DNSPOD实现域名自动解析

DualWAN+PHP+DNSPOD实现域名自动解析

两个文件记住放同一目录下


DualWAN+PHP+DNSPOD实现域名自动解析

本文始发于微信公众号(T00ls):DualWAN+PHP+DNSPOD实现域名自动解析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: