利用 HUAWEI EC2108V3 实现 FreeDNS 动态域名解析

首先要说说,FreeDNS 真心是非常强大非常好的免费 DDNS 服务提供商,完全免费就不说了, 支持一级域名(也就是你自己花钱注册的域名),还支持 URL 转跳,这个懂的同学不用多说,也就是说,利用 FreeDNS,你完全可以在家里用你的家庭宽带搭建自己的网站服务器,因为 FreeDNS 会为你实现动态 IP 地址和 URL 转跳绕过电信 80 端口限制,不过,在这篇教程里,我们不会提到 freedns.afraid.org 网站上的设置,我们只涉及机顶盒部分的设置。

那么,我们就来说说为什么要用一个机顶盒来干这事儿,大家都知道,一般的路由都带有一些 DDNS 功能,但大多都是什么花生壳啊、3322哪些,要么是收费,要么只能使用二级域名,弄出来总是不成气候,而且国内所有的域名服务商都不会提供 URL 转跳功能(具体原因自己 Google),所以,路由器自带的 DDNS 是用不了啦,那么就只能通过电脑来实现了,可是要在家里24小时开着一台电脑只为这个动态域名的话,是不是有点太奢侈了(因为我把 Web 服务器托管了,家里需要动态域名是用来远程开启和关闭我家里的电脑和访问我的 NAS),那么,机顶盒这时候就显得尤其有用了,首先因为他功耗小,没有风扇很安静,第二,它也是适合长期开机,不关机的(坦白说,我就是个从来不关机顶盒的人,当然有些强迫症是要关机顶盒的,我就不说了)。

那么,我们就来说说到底怎么干吧。
首先,EC2108V3 拥有一颗 Hi3716M 芯片,运行着一个 ARM 嵌入式 Linux 系统,这就为实现动态域名解析服务奠定了基础,那么,我们只需要知道步骤就可以了。

第一步:连接上你的机顶盒

有些版本的机顶盒,可以直接用 Telnet 连接,可是我这个不行,我这个是电信最新版的,Telnet 已经被屏蔽了,所以需要用华为 STB 工具先打开机顶盒的 Telnet 端口。(当然也可以用 TTL,不过这个第一有些复杂,第二需要拆开机壳,会失去质保)
1、首先确保你的电脑和机顶盒处于同一个局域网,然后下载华为 STB 工具:点此下载
2、解压后打开工具,输入机顶盒 IP 地址(在机顶盒设置页面里可以看到),输入用户名 huawei,密码 28780808,点确定,进入机顶盒设置。
3、在 STB 工具上切换到第二项机顶盒设置标签卡,在设置里找到 Telnet,然后选择启用,保存退出。
4、在你的电脑上打开命令行,输入:telnet (这里填你的机顶盒 IP),如果没有问题,你的终端窗口会让你输入用户名密码,根据提示输入用户名 huawei,密码 28780808,点击回车后就登录了你的机顶盒界面了。

第二步:使用机顶盒运行脚本实现 DDNS
FreeDNS 动态域名解析的服务端有非常非常多的程序,我们这里用一个脚本来实现,这个脚本也是 Freedns 官方网站里提供的 Linux 下动态更新域名 IP 的脚本,我们要利用 EC2108V3 机顶盒里的 Linux 系统下的 Crond 服务来实现自动脚本运行计划,所以首先第一步我们就是把脚本放在机顶盒里。按理说,脚本都应该放在 /etc 目录下,但是 EC2108V3 使用了cramfs 文件系统,/etc 目录是只读的,所以,我们把脚本文件放在 /var/etc 目录下,键入命令:

busybox vi /var/etc/freedns.sh

因为 EC2108 是嵌入式 Linux 系统,所以很多程序都是在 busybox 下的,vi 也不例外。
打开 vi 后输入如下内容:

#!/bin/sh
#FreeDNS updater script

UPDATEURL="http://freedns.afraid.org/dynamic/update.php?<此处放入你的更新代码>
DOMAIN="<此处放入你要更新的域名>"

registered=$(busybox nslookup $DOMAIN|tail -n2|grep A|sed s/[^0-9.]//g)

  current=$(wget -q -O - http://www.robvanderwoude.com/wanip.php|sed s/[^0-9.]//g)
         [ "$current" != "$registered" ] && {
                   wget -q -O /dev/null $UPDATEURL
                             echo "DNS updated on:"; date
                               }

按 :wq 保存退出

然后我们将文件权限更改为可执行文件。

busybox chmod 777 /var/etc/freedns.sh
busybox chmod +x /var/etc/freedns.sh

查看一下文件权限:

busybox ls -l /var/etc/freedns.sh

确保文件权限为 -rwxrwxrwx
然后运行测试一下脚本文件是否正常。

sh /vat/etc/freedns.sh

到 freedns.afraid.org 上看一下,你对应域名的 IP 是否更新了?如果更新了,那么你的脚本就成功了,如果没有更新,再次检查脚本文件。
脚本文件设置好以后,我们就要它能定时自动执行,所以,我们就要用到 Busybox 里的 Crond 服务了,关于这个服务,我们这里不多讲,用过 Linux 的同学都很熟悉了,如果想了解,请自行 Google.
首先创建 Crontab 配置文件的存放路径:

mkdir -p /var/spool/cron/crontabs/

然后编写 crontab 的配置文件,注意,不知道什么原因,在这个机顶盒上不能用 crontab 命令编辑,它始终会提示没有找到文件,但是如果我们手动用 vi 编辑是没有问题的

busybox vi /var/spool/cron/crontabs/huawei

输入以下内容:

*/5 * * * * /var/etc/freedns.sh

这代表每 5 分钟运行一次这个脚本,你也可以更改 /后面的数字来调整频率,建议不要太久,免得玩意切换了 IP,脚本还每运行,造成很长时间 IP 不能被更新,也不要太短,给机顶盒符合带来负荷(毕竟这个拿来看电视才是主业嘛)。
然后输入如下命令运行 Crond 服务,让这个配置开始运行起来(其实不输入也可以,貌似这个服务在系统里本省就是运行的,但是我用 ps 却看不到,不知道为何)。
输入 busybox ps | grep crond
可以查看服务是否运行。
这时候你课题可以手动在 Freedns 中把这个域名的 IP 改成别的,然后过5分钟看看它是不是变回来了?如果是,你就成功了,机顶盒就开着吧,别关了,你的动态域名就能自动更新啦,至此你的动态域名更新就全部设置完毕了。

题外话:
然后在你的路由器上开个 3389 端口,再把电脑的 WOL 开起来,你懂的啦。再推荐一个 iOS 上的 WOL 软件,名字叫
WOL Control,远程连接软件用微软自己的 RD Client(需要美国 App Store),然后你就可以随时随地在外地开启你家里的电脑,并且远程连接上去啦。

Related post

  1. 2014.10.06

    HUAWEI EC2108V3

Comment

There are no comment yet.