刷入 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内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。