在 OpenWrt 上使用 3322.org 的动态域名

由于 IP 资源紧张,国内大部分的家庭用户,无论是使用 ADSL 的,还是使用光纤接入的,大部分都是动态 IP。有的时候为了管理家里的网络,或者传输一些数据就需要知道家里 IP 的变化。大部分情况下,大家都是使用花生壳等类似服务商提供的服务。但是这些大多需要安装客户端软件,而且大多对 Linux 类的系统支持不是很完善。而因为需要远程唤醒主机,就要求,动态 DNS 必须由路由器完成,用客户端的方式就显得不大现实。

之前用过 3322.org 提供的服务,有一个好处,就是可以直接通过 HTTP GET 方式来更新 IP:

1
wget -q -O- 'http://username:[email protected]/dyndns/update?system=dyndns&hostname=domainname.3322.org'

其中:

  • username: 你在 3322 注册的用户名
  • password: 你在 3322 的密码
  • domainname.3322.org: 你在 3322 申请的动态域名

这三项需要对应的替换成你自己的设置。

为了能自动更新 IP 变化,我们还需要设置一个 crontab 来定期执行。在这之前,我们先编写一个脚本以方便调用。SSH 到 OpenWrt 服务器,在默认的 /root 路径下生成 ddns.sh 文件:

1
2
#!/bin/sh
wget -q -O- 'http://username:[email protected]/dyndns/update?system=dyndns&hostname=domainname.3322.org'

给脚本增加可执行属性:

1
chmod +x ddns.sh

使用 crontab -e 修改计划任务,并增加如下内容:

1
*/5 * * * * /root/ddns.sh

这样的话,每隔 5 分钟,系统就会检查一次 IP,如果觉得太频繁,可以改成 10 分钟或 15 分钟等。