好几个月前我就已经把这个动态域名设置好了,后面重新刷了系统,忘记保存,又得重新再来,这次把过程记录一下,免得下次再从头百度。
工具
- 刷好openWrt的路由器
- 一个每步科技注册的域名(我为什么选择这个,因为它免费)
步骤
- 创建更新脚本
通过ssh访问到openwrt的后台,创建一个文件夹,存放用来向每步的服务器发送本机信息的脚本,在其中创建脚本,我这里命名为mbDDNS.sh,其中输入以下内容:
#sync
#. /lib/functions/network.sh
#network_flush_cache
#network_find_wan6 NET_IF6
#network_get_ipaddr6 NET_ADDR6 "${NET_IF6}"
NET_ADDR6=$(ifconfig | grep br-lan -A 10 | grep 2409 | cut -b 23-43)
old=$(cat ./ips6.ini)
new=$NET_ADDR6
if [ "$old" != "$new" ]
then
rm -rf ips6.ini
echo $new > ips6.ini
rm index*
#wget "http://v6.meibu.com/v6.asp?name=注册的域名&pwd=注册时设置的密码"
wget "http://ipv6.meibu.com/?id=123&name=注册的域名&pwd=注册时设置的密码&ipv6=$NET_ADDR6"
else
echo "==same!"
fi
这个是从每步网站上的脚本改来的,原脚本在这里:
原脚本我运行起来有问题,所以改了一下。
- 测试内容是否成功
- 一种方法是根据每步在这个网页的描述:
返回 chenggong 为成功
返回 chongfu 为重复提交
返回 err1 为密码错误
返回 err2 为域名错误
返回 daoqi 为使用到期
观察返回值,看是否成功,我这里也不知道为什么,成功了只返回了个OK,错误了才有上面说的返回值。 - 另一种方法是使用这个网址去ping自己设置好的域名,看是否能够ping通,如果能通,那就是成功了.
- 在openwrt中设置http访问端口
因为默认的ipv6的http访问端口80是被封了的,个人宽带都是被封了的,无法正常访问,所以如果想实现远程登录本地路由器的web管理界面,就要更改web访问端口到任意自己想设置的值。这样属于workaround的方法,虽然能够通过互联网访问我们的路由器管理页面了,但是访问的时候必须在域名后面加上
:设置的域名
- 如
:808
- 才能访问
像这样进行设置。
有可能比较坑的是有可能这样设置了还是不能从互联网访问,原因有可能是防火墙的设置问题
在防火墙设置里,红圈部分要设置为接收。 - 定时任务
有时候自己路由器重启了,ipv6地址会变化,这时候我们肯定不希望通过域名无法正常访问我们的路由器
可以在web管理界面中的计划任务中添加如下配置:
10 * * * * /bin/bash /root/ddns/mbDDNS.sh
不同版本openwrt中 /bin/bash 可能不一样,终端输入echo $SHELL可查看。
这个运行的文件就是第一步设置的脚本,每十分钟运行一次,如果ipv6地址有更更新,就使用新地址,否则什么都不做。