关于OpenWrt里DDNS动态域名更新不好用的解决方法!

安装OpenWrt后有段时间了,发现DDNS更新不是太好用(我用的dyndns),表现为:

1.路由开机后DDNS有时没有更新,不稳定。

2.断线重新pppd拨号后,DDNS不会自动更新。



因为我手动运行下面的命令是可以更新DDNS的,这说明更新不稳定的原因可能是:

1.DDNS脚本的自动检测IP变更没起作用!

2.开机时还没拨号成功就运行了脚本,所以没更新成功,然后因为原因1就悲剧了!

  1. /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0 &

复制代码

我的解决方法如下:



方法一(不推荐):我先是在 /etc/rc.local 里加入下面的命令,使之延时延时更新,果然成功更新。(在动态域名里要设置IP地址来源为pppoe-wan)

  1. sleep 60 &&/bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0 &

复制代码

方法二(推荐):然而上面的方法只能保证开机更新,如果你不掉线那么这个方法就够用了,但一旦掉线上面的方法就不能自动更新!

我的解决办法是建立一个脚本放在/etc/ppp/ip-up.d/下面,因为OpenWrt会在拨号成功后自动运行/etc/ppp/ip-up.d/里的脚本。当然了,断线后的自动运行/etc/ppp/ip-down.d/下的脚本。



1.首先,要安装elinks浏览器(如果你的DDNS已经在路由的设置里找到,或你只需要更新一个DDNS可以不用安装)

opkg install elinks

2.vi /usr/bin/autoddns新建脚本,内容如下:

  1. #!/bin/sh
  2. #
  3. ## DDNS
  4. /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0 &
  5.  
  6. ## 3322.org(下面的可根据需要自行修改)
  7. USER1=用户名1
  8. PASSWD1=用户名1的密码
  9. DDNS1=xxx1.3322.org
  10. DDNS2=xxx3.3322.org
  11. DDNS3=xxx1.6600.org
  12. DDNS4=xxx2.6600.org
  13. DDNS5=xxx3.3322.org
  14.  
  15. elinks http://$USER1:$PASSWD1@www.3322.org/dyndns/update?hostname=$DDNS1  >> /dev/null 2>&1
  16. elinks http://$USER1:$PASSWD1@www.3322.org/dyndns/update?hostname=$DDNS2  >> /dev/null 2>&1
  17. elinks http://$USER1:$PASSWD1@www.3322.org/dyndns/update?hostname=$DDNS3  >> /dev/null 2>&1
  18. elinks http://$USER1:$PASSWD1@www.3322.org/dyndns/update?hostname=$DDNS4  >> /dev/null 2>&1
  19. elinks http://$USER1:$PASSWD1@www.3322.org/dyndns/update?hostname=$DDNS5  >> /dev/null 2>&1

复制代码

上面的脚本是更新OpenWrt里设置的DDNS,然后自动更新我的5个3322.org,如果你有更多帐号可以添加USER2,USER3等等



3.别忘了给脚本运行权限

  1. chmod 755 /usr/bin/autoddns

复制代码

4.创建脚本到/etc/ppp/ip-up.d/的链接。当然,你也可以去掉参数-s创建硬链接

  1. ln -s /usr/bin/autoddns /etc/ppp/ip-up.d/autoddns

复制代码

然后,重启ping试试,应该自动更新DDNS了,并且你也可以手动运行autoddns命令更新DDNS了。(注意有时ping后IP没更新是dns缓存的缘故,等下再ping试试)

您可能还喜欢...