OpenWrt IPv6 中继模式配置清单(适用于上级只给 /64 前缀的情况)
目标
让 OpenWrt 在 IPv6 网络中像“交换机”一样工作,上级路由器直接给下级设备分配公网 IPv6 地址。
前提
- 上级路由器已正常下发 IPv6 前缀(即使只有
/64也可以尝试)。 - OpenWrt 的 WAN6 口能正常获取到 IPv6 地址。
注意:由于前缀只有
/64,OpenWrt 自身无法再往下划分子网。此方案的核心是 “中继模式” + “指定的主机接口(master)”。
配置步骤
1. WAN6 接口配置(中继 + 指定主机)
- 路径:
网络->接口-> 编辑WAN6 - 常规设置:协议 =
DHCPv6 客户端 - 高级设置:
- IPv6 源路由:不勾选(关键!)
- DHCP 服务器 > IPv6 设置:
- 路由通告服务:
中继模式 - DHCPv6 服务:
中继模式 - NDP 代理:
中继模式 - 学习路由:✅ 勾选
- 指定的主机接口(master):✅ 勾选(这就是你固件中的
option master '1',设置后 WAN6 将成为 RA 中继的主接口)
- 路由通告服务:
说明:“指定的主机接口” 相当于命令行中的
option master '1',作用是将 WAN6 接口设置为中继的“主”接口,确保 RA/RS 消息能被正确转发到 LAN 侧。
2. LAN 接口配置(中继 + 混合模式)
- 路径:
网络->接口-> 编辑LAN - DHCP 服务器 > IPv6 设置:
- 路由通告服务:
混合模式(同时支持服务器和中继) - DHCPv6 服务:
中继模式 - NDP 代理:
中继模式 - 学习路由:✅ 勾选
- 始终通告默认路由:✅ 勾选(核心)
- 路由通告服务:
3. 防火墙调整(放行 IPv6 转发)
- 路径:
网络->防火墙->区域-> 编辑wan - IP 动态伪装:不勾选 IPv6(如果存在单独选项)
- 入站/出站/转发:都设为 允许
- 保存并应用
4. 清理 ULA 前缀(可选但推荐)
- 路径:
网络->接口-> 全局网络选项 - IPv6 ULA 前缀:清空(避免干扰公网地址选择)
5. 重启服务(或重启路由器)
- 可通过 Web 点击“保存并应用”,或 SSH 执行:bash
/etc/init.d/odhcpd restart /etc/init.d/network restart
6. 验证
- 下级设备重连网络(或重启网卡)。
- 执行
ip addr show(Linux)或ipconfig(Windows),应看到 240e/2408 开头的公网 IPv6 地址。 - 执行
ping -6 google.com或访问test-ipv6.com测试连通性。
常见问题
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
下级设备只有 fe80:: 地址 | LAN 口的“路由通告服务”未启用混合模式,或“指定的主机接口”未勾选 | 检查 LAN 口 RA 是否设为“混合模式”,WAN6 口“指定的主机接口”是否勾选 |
| 下级设备有公网地址但无法 ping 通 | 防火墙拦截 ICMPv6,或上级路由器未放行 | 检查 OpenWrt 防火墙是否允许 IPv6 转发,必要时在上级路由器放行 ICMPv6 |
| 重启 OpenWrt 后中继失效 | option master '1' 配置丢失 | 重新进入 WAN6 的 DHCPv6 设置,确认“指定的主机接口”仍被勾选 |
补充说明
- “指定的主机接口” 在英文固件中通常显示为
Master或Main interface,位于 DHCPv6 设置页面的顶部。如果你的固件版本没有这个选项,也可以使用 SSH 手动添加:在/etc/config/dhcp的config dhcp 'wan6'块中添加一行option master '1'。 - 此方案在
/64前缀下有成功率限制,部分上级路由器(尤其是运营商定制光猫)可能完全不转发 RA/RS 消息。如果最终仍不通,可考虑退而使用 NAT6 方案。
祝网络通畅!