使用NAT66配置校园网IPv6访问

如果校园网严格限制实名使用,只能给设备分发单个 /128 地址,没有分发IPv6前缀前缀,且使用NDP代理的中继模式也无法正常下发公网IPv6地址,那么只能使用NAT66进行IPv6配置。
由于NAT66和IPv4的NAT工作原理类似,需要将私网IPv6请求在网关处进行统一的IPv6地址转换,性能较直接使用公网IPv6地址上网有一定降低。

NAT66是在仅获得单个 /128 地址的校园网环境下,让内网设备访问 IPv6 互联网的可靠方案。其核心是让路由器下的设备使用本地私有地址(ULA),并在路由器出口处统一转换为 WAN 口的公网 IPv6 地址。

第一步:确认或设置 ULA 前缀

NAT66 需要为内网设备分配一个本地私有 IPv6 地址段(ULA, Unique Local Address)。OpenWrt 通常会自动生成一个以 fd 开头的 /48 前缀,你可以在 网络 → 接口 → 全局网络选项 中查看 IPv6 ULA 前缀。
ULA前缀
如果该字段为空,你可以手动填写一个,例如 fd12:3456:7890::/48,或者直接使用系统生成的默认值。这个前缀将用于内网设备寻址,不需要是公网地址。

第二步:配置 WAN6 接口

这一步的目的是告诉路由器:不要向上游请求 IPv6 前缀,并关闭可能干扰 NAT66 的源路由功能。

如果不存在 WAN6 接口

新建wan6接口,协议DHCPv6客户端,设备选择wan口所在的以太网适配器,防火墙区域选择与wan口相同的区域

编辑 WAN6 接口

  1. 在“常规设置”中,找到 请求指定长度的IPv6前缀,将其设置为已禁用
  2. 重要:切换到“高级设置”标签页,找到IPv6源路由,取消勾选。
  3. 在“DHCP服务器设置”中,若未配置则忽略;若已配置,勾选忽略此接口,IPv6设置中 RA 服务、DHCPv6 服务、NDP 代理均为已禁用
  4. 保存并应用

命令行等效操作

uci set network.wan6.reqprefix='no'
uci set network.wan6.sourcefilter='0'
uci commit network

配置完成wan6后,OpenWrt首页概览中,应显示IPv6上游,且获得了公网IPv6地址
wan6

第三步:配置 LAN 接口(分配 ULA 地址)

现在,让 LAN 接口的 DHCP 服务器向内网设备分发上一步中确定的 ULA 地址,并强制它们使用路由器作为默认网关。

LuCI

  1. 进入 网络 → 接口,点击 LAN 的 编辑。
  2. 切换到 DHCP 服务器 标签页
  3. 在 IPv6 设置 或类似区域,确认RA服务处于 服务器模式,DHCPv6服务和NDP代理 设置为 已禁用,以确保设备正常获取 ULA 地址。
  4. 再进入 IPv6 RA 设置 子标签,找到默认路由器,将其设置为强制通告,勾选启用SLAAC,RA标识设置为其他配置(O)
    ipv6-ra
  5. 保存并应用。

命令行等效操作

uci set dhcp.lan.ra_default='2'  # 2 通常代表 "forced"
uci commit dhcp

第四步:在 WAN 防火墙区域开启 IPv6 伪装(核心步骤)

这是启用 NAT66 的关键,必须在 WAN 区域(而不是 LAN 区域)开启 IPv6 伪装。

LuCI

  1. 进入 网络 → 防火墙 → 区域。
  2. 找到 wan 区域,点击右侧的 编辑。
  3. 切换到 高级设置 标签页。
  4. 勾选 IPv6 伪装 (IPv6 Masquerading) 选项。该选项在较新的 OpenWrt 中对应的就是 masq6 功能。
  5. 保存并应用。
  6. 同时,请确认 LAN 区域的 转发 (Forward) 策略为 接受 (Accept),以确保内网流量可以流向 WAN。

命令行等效操作

# 通常 wan 是 @zone[1],但建议先通过 uci show firewall 确认
uci set firewall.@zone[1].masq6='1'
uci commit firewall

第五步:启用系统 IPv6 转发(必需)

即使防火墙开启了伪装,内核层面的 IPv6 转发也必须打开,否则路由器不会转发内网设备的数据包。

命令行操作(LuCI没有对应项目)

通过 SSH 登录路由器,编辑 /etc/sysctl.conf 文件,确保或添加以下内容

net.ipv6.conf.default.forwarding=2
net.ipv6.conf.all.forwarding=2
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.all.accept_ra=2

保存后,执行 sysctl -p 使其立即生效,或直接重启路由器。

第六步:应用所有更改并验证

重启路由器是最稳妥的方式,可以确保所有网络、防火墙和内核参数完全生效。
在连接的设备上,访问test-ipv6.com或ip.sb进行验证

评论栏

暂无评论,快来抢沙发吧!