OpenWRT IPv6 NAT 配置



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

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

    记录下这个地址,然后点击LAN口编辑,ipv6分配长度改为禁用。
    DHCP高级中设置如图:
    0_1451155283838_QQ截图20151227024107.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
    

    重启路由器,重启电脑,看看效果。
    0_1451156174508_QQ截图20151227025604.png
    如果还是不放心的话,ping一下试试呗~

    0_1451156237161_QQ截图20151227025710.png
    嗯~就是这样,可以愉快的在宿舍挂PT惹~~
    如果这篇帖子解决了你的问题~别忘了给我点个赞~谢谢惹w



  • "惹" 是什么意思...



  • @ran ‘惹’就是‘了’的意思>_<


  • Blogspace Alpha

    不是说ipv6没有nat?



  • @dontpanic 说:

    不是说ipv6没有nat?

    应该是计划取缔,但考虑兼容等问题现在还不行吧。比如4-6隧道不是依赖nat吗



  • 有几个小的问题想问一下。

    1. 全局网络的 ULA 在原来的 OpenWRT 设置中是一个类似于 fd30::/48 的网段,如果是做 NAT 的话应该不需要动这块的设置,我看你目前是改成了 2001 的前缀的。为什么这么做,是因为如果使用原有的 fd30 前缀的地址,无法访问外网嘛?

    2. 可以的话可以提供一下内网电脑 IPv6 的地址和 Traceroute 到 ipv6.google.com 的结果嘛?

    这么说我只是想确定一下你这里所说的是 NAT 还是 Forward。如果是 NAT,那不应该设置 2001 前缀的地址,应该采用 IPv6 协议中保留的本地地址,如果是 Forward,应该是通过 NDP 协议来 Bridge,让路由器后面的设备通过协议本身获得 IPv6 地址,很可惜的是在 Barrier Breaker 版本中的 NDP Relay 是有严重问题的。我尝试一下新版本的 OpenWRT 中是否修复了。


  • Blogspace Alpha

    @austinchou0126 我当时配置寝室的NetGear时ipv6就很头疼 到现在好像还是有问题



  • @austinchou0126 应该是标准的NAT,不是Forward,在外网看到的ipv6地址和路由器的是一致的,而不是和本机获取到的一致。

    有点玄学的感觉,之前一直不成功,改为2001的就不知道为什么就成功了,之前看到一篇帖子用的是邻居发现的思路搞得,当时他用的就是这样的把网段改了的办法。这一次尝试的时候我也这样改了然后发现就成功惹。。。具体的原因最近还在查阅一些资料探究中。感觉ipv6的这个坑是比较大。。

    到 ipv6.l.google.com [2404:6800:4005:801::200e] 的路由:
    
      1    <1 毫秒   <1 毫秒   <1 毫秒 cernet2.net [2001:da8:b800:1a02:56ee::1]
      2     1 ms    <1 毫秒   <1 毫秒 cernet2.net [2001:da8:b800:1a02::1]
      3    <1 毫秒   <1 毫秒   <1 毫秒 cernet2.net [2001:da8:b800:0:192:168:101:2]
      4     1 ms     1 ms     1 ms  cernet2.net [2001:da8:ab:ffff::1:1]
      5     6 ms     6 ms     7 ms  cernet2.net [2001:da8:b801::1]
      6     1 ms    <1 毫秒   <1 毫秒 2001:da8:1:50c::1
      7     4 ms     4 ms     4 ms  chc-hrb-v6.cernet2.net [2001:da8:1:1a::1]
      8     9 ms     8 ms     9 ms  sy-chc-v6.cernet2.net [2001:da8:1:19::1]
      9    19 ms    19 ms    19 ms  2001:da8:1:e::1
     10    23 ms     *       21 ms  2001:252:0:1::101
     11    57 ms     *       59 ms  2001:252:0:101::2
     12    62 ms    62 ms    58 ms  google1-lacp-10G.hkix.net [2001:7fa:0:1::ca28:a10a]
     13    63 ms    59 ms    59 ms  2001:4860::1:0:65a1
     14    61 ms    60 ms    61 ms  2001:4860:0:1::769
     15    60 ms    58 ms    58 ms  hkg12s01-in-x0e.1e100.net [2404:6800:4005:801::200e]
    
    跟踪完成。
    
    


  • @雨翌 确实走了 NAT... 不过总觉得 Bridge 是更好的选择,如果有 NAT 的话就没有什么意义了嘛,除非再上 IPv6 Stack 上得 uPnP...



  • @austinchou0126 这个坑真的是无比大~有机会我再试试吧~主要是在宿舍弄这东西。。影响舍友正常使用~只能找他萌不在的时候弄w‘



  • 如果用 relay 模式的话,路由器下的客户端能够取到 IPV6 地址,在一开始的一段时间内也能正常联网。但是 IPV6 的流量终止几分钟后,IPV6 的网络就无法访问了。大大知道是怎么回事吗?


  • Blogspace Alpha

    @easyteacher 很奇怪啊,按理说搞到了地址就应该没什么问题了。地址还在吗?



  • @dontpanic 地址还有,tracert run6.hit.edu.cn 也没问题,但就是ping不通,显示超时,然后路由器日志多了几行 icmpv6_send: no reply to icmp error,访问 www.kame.net 看不到小乌龟在动。
    目前来看NAT6真的是最好的解决办法了。


Log in to reply