听雨轩

  一只喵的故事

 了 解 他 → 

OpenWrt ipv6 NAT配置

2015-12-27 03:00

原创文章,转载请注明出处和作者。

  其实一定要说的话。。。我的感觉应该算是还个愿吧,直言不讳的说,从入学开始折腾路由器以来,这个问题已经困扰我了整整两年半,每个学期都会用那么一两个通宵的时间去折腾这东西,依然记得以前最好的记录是折腾到路由器本身可以获取到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地址。


830add87-6f7f-4d36-8187-5d3ffbda580a.png


  这里的前缀的80位是我们以后要用到的,需要记录下来。

  所谓的80位,指的是80个bit也就是你看到的前5节,第五节被我打码了。

  在全局网络选项中的IPv6 ULA前缀设置为刚才记录下的前80位,并写明长度为80.


19713d1b-28b4-4d9f-9b3a-f279eaaca8f1.png


  记录下这个地址,然后点击LAN口编辑,ipv6分配长度改为禁用。

  DHCP高级中设置如图:


d8548f34-61b4-4660-9b9a-0f09b42f84e3.png


  现在我们需要给路由器的LAN像ipv4一样设置一个IPV6的地址用来做网关,然后进行NAT转发,不要试图使用上图中的那几个框框设置ipv6的地址,因为我们想往下划分的是一个80位的子网,在这里如果直接设置的话一定会挂掉的,所以我们需要另行其道。


  其实也不是什么复杂的办法,直接在系统-启动项的本地启动脚本中加一行ip配置就可以了。


  ifconfig br-lan 2001:DA8:B800:1A02:XXXX::1/80
  # 这里的ipv6地址请根据之前抄下来的网段设置。


  这一下好了,试一下发现,电脑可以取到正确的ip了,可以ping通路由器的这个LAN的ipv6地址了,但是还是链接不了外网的ipv6.

嗯~没错。。。防火墙规则需要自己写,接下来去网络-防火墙选单里,自定义规则添加两条就完事了。


ip6tables -P FORWARD  ACCEPT
ip6tables -t nat -I POSTROUTING -s 2001:DA8:B800:1A02:XXXX::/80 -j MASQUERADE


重启路由器,重启电脑,看看效果。


67dc902a-19f1-4d29-8455-518d11e87a88.png


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


25051989-91a8-46b5-aa11-f9f234e00593.png


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



 Linux