对于需要认证才能用 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