Openwrt上dynv6的使用介绍

首先,需要到dynv6官网注册一个账号并申请对应的前缀,后缀域名推荐选择dynv6.net(但该域名存在被QQ拦截的风险,建议谨慎选择),也可导入自己的域名,设置好DNS解析即可

选择这个网站的原因就在于它访问速度比较快,并且由于服务器设立在境外,注册账号也不需要绑定手机号、进行实名认证等麻烦的操作

注册申请成功之后就可以管理你的子域名了

点击“Documentation”——“APIs”,进入管理界面,复制以下内容

对于路由器而言,我们的需求是路由器应当能够定期向dynv6网站汇报自己的IP地址,在Openwrt中,我们有以下两种方式实现该功能

一、使用DDNS软件包更新
复制完成之后回到OpenWrt,路由器首先应当安装DDNS软件包及其对应的中文Luci界面包,具体方法不再赘述

这里使用的固件编译时就已包含所需软件包

从服务——动态DNS(Dynamic DNS)中进入

找到包含“IPv6”的项目,点击“编辑”,按照以下图中方法进行配置

地址来源选择URL即可以使用运营商分配的/64短码IPv6地址,看起来美观一些,当然,实际使用上并没有太大区别

随后保存并应用即可,可以试试用路由器的诊断工具测试IPv6的连接情况,访问这里或这里得到你的IPv6地址(电脑访问得到电脑的,路由器访问得到路由器的,由于在这里没有NAT的概念,我们说的都是全局的、唯一的IPv6地址)

可以看到现在DDNS检查进程已经启动了,如果没有显示进程的PID,那么手动点击“启动”即可

如果完成了设置,可以跳到第三部分继续阅读

二、通过定时执行更新脚本直接更新
访问dynv6网站时,我们可以发现API界面推荐使用一个小脚本进行更新,如下图所示

Github上的脚本地址:https://gist.github.com/corny/7a07f5ac901844bd20c9

我们可以将dynv6.sh的内容全部复制,再使用WinSCP或Vim传输至路由器上,本文以放置到/root文件夹下为例

文件内容如下图所示

由于本文以IPv6为主,因此文件倒数第四行已将IPv4更新链接注释掉

观察文件可以发现,该脚本的原理是通过系统命令查询再通过正则提取确定设备的IPv6地址

具体而言就是执行

ip -6 addr list scope global

后得到的第一个有效IPv6地址,随后再读取传入的Token、Hostname参数拼接调用API的链接并访问,访问前,会与上一次脚本执行的结果(脚本同目录下的.dynv6.addr6文件)进行比较,若相同,则不访问并输出IPv6 address unchanged的提示

接下来我们修改该脚本文件的权限,使其能够被执行,在WinSCP中,我们右键文件,点击“属性”

勾选如图所示,即Linux中经典的文件权限“777”,该文件具有所有读写执行权限

随后我们打开Putty或其它SSH终端,连接到路由器测试脚本

如图所示,当控制台有输出时,即表示脚本配置成功,为了定时执行脚本,我们还需要借助Openwrt中常用的定时任务工具crontab

关于它的介绍,可以参考:https://www.cnblogs.com/ftl1012/p/crontab.html

测试自己的定时任务,可以到:https://tool.lu/crontab/

一个例子(每两分钟检查一次更新):

*/2 * * * * token=1************************************T /root/dynv6.sh ****.dynv6.net

需要注意的是,crontab中提示“如果 crontab 文件在编辑前为空,则需要手动重新启动 cron 服务”,启动服务的方法比较简单,执行以下命令即可

/etc/init.d/cron enable

/etc/init.d/cron start

查询crontab是否正常运行,我们可以到Luci界面中查看系统进程

可以看到crontab服务已经正常运行了

如果我们观察到Openwrt的日志中crontab的时间在“刷屏”,可以通过调低日志记录等级或减小脚本执行频率的方式来加以解决

可以转到“系统”——“日志”设置“日志记录等级”、“Cron 日志级别”为下图所示

设置完成后重启系统即可生效设置

三、更多
配置完成后,接下来我们访问“My Zones”界面

如果一切顺利, 你将在“My Hosts”界面看到路由器刚刚提交的IPv6地址

nslookup或ping也能够解析出上述地址

注意这里的更新时间是指最后一次地址变化的时间,并不是路由器最后一次提交的时间,只要IP地址没有变化(实测重启路由器,即重新拨号后,IPv6地址也会改变),这里的地址就不会改变

如果配置完成后,地址更新成功且https://testipv6.cn测试通过,但仍旧不能从外网访问路由器,可能有以下几种原因:

运营商分配了IPv6,但禁止了传入连接(罕见,多见于教育网、机关单位等统一配置的防火墙,个人无法解决)
光猫拨号,向下级设备分配了IPv6地址,但光猫的防火墙禁止了传入连接(较常见,可通过修改光猫配置关闭防火墙或改为桥接模式、路由器拨号)
Openwrt自带防火墙默认拒绝传入连接(常见,修改设置即可,参考:https://blog.csdn.net/weixin_43593122/article/details/95766357)
运营商禁用了常用端口80、443、8080等(常见,修改http服务器的端口再次测试即可,参考:https://blog.csdn.net/weixin_43593122/article/details/95766357)
那么,接下来就开始拥抱IPv6时代吧~

NAS、远控、DMZ……

太多太多被内网IP所限制的服务都可以插上IPv6的翅膀,就此腾飞~

发表回复