配置 IPv6 NAT66 访问

此前的博客里,我主要写了 IPv4 环境下的校园网配置。这篇文章补充一下我现在正在使用的 IPv6 方案:在校园网不给路由器下发 IPv6 PD 的情况下,通过 NAT66 让下级设备正常访问 IPv6 外网。

本文默认你已经完成了 IPv4 校园网接入,且 OpenWrt 可以正常联网。

devices

首先检查此前创建的虚拟接口或物理接口是否开启了 IPv6。
图形化页面可以在 网络 -> 接口 -> 设备 -> eth0(或 eth1eth2 等实际设备)中查看。

device

在 shell 环境下也可以执行:

1
uci show network | grep "device"

你会看到类似下面的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
network.@device[1]=device
network.@device[1].type='macvlan'
network.@device[1].ifname='eth0'
network.@device[1].mode='private'
network.@device[1].name='eth00'
network.@device[1].macaddr='46:2F:B1:B9:48:EB'
network.@device[3]=device
network.@device[3].type='macvlan'
network.@device[3].ifname='eth0'
network.@device[3].mode='private'
network.@device[3].name='eth02'
network.@device[3].ipv6='1'
network.@device[3].macaddr='E6:43:C3:05:F1:3C'

如果对应设备没有 ipv6='1',请将其打开,否则后面的 IPv6 配置可能不会生效。

interfaces

wan

如果你的 wan6 已经能够正常获取 IPv6 地址,这一节可以直接跳过。

先检查 网络 -> 接口 下是否已经存在 wan6 或类似用途的接口;如果没有,就新建一个。

创建时建议这样填写:

  • 名称:建议命名为 wan6wanb6 这类格式,后续更容易辨认
  • 协议:DHCPv6 客户端
  • 设备:选择与对应 wan 相同的设备;如果有多个 WAN,就选与该 WAN 对应的 device

创建完成后,点进这个新接口,重点检查:

  • 防火墙设置:区域选择 wan
  • 网关度量值或网关跃点:如果后续要配合 mwan3,这里请设置成与其他接口不同的值

下面是我的一个配置示例:

wanc6_1
wanc6_2
wanc6_3

当接口状态里出现 IPv6 地址时,通常就说明这一部分已经配置完成:

1
2
3
4
5
6
协议: DHCPv6 客户端
运行时间: 3h 28m 26s
MAC: 46:2F:B1:B9:48:EB
接收: 4.36 GB (3271167 Pkts.)
发送: 814.84 MB (2407944 Pkts.)
IPv6: fc00:1000:1001:6ec7:442f:b1ff:feb9:48eb/64

lan

大多数校园网环境不会给路由器分配 IPv6 PD,因此没法像普通家宽那样直接给 LAN 下发一整个前缀。这里我采用的是 NAT66:LAN 使用本地 ULA 地址,下级设备出站时由 WAN 侧 IPv6 地址进行转换。

相比直接桥接或中继,这种方式更稳一些,也更适合已经有自己内网规划的软路由环境。

具体配置如下:

lan_1
lan_2

配置完成后,LAN 状态一般会类似这样:

1
2
3
4
5
6
7
协议: 静态地址
运行时间: 4h 22m 18s
MAC: 00:0A:CD:00:07:1D
接收: 2.72 GB (4643234 Pkts.)
发送: 15.23 GB (11918674 Pkts.)
IPv4: 192.168.5.1/24
IPv6: fd7f:c1f:da35::1/60

如果这里没有出现 IPv6 字段,可以优先检查下面几项:

  • LAN 对应设备是否已经开启 ipv6='1'
  • LAN 接口里是否手动填写了 IPv6 地址或前缀
  • 保存后是否已经重新应用网络配置

如果还是不显示,可以在 shell 中执行下面的命令确认接口是否真的拿到了 IPv6 地址:

1
ip -6 addr show br-lan

如果 br-lan 上已经有你配置的 fdxx: 地址,但 LuCI 里没及时显示,重启一次网络服务通常即可:

1
/etc/init.d/network restart

防火墙

请先确认已经安装 NAT66 相关组件:

1
2
opkg update
opkg install ip6tables-mod-nat

然后在图形化页面中进入:网络 -> 防火墙 -> 区域 -> wan,编辑 wan 区域。

在“高级设置”中勾选:

  • IPv6 伪装

firewall

做到这里以后,下级设备通常已经可以正常访问 IPv6 外网了,但路由器本机可能仍然无法直接访问 IPv6 外网。

为路由器本机补默认路由

出现这个现象的原因通常是:系统里虽然有针对特定源地址的默认 IPv6 路由,但没有一条适用于“路由器本机主动发起流量”的通用默认路由。因此,需要手动补一条默认路由。

先找出上游 IPv6 路由器的链路本地地址:

1
ip -6 neigh show dev eth00 | grep "router"

示例输出:

1
fe80::200:5eff:fe00:10a lladdr 00:00:5e:00:01:0a router STALE

注意两点:

  • 这里只需要看带有 router 标记的那一行
  • 末尾状态可能是 REACHABLESTALEDELAY 等,通常都没有问题

接着把查到的 fe80::... 地址填入默认路由:

1
ip -6 route add default via fe80::200:5eff:fe00:10a dev eth00 metric 100

执行完成后,路由器本机一般就可以正常访问 IPv6 外网了。

这里的 eth00 一定要改成你实际 WAN 所在的物理接口,不要直接照抄。

如果你只是临时测试,到这里就够了;但这条路由在重启网络或重启路由器后通常会失效,需要你自行写入启动脚本或热插拔脚本持久化。

mwan3

如果你还需要给 IPv6 配置和 IPv4 类似的 mwan3 负载均衡,可以参考你现有的 IPv4 配置思路:

  • 新增对应的 IPv6 接口
  • mwan3 中把协议族改为 IPv6
  • 其他权重、成员、策略配置基本保持一致

总结

如果你的校园网环境只给终端地址、不下发 IPv6 PD,那么 NAT66 + ULA 是一个比较实用的折中方案。整体流程并不复杂,核心就是三件事:

  • 确保 WAN 侧能正常拿到 IPv6 地址
  • 给 LAN 配置本地 IPv6 地址,并打开 wan 区域的 IPv6 伪装
  • 如果路由器本机无法出 IPv6,再手动补默认路由

这样配置后,下级设备和路由器本机通常都能比较稳定地访问 IPv6 外网。


配置 IPv6 NAT66 访问
https://blog.zesuy.top/2026/04/03/ipv6config/
作者
zesuy
发布于
2026年4月3日
许可协议