一个折磨了我三年的问题
通过这篇文章,你可以了解到:
- 如何在openwrt上配置ipv6的NAT
- 如果一定要问意义在哪里的话可能就是可以在宿舍开心的挂PT了吧
其实一定要说的话。。。我的感觉应该算是还个愿吧,直言不讳的说,从入学开始折腾路由器以来,这个问题已经困扰我了整整两年半,每个学期都会用那么一两个通宵的时间去折腾这东西,依然记得以前最好的记录是折腾到路由器本身可以获取到ipv6地址,可以ping通外部ipv6服务器,内网可以分配ipv6地址,但是还是不能转发ipv6,还记得两年前还用着13.X的版本,现在已经15.05惹。。。还是少感慨两句开始正题吧
本人的机器是Tplink-720N,改过的,16M的Flash和64M的内存,就是专门为了折腾买的。
其实我觉得这一次的成功主要还是得益于openwrt主版本的升级,从内核层面上加强了对ipv6的支持。
说一下我们的思路其实就是完成一个NAT的配置,不过不同于我们一般IPV4配置的是,IPV6里很多配置需要自己来设置,不能自动完成
首先需要安装一些软件:
- ip6tables
- ip6tables-mod-nat
- kmod-ipt-nat6
- kmod-ipv6
这些都是ipv6的支持组件,如果安装正确的话现在路由器已经可以获取到ipv6的地址了,但是还不能分配下去,也不能做路由转发。
接下来就是比较关键的步骤了,我们先进入接口页面记录下我们获取到的ipv6地址。

这里的前缀的80位是我们以后要用到的,需要记录下来。
所谓的80位,指的是80个bit也就是你看到的前5节,第五节被我打码了。
在全局网络选项中的IPv6 ULA前缀设置为刚才记录下的前80位,并写明长度为80.

记录下这个地址,然后点击LAN口编辑,ipv6分配长度改为禁用。
DHCP高级中设置如图:

现在我们需要给路由器的LAN像ipv4一样设置一个IPV6的地址用来做网关,然后进行NAT转发,不要试图使用上图中的那几个框框设置ipv6的地址,因为我们想往下划分的是一个80位的子网,在这里如果直接设置的话一定会挂掉的,所以我们需要另行其道。
其实也不是什么复杂的办法,直接在系统-启动项的本地启动脚本中加一行ip配置就可以了。
1 | ifconfig br-lan 2001:DA8:B800:1A02:XXXX::1/80 |
这一下好了,试一下发现,电脑可以取到正确的ip了,可以ping通路由器的这个LAN的ipv6地址了,但是还是链接不了外网的ipv6.
嗯~没错。。。防火墙规则需要自己写,接下来去网络-防火墙选单里,自定义规则添加两条就完事了。
1 | ip6tables -P FORWARD ACCEPT |
重启路由器,重启电脑,看看效果。

如果还是不放心的话,ping一下试试呗~

嗯~就是这样,可以愉快的在宿舍挂PT惹~~