本篇主要讲解在路由器上面的操作,如何申请 no-ip 的域名之类的问题本篇并不涉及。

  首先说一下原理,明白了原理就可以举一反三了。openwrt 类的路由器系统在拨号之后会自动执行一些脚本。那么思路就很清晰了,路由器重新拨号之后公网 IP 会发生改变,重新拨号之后就执行脚本更新域名背后的 IP 就行了。

  以我在使用的潘多拉固件为例,我添加了 /etc/hotplug.d/iface/85-ddns

#!/bin/sh
if [ "$ACTION" = ifup ];then
    sleep 60
    /root/no-ip.ddns.sh
fi

,目的是在拨号 60 秒之后执行 /root/no-ip.ddns.sh 这个文件。再来看看 /root/no-ip.ddns.sh,

#!/bin/sh
export PATH="/opt/usr/sbin:/opt/usr/bin:/opt/sbin:/opt/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin"

if ! ifconfig pppoe-wan | grep -qE ':10\.|:172\.'; then
  wget -qO- --header "Authorization: Basic YWJjOjEyMw==" "http://dynupdate.no-ip.com/nic/update?hostname=example.com"
fi

其中,YWJjOjEyMw== 是 abc:123 的 base64,也就是账号密码,后面的 example.com 需要改成你自己的域名

img