openWRT ImmortalWrt ipv6 nat

ImmortalWrt IPv6 完整配置指南(从 PD 问题到 NAT6)

解决因运营商不提供 IPv6 PD(前缀委派)导致内网设备无法获取公网 IPv6 的问题,通过配置 NAT6(IPv6 网络地址转换)实现内网设备共享路由器 IPv6 上网。

快速关闭 ipv6

  1. 进入 网络接口
  2. wan6接口停止,其他配置不用改
  3. 点击保存并应用
  4. 恢复ipv6 将 wan6 启用即可

第一步:诊断你的 IPv6 现状

在动手配置之前,先根据你当前看到的 WAN 口信息,判断问题到底出在哪。

一、整体看下来是正常的

如果你在 WAN6 接口看到类似下面的信息:

协议: DHCPv6 客户端
地址: 240e:xxx:b113/64
网关: fe80::123c:59ff:fec8:61aa
DNS: 240e:xxx:6

这说明:

  • 获取到地址240e 开头是中国电信的 IPv6 地址段,运营商分配正常。
  • 拿到网关和 DNSfe80:: 开头的网关是本地链路地址,这没问题,很多运营商就是这样分配的。DNS 也是电信的下发地址。
  • 状态显示活跃:已连接时间在增长,说明 IPv6 连接是持续生效的。

单纯看这份信息,IPv6 是可以用的——路由器自己能通过它访问公网 IPv6 资源。

二、一个值得注意的点:前缀长度 /64

截图中地址是 /64,意味着你收到的只是一个单个 IPv6 地址,并没有附带 PD 前缀

影响对象结论
对这台路由器自身✅ 完全没问题,路由器自己能上网
对路由器下面的设备(手机、电脑等)⚠️ 有可能无法获得公网 IPv6 地址,只能走 NAT 或只有 IPv4

因为要给内网设备分配 IPv6,路由器通常需要运营商下发一个 PD(Prefix Delegation)前缀(一般是 /60/56)。如果只拿到 /64,通常说明 PD 没下来,内网设备分不到公网 IPv6。

三、如何确认内网设备能否用 IPv6?

在电脑或手机上访问 test-ipv6.com

测试结果结论
显示 IPv6 正常✅ 说明 PD 其实拿到了(可能只是截图没展示完整),你不需要 NAT6
显示没有 IPv6❌ 那就是上面说的 PD 没拿到的问题,请继续往下走 NAT6 配置

四、如果确实没有 PD 前缀,怎么办?

大概有几种可能的原因和对应的解决思路:

可能原因解决方案
运营商没给(某些旧光猫或部分地区默认不开 PD)尝试将光猫改为桥接模式,让路由器直接拨号
路由器 IPv6 设置不对检查 WAN 口的 IPv6 分配长度是否选了 /60/56,而不是“仅地址”
固件不兼容(部分老版本 OpenWrt 类固件对 PD 获取不稳定)尝试重启路由器,或更新/更换固件版本
如果以上方法都尝试过后,内网设备依然没有 IPv6,那么请继续按照本指南的后续步骤配置 NAT6。

1. 判断问题:确认是否存在 PD 缺失

1.1 检查 WAN 口 IPv6 情况

  • 路径网络 → 接口 → WAN6(或类似名称,如 wan_6
  • 关键判断:如果没有显示“委派前缀”或显示前缀长度为 /0,说明 PD 未获取

1.2 影响

  • 路由器自身:IPv6 正常 ✅
  • 内网设备:无法获得公网 IPv6 ❌

1.3 解决路径选择

方案适用场景推荐度
修复 PD光猫桥接、路由器拨号⭐⭐⭐(首选)
NAT6(本指南)上级网络无法调整(如公司网络、特定光猫)⭐⭐⭐⭐(稳妥兜底)

2. 准备工作

2.1 确认路由器自身 IPv6 连通性

# SSH 到路由器执行
ping -6 2400:3200::1   # 百度 IPv6 DNS

若能 ping 通,则基础 OK。

2.2 修改 WAN6 高级设置(避免默认路由丢失)

  • 路径网络 → 接口 → WAN6 → 编辑 → 高级设置
  • 操作取消勾选“IPv6 源路由”

3. 配置 LAN 口 IPv6 地址(ULA)

3.1 设置内网 IPv6 前缀

  • 路径网络 → 接口 → LAN → 编辑 → 常规设置
  • 找到“IPv6 地址”:填入自定义 ULA 地址,格式如下:

    fd91:417b:3eff::1/64
    说明fd 开头是唯一本地地址(ULA),后面 6 位可随意组合(如 fd12:3456:789a),最后必须带 /64

3.2 禁止从 WAN 委派前缀

  • 路径网络 → 接口 → LAN → 编辑 → 高级设置

    • 委托 IPv6 前缀:❌ 禁用
    • IPv6 分配长度:已禁用

4. 配置 LAN 口的 DHCPv6 和路由通告(RA)

  • 路径网络 → 接口 → LAN → 编辑 → DHCP 服务器 → IPv6 设置
选项设置值
路由通告服务(RA)服务器模式
DHCPv6 服务服务器模式
NDP 代理已禁用

4.1 RA 高级选项(部分版本在独立标签页)

  • 默认路由器:强制的
  • 启用 SLAAC:✅ 勾选

5. 启用 NAT6(IPv6 伪装)

  • 路径网络 → 防火墙 → 区域设置 → 找到 WAN 区域 → 编辑

5.1 常规设置

  • MSS 钳制:✅ 勾选

5.2 高级设置

  • IP 动态伪装:✅ 勾选(这是 NAT6 的核心开关)
说明:此操作会添加 MASQUERADE 规则到 IPv6 的 POSTROUTING 链,实现内网 IPv6 地址到 WAN 口 IPv6 地址的转换。

6. 可选增强:FullCone NAT6

适用于 P2P 下载(BT/PT)、游戏主机等场景。

  • 路径网络 → 防火墙 → 区域设置 → LAN → 编辑 → 高级设置
  • 启用 FullCone NAT6:✅ 勾选(若选项存在)

7. 生效与验证

7.1 应用配置

  • 点击各页面 保存并应用
  • 建议 重启路由器 确保所有服务全新初始化

7.2 内网设备验证

方式一:查看网卡地址

  • Windowsipconfig → 查找 fd91:417b:3eff: 开头的地址
  • Linuxip a → 查找 inet6 fd91:...
  • Android/iOS:Wi-Fi 详情 → IPv6 地址

方式二:访问测试网站

浏览器打开 test-ipv6.com

  • 成功标志:页面显示“IPv6 支持”且给出您的 IPv6 地址
  • 注意:此时显示的地址应是 WAN 口的 240e:... 地址(NAT 转换后的效果)

方式三:命令行测试

# 内网设备执行
ping -6 2400:3200::1

若能 ping 通,则 NAT6 成功。

8. 故障排查表

现象可能原因解决方法
内网设备没有 fd 开头的地址RA/DHCPv6 未生效检查 第 4 步,RA 服务是否为“服务器模式”;重启路由器
fd 地址但 ping 不通外网NAT6 未生效检查 第 5 步“IPv6 伪装”是否勾选;防火墙重启 /etc/init.d/firewall restart
IPv4 上网变慢或中断MSS 钳制未配置在 WAN 防火墙区域勾选“MSS 钳制”
重启后配置丢失未保存或固件 Bug执行 uci commit;升级到最新 ImmortalWrt 稳定版

9. 补充说明

9.1 为什么不用 NPTv6?

NPTv6(IPv6 网络前缀转换)需要 /48 或更大前缀,本场景不具备条件。NAT6 是唯一可行方案。

9.2 性能影响

NAT6 会损失少量转发性能(通常 < 5%),对于家庭/小型网络可忽略不计。

9.3 与 IPv4 NAT 的区别

  • IPv6 NAT 并非标准推荐做法,但在此类“上级只给一个 /64”的环境下是合理且广泛采用的权宜方案。

10. 相关命令速查(SSH 用)

# 查看 IPv6 地址
ip -6 addr show

# 查看 IPv6 路由
ip -6 route show

# 查看防火墙 NAT6 规则
iptables -t nat -L -v -n
ip6tables -t nat -L -v -n   # 应看到 MASQUERADE 规则

# 重启防火墙
/etc/init.d/firewall restart

# 重启网络服务
/etc/init.d/network restart

PD(Prefix Delegation)模式才是标准的 IPv6 上网方式:运营商直接给路由器分配一个 /56/60 的前缀,路由器再把这个前缀分给下游设备,每个设备都拿到公网 IPv6 地址,不需要 NAT。

如果你的光猫支持 PD,想从“NAT6 模式”切换回“PD 模式”,按下面的步骤改:

步骤 1:删除 LAN 口的 ULA 地址

  • 路径:网络 → 接口 → LAN → 编辑 → 常规设置
  • IPv6 地址里的 fd91:417b:3eff::1/64 清空(或删除)

步骤 2:开启 WAN 口的 PD 委派(核心)

  • 路径:网络 → 接口 → WAN → 编辑 → 高级设置

    • 委托 IPv6 前缀:✅ 勾选
    • IPv6 分配长度:64 或留空

步骤 3:确认 WAN6 接口存在

  • 没有 WAN6 → 添加新接口(名称 WAN6,协议 DHCPv6 客户端,设备 @wan)
  • 不要勾选“委托 IPv6 前缀” (注意 wan和wan6 不一样)

步骤 4:修改 LAN 口的 IPv6 分配方式

  • 路径:网络 → 接口 → LAN → DHCP 服务器 → IPv6 设置

    • RA 服务:服务器模式
    • DHCPv6 服务:混合模式(不行再改服务器模式)
    • NDP 代理:已禁用

步骤 5:关闭 NAT6 伪装

  • 路径:网络 → 防火墙 → 区域设置 → WAN → 编辑 → 高级设置

    • IP 动态伪装:❌ 取消勾选