对于需要认证才能用 IPv6 的华科来说,不需要点奇技淫巧是不行的。
参考博文 LEDE 下的 ipv6 NAT6
看参考博文标题就知道,正常认证后是路由器能上 IPv6 网,但下游终端设备还不行。因此需要搭建 NAT 来拯救世界!
在锐捷认证过后,路由器应该能直接上 IPv6 网了,测试一下:
ping6 ipv6.google.com
不行的话检查是否真的连上网了。
安装软件包
先安装必要软件,ip6tables 和 kmode-ipt-nat6:
opkg install ip6tables kmod-ipt-nat6
设置ULA prefix
这步可以不做,据说做了后网站会尽量走 IPv6 通道。
在 Network->Interface 界面下,将 ULA prefix 前缀改成 2fff::/64 内的任意网段。
宣告默认路由
在 Network->Interface-LAN 的 DHCP Server 界面下,选择 IPv6 Settings 标签,勾选 Always announce default router
宣告默认网关
查看当前IPv6默认路由如下
ip -6 route | grep "default from"
若结果是这样的
default from [ipv6 range] via [gateway] dev [intf] proto static metric 512
就需要向下一级宣告默认网关,中括号的内容请自行替换为上面结果。
ip -6 r add default via [gateway] dev [intf]
搭建 NAT
利用 ip6tables 进行内网 NAT,括号内容为上面的结果
ip6tables -t nat -A POSTROUTING -o [intf] -j MASQUERADE
这时候终端应该就可以访问 IPv6 网站了。
点此测试你的IPv6配置
开机自动设置 IPv6
(可选步骤)
在/etc/hotplug.d/iface
目录下建立 90-ipv6 文件,并填入以下内容:
#!/bin/sh
# filename: /etc/hotplug.d/iface/90-ipv6
# please make sure this file has permission 644
# check if it is the intf which has a public ipv6 address like "2001:da8:100d:aaaa:485c::1/64"
interface_public="wan6"
[ "$INTERFACE" = "$interface_public" ] || exit 0
res=`ip -6 route | grep "default from"`
gateway=`echo $res | awk '{print $5}'`
interface=`echo $res | awk '{print $7}'`
if [ "$ACTION" = ifup ]; then
ip -6 r add default via $gateway dev $interface
if !(ip6tables-save -t nat | grep -q "v6NAT"); then
ip6tables -t nat -A POSTROUTING -o $interface -m comment --comment "v6NAT" -j MASQUERADE
fi
else
ip6tables -t nat -D POSTROUTING -o $interface -m comment --comment "v6NAT" -j MASQUERADE
ip -6 r del default via $gateway dev $interface
fi
上面的脚本使用要注意,变量 interface_pulbic 是带有公网 IPV6 地址的接口地址,比如我的是在 wan6 上,那么变量 interface_pulbic 是 wan6。
最后记得修改权限:
chmod 644 /etc/hotplug.d/iface/90-ipv6