一个 DNSPod DDNS 比较完善的脚本方案

首先吐槽下这个论坛发帖怎么总处于审核状态?是因为内容里有链接吗?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
该脚本方案以前已经在OPENWRT上长时间稳定运行。现稍加改动移植到UBNT路由器上,测试通过
该脚本原作者参考 … 作者的网站就不贴了 自行谷歌百度搜索:“linuxFreeBSD下的dnspod动态域名客户端” 就能找到原作者的博客

其实该脚本方案通用LINUX/BSD等系统,特点是先取得本地PPPOE的IP写入本地CACHE,在使用TOKEN去更新DNSPOD上的域名IP前会先比对本地,如果不同才去修改,从而避免短时间内多次修改DNSPOD会被禁止访问的问题。

脚本附件包含三个文件
sddns.cache ===>本地cache文件,记录目前路由器外网IP
sddns.conf ===> 配置文件
sddns ====> 可执行脚本

使用方法:
将三个文件放到路由器 /config/scripts/dnspod-ddns 目录下,并给sddns脚本可执行权 chmod 775 /config/scripts/dnspod-ddns/sddns

(注意:其实DNSPOD官方有客户端方便查询domain id和record id 下载地址 自行谷歌百度关键词 DNSPOD客户端

修改sddns.cache 为适合自己域名的参数
domain_id=3730377 //这个用上面的DNSPOD客户端获得,或可参看论坛里的 一个帖
// [EdgeRouter - 企业级路由器高级配置] EdgeRouter结合DNSpod配置动态DNS访问案例
sd1=myrouter //自己的子域名是什么就写什么
record_id1=251945437 //这个用上面的DNSPOD客户端获得
cur_ip=123.123.123.123 //可先随便写一个IP地址

修改sddns.conf 为适合自己域名的参数
token=‘13615,859eeb0e1aeffc6e0737f1192588757a42b9340d457770c2bf8de404262a82’
// 可参考[EdgeRouter - 企业级路由器高级配置] EdgeRouter结合DNSpod配置动态DNS访问案例(论坛帖)
main_domain=‘abc.com’ //你的域名
sub_domain=‘myrouter’ //你的子域名称
#port=eth0.2
port=pppoe0 //你的WAN口是用那个端口的IP , 通常都是pppoe0吧,如果是多WAN口,可以自定义指定你需要的
#wanip=‘c.lexun.com/ip’ //另一种方法获得WAN口IP,就是路由器去访问这个网址 ,不过一般不用该方法,所以屏蔽
refresh=1 // 启用先比对本地,如果不同才去DNSPOD服务器更新
#addon_opt=’–cacert /config/scripts/dnspod-ddns/cert.crt’ //这个没什么作用了,屏蔽掉了,参看原作者网站说明
runtime_file=’/config/scripts/dnspod-ddns/sddns.cache’ //定义cache文件路径
224726ojgejezjvj68ggon.png

注意一下sddns脚本里的配置文件路径
15行
-f “$HOME/.sddns.conf” ] && config_file="$HOME/.sddns.conf" || config_file="/config/scripts/dnspod-ddns/sddns.conf" //如果你放脚本的位置不是/config/scripts/dnspod-ddns,需要改一下自己的

注意32行 cur_wanip=/sbin/ifconfig $port | sed -n '/inet addr:/s/.*inet addr:\([0-9.]\+\).*/\1/p'
因为脚本调用ifconfig来确定PPPOE0的IP ,所以请确保你的路由器已经安装了该命令,还有CURL也已经安装。不过EDGEOS好像默认都是安装的
注意ifconfig 使用绝对路径(如果不写全路径,放到路由计划里该脚本竟然执行有问题,先前直接在SHELL下执行一直没有问题,且在OPENWRT里也没有问题,这个问题搞了好长时间才弄明白 。所以这里还是写全了路径 ,估计是UBNT EdgeOS 的环境变量的问题???? )

以上完成后,执行下 看返回结果是否有错误

225132taopk0s1jx270nqs.jpg

如果没有就可以加入路由器的计划任务里了。每30分钟运行一次
configure
set system task-scheduler task DNSPod-DDNS executable path “/config/scripts/dnspod-ddns/sddns”
set system task-scheduler task DNSPod-DDNS interval 30m
commit
save

最后在/config/scripts/post-config.d 里做个软连接指向sddns脚本,保证在路由器重启时候自动运行一下,去获取新IP地址。

ln -s /config/scripts/dnspod-ddns/sddns /config/scripts/post-config.d/sddns
当然 在 /etc/ppp/ip-up.d 里做个软链接指向脚本 就更好了,目的是保证 如果掉线网络重新连接 IP变动时候 会执行下sddns。这个没具体详细测试
道理是这样的。
sddns.rar (2.04 KB)

2赞

果然是因为有链接,这回终于发出来了

这个脚本太棒了,解决了我双wan口做ddns解析的问题

mark下 :lol:lol

真心感谢大神,一次通过

感谢分享,顺利解析。:lol

改权命令是chmod
@bluehj

谢谢:)谢谢:)谢谢谢谢:):)谢谢:)

不错。 一次通过

找到了。谢谢

解决了。根据dnspod解析规则,没有子域名的话,上述操作中相应的myrouter应该换成@

感谢分享,完美运行

用了两年了 一直很稳定的脚本。

mark下 :slight_smile:

mark下 :slight_smile:

想请问一下,您 是怎么解决多wan口端口转发的问题呢?目前端口转发那里,仅能指定一路wan。

root@ubnt:~# /config/scripts/dnspod-ddns/sddns
ERROR: Please check “/config/scripts/dnspod-ddns/sddns.conf”, “port” is invalid .
root@ubnt:~#
卡在这里了

多谢大神!!一直在找这个方案!