配置路由器通过6in4隧道在小区动态IP宽带上用IPv6 [ASUS-MerlinWRT / RT-N66U]

微信截图_20160129204853

注意:

对于动态IP用户,如想自动更新Client EndPoint地址,需要开启路由器的SSH服务,也就是MiBoys等路由器玩家常说的“获取路由器root权限”(哈哈哈哈)。

退而求其次,如果路由器的管理页面内允许设置开机启动脚本,也可以。

或者,如果家里有另一台永远不关机的电脑的话,也可以设置一个定时任务,但这里不说。

都不行的话,就只能把自己的浏览器主页设置成更新页的API了(什么是更新页API,后面会说)……

已更正,可以直接使用内置的TunnelBroker DDNS更新模板(大部分固件都有内置这个脚本):https://mirrochou.com/2016/01/how-to-use-tunnelbroker-ddns/

OpenWRT下的配置方法:https://mirrochou.com/2016/04/using-tunnelbroker-in-openwrt/

 

好了,下面是正文。

很久以前就了解到了tunnelbroker这么一个神奇的东西,毕竟啊, ipv6资源那么多(各大高校的pt站),而ISP因为某些众所周知的原因短时间内是不会上ipv6设备的,所以通过别的方法访问tcp6网络也就成了无奈的办法。之前折腾过很久也没有成功。然而好在shadowsocks-rss和anyconnect都支持使用tcp4协议传输tcp6内容,所以ipv6资源也是照看不误。刚才看到了PeterCai的一篇写于去年的Blog大受启发,摩拳擦掌决定再尝试一番。

接下来该去寻找IPv6隧道服务商了,在这里推荐Hurricane Electric的TunnelBroker服务(也是老牌子了),进入https://www.tunnelbroker.net/ 注册一个账号,然后选择左侧的“Create Regular Tunnel”

微信截图_20160129203810

这个步骤中EndPoint(本地客户端终点)是必填的,也就是自己当前的ip,去ip138之类的网站或者ipconfig(Linux下是ifconfig)一下都可以看到,注意要先配置路由器的防火墙允许接收ping(允许ICMP包)。

选择一个服务器,推荐使用亚洲的,据说速度或者ping会更快一些,然而我还没有写脚本的能力去实时测试每个服务器的连接速度……所以我果断听信了据说选择了香港的。

下一个页面将会给出一份详细的设置内容

微信截图_20160129205413

这时我们打开路由器的IPv6页,各个固件的进入方法大致相同,有的是直接进入,有的是隐藏在WAN中,有的隐藏在Basic中。

微信截图_20160129210209

首先将IPv6类型选为ipv6in4 (Tunnel 6in4),看准,是6in4不是6to4,然后将tunnelbroker.net提供的配置信息填入路由器的IPv6配置中。

可以发现,

Server IPv6 Address 对应 服务器IPv6地址,

Server IPv4 Address 对应 服务器IPv4地址,

Client IPv6 Address 对应 用户端IPv6地址,

Client IPv4 Address在Tunnelbroker页面中是可以点击的控件,点击后可以编辑然后刷新。

Routed IPv6 Prefixes对应IPv6内部网络设置,有些固件允许在填写配置时将长度“/64”填写在IP地址后面,有些则不允许,各种固件慢慢尝试吧,反正MerlinWRT不允许,需要在填写前缀长度的地方表明长度。DNS服务器也是,MerlinWRT只允许填写ipv6地址的DNS服务器。

推荐DNS:2001:4860:4860::8888(Google Public DNS);2620:0:ccc::2(Cisco OpenDNS),前者支持解析Google v6地址和解析IPv4地址,后者不支持。

填写完成后点击应用设置,等待启动完成后尝试访问http://ipv6-test.com/ 或者http://test-ipv6.com/ ,应该已经可以检测到由hurricane electric提供的IPv6服务了。如果不行,看一看是不是因为重启路由器改变了本地ipv4地址,如果改变了返回tunnelbroker.net的隧道信息设置页更新一下Client IPv4 Address。还不行的话尝试更改隧道的MTU或在路由器的ipv6设置配置中进行排查。

这时应该就可以成功访问IPv6资源了,但由于家庭宽带的动态IP分配特殊性,每次重启路由器都要重新在tunnelbroker.net进行配置也未免太过麻烦,所以最好能够路由器实时检测ip的变化并反馈给tunnelbroker.net,还好tunnelbroker.net已经想到了这个问题,

更正:直接使用路由器内自带的HE TunnelBroker DDNS更新脚本即可。

移步:https://mirrochou.com/2016/01/how-to-use-tunnelbroker-ddns/

这里,我们通过crontab与cURL(curl)达到路由器每隔一分钟访问一次上述更新API的效果。

配置好路由器上的SSH后用PuTTY连接路由器,输入用户名与密码。

首先检测命令是否有效(小贴士,在PuTTY中右键相当于粘贴)

curl tunnelbroker提供的更新URL

如果有问题的话尝试

curl -k tunnelbroker提供的更新URL

-k命令的作用是忽略不信任的ssl证书,由于时间长之后可能会遇到长城的中间人攻击,所以建议加上-k,毕竟更新ip地址总比被看了已经知道的ip地址重要……

如果能够返回nochg+本机ip的话则指令是有效的,如果提示command not found,考虑用optware安装一个curl吧,如果超时的话,可能是tunnelbroker.net在当地被和谐了,请允悲。

接下来使用crontab。crontab是一个定时计划任务模板,具体详情不多介绍,在终端中输入

crontab -e

然后应该会遇到如下页面

2016-01-29 (3)

那么恭喜,你进入了固件自带的vi文本编辑器页面,注意,什么都不要动,什么都不要动,什么都不要动!(菊苣随意吧,当然菊苣也不会看这篇文章……)

按一下键盘上的“I”进入编辑模式,输入如下内容

 * * * * *  curl -k 你自己的更新API网址

完成后按“ESC”退出编辑模式,然后按“:”(没错就是键盘的Shift + ;)进入命令模式,输入“w”并回车保存文档,再次输入“:”进入命令模式输入“q”退出,输入“wq”保存并退出,如果两条命令不起作用可以尝试“w!”或“q!”强制保存与退出。

事已至此,让我们愉快的重启一遍路由器,享受原生IPv6的生活吧。

====== 16/01/31更新 ======

由于路由器内部存储的特殊性,直到路由器工作了两晚我才发现重启之后crontab的配置变量会消失,再附上一个写入文件到nvram中的句子。

nvram save /var/spool/cron/crontabs/{创建crontab时使用的用户名,比如我的是admin}

nvram commit

这个时候可以重启一下试试了。不清楚自己用户名的可以先cd到/var/spool/cron/crontabs然后使用 ls -l 命令查看。貌似不同固件的NVRAM用法不一样,这里就不一一举例了。

One thought on “配置路由器通过6in4隧道在小区动态IP宽带上用IPv6 [ASUS-MerlinWRT / RT-N66U]

发表评论

%d 博主赞过: