关于OpenWrt里DDNS动态域名更新不好用的解决方法!
安装OpenWrt后有段时间了,发现DDNS更新不是太好用(我用的dyndns),表现为:
- 路由开机后DDNS有时没有更新,不稳定。
- 断线重新pppd拨号后,DDNS不会自动更新。
因为我手动运行下面的命令是可以更新DDNS的,这说明更新不稳定的原因可能是:
- DDNS脚本的自动检测IP变更没起作用!
- 开机时还没拨号成功就运行了脚本,所以没更新成功,然后因为原因1就悲剧了!
/bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0 &
我的解决方法如下:
方法一(不推荐) :
- 我先是在 /etc/rc.local 里加入下面的命令,使之延时延时更新,果然成功更新。(在动态域名里要设置IP地址来源为pppoe-wan)
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/下的脚本。
- 首先,要安装elinks浏览器(如果你的DDNS已经在路由的设置里找到,或你只需要更新一个DDNS可以不用安装)
opkg install elinks
- vi /usr/bin/autoddns新建脚本,内容如下:
#!/bin/sh
#
## DDNS
/bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0 &
## 3322.org(下面的可根据需要自行修改)
USER1=用户名1
PASSWD1=用户名1的密码
DDNS1=xxx1.3322.org
DDNS2=xxx3.3322.org
DDNS3=xxx1.6600.org
DDNS4=xxx2.6600.org
DDNS5=xxx3.3322.org
elinks http://$USER1:$PASSWD1@www.3322.org/dyndns/update?hostname=$DDNS1 >> /dev/null 2>&1
elinks http://$USER1:$PASSWD1@www.3322.org/dyndns/update?hostname=$DDNS2 >> /dev/null 2>&1
elinks http://$USER1:$PASSWD1@www.3322.org/dyndns/update?hostname=$DDNS3 >> /dev/null 2>&1
elinks http://$USER1:$PASSWD1@www.3322.org/dyndns/update?hostname=$DDNS4 >> /dev/null 2>&1
elinks http://$USER1:$PASSWD1@www.3322.org/dyndns/update?hostname=$DDNS5 >> /dev/null 2>&1
上面的脚本是更新OpenWrt里设置的DDNS,然后自动更新我的5个3322.org,如果你有更多帐号可以添加USER2,USER3等等
3.别忘了给脚本运行权限
chmod 755 /usr/bin/autoddns
4.创建脚本到/etc/ppp/ip-up.d/的链接。当然,你也可以去掉参数-s创建硬链接
ln -s /usr/bin/autoddns /etc/ppp/ip-up.d/autoddns
然后,重启ping试试,应该自动更新DDNS了,并且你也可以手动运行autoddns命令更新DDNS了。(注意有时ping后IP没更新是dns缓存的缘故,等下再ping试试)
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
i·Space !
喜欢就支持一下吧
打赏
微信
支付宝