OpenWrt Chaos Calmer 配置 IPv6 NAT

我的环境和参考文章类似都为教育网,使用 Openwrt 版本一样(15.05-rc2 比较精简,不带 luci,D-Link DIR-605 中可怜的 4M flash 居然能剩896K空间可以安装软件),对参考文章的步骤略做修改。

    刷入 OpenWrt 15.05-rc2,使用原始配置,安装 IPv6 内核 nat 模块及路由追踪软件:

opkg update
opkg install kmod-ipt-nat6
opkg install iputils-tracepath6

    修改 /etc/init.d/dhcp , 在设置 lan 那节添加内容,odhcpd 为内网设备设置 IPv6 地址及路由等,如下:

    config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv6 'server'
        option ra 'server'
        option ra_management '1'
        option ra_default '1'

    更改 /etc/firewall.user ,添加一行,为内网访问外网 IPv6 时提供IP伪装

ip6tables -t nat -A POSTROUTING -o $(uci -q get network.wan6.ifname) -j MASQUERADE

  创建 /etc/hotplug.d/iface/90-ipv6 ,设置外网 IPv6 路由,修改文件属性为755, 内容如下:

    #!/bin/sh

    [ "$ACTION" = ifup ] || exit 0

    [ "$INTERFACE" = wan6 ] && {              
      route -A inet6 add ::/0 gw $(tracepath6 -n tv.byr.cn | grep '^ 1: ' | awk 'NR==1 {print $2}') dev $(uci -q get network.wan6.ifname)
    }


    通过 tracepath6 -n tv.byr.cn 获取外网 IPv6 网关,可选择其它较快且能连通的 IPv6 服务器,注意不要用 ipv6.google.com 。

重启路由器或者重启网络和防火墙(/etc/init.d/network restart; /etc/init.d/firewall restart),然后可以测试内网设备访问IPv6。

 

补充:有时我这里可能是外网获得 IPv6 地址太慢,导致 IPv6 路由添加失败。于是我创建了一个检测并添加 IPv6 路由的脚本 /etc/config/route6 :
#!/bin/sh

GATEWAY6=$(tracepath6 -n tv.byr.cn | grep '^ 1: ' | awk 'NR==1 {print $2}')                       
if [ -z "$(route -A inet6 | grep '::/0' | grep ${GATEWAY6})" ]; then                                                   
  route -A inet6 add ::/0 gw ${GATEWAY6} dev $(uci -q get network.wan6.ifname)
fi


然后在 /etc/crontab/root 中添加一行,cron每分钟检测一次 IPv6 路由:

* * * * * /bin/sh /etc/config/route6

 
20160118 补充:tracepath6 在不同的 IPv6 环境中得到的结果略有不同,所以 grep '^ 1: ' 可能是错误的,可以根据 tracepath6 -n tv.byr.cn 的实际结果,例如换成 grep '^ 1 ', 总之要搜索到正确的网关。

 

20160506补充:根据aixlx的建议,如果busybox版本较高(可能要>1.24),traceroute支持 IPv6,可作如下修改:

第1步省略安装 iputils-tracepath6

第4步改为:编辑 /etc/rc.local,设置外网 IPv6 路由, 内容如下:
sleep 15
route -A inet6 add ::/0 gw $(traceroute -m 1 -n tv.byr.cn | grep '^ 1 ' | awk '{print $2}') dev $(uci -q get network.wan6.ifname)
exit 0

通过 traceroute -m 1 -n tv.byr.cn 获取外网 IPv6 网关。
本文章由作者:佐须之男 整理编辑,原文地址: OpenWrt Chaos Calmer 配置 IPv6 NAT
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐