折腾一上午才发现:原来是 mwan3 把我的 IPv6 悄悄丢进了黑洞——一次 OpenWrt IPv6 假连通排障实录
摘要
WAN6、DHCPv6、Prefix Delegation 全部正常,OpenWrt 却始终无法访问公网 IPv6。本文记录一次真实的 OpenWrt IPv6 假连通故障排查过程,并解释为何 mwan3 残留策略路由会让 IPv6 流量掉进 blackhole。
本文目录
折腾一上午才发现:原来是 mwan3把我的 IPv6悄悄丢进了黑洞
很多人判断 IPv6是否正常,往往只看 WAN6有没有拿到公网地址、Prefix Delegation(PD)是否成功下发,或者 AAAA记录能否正常解析。但一次真实的排障经历说明:这些指标全部正常,并不代表 IPv6真正可用。

这次故障发生在一台运行 eSir OpenWrt的家庭网关上。运营商为中国电信,光猫桥接,OpenWrt负责 PPPoE拨号,下游连接华硕 AP和多台终端设备。表面上看,整个 IPv6配置没有任何异常,但公网 IPv6访问始终失败。最终发现,真正的问题并不在运营商,也不在 DHCPv6,而是一个早已被遗忘的 mwan3组件。
故障现象:所有指标正常,唯独无法访问 IPv6
最初发现问题的方式非常简单:
ping6 ipv6.google.com结果持续超时。按常规思路检查后发现:
- WAN6已成功获取公网 IPv6地址
- DHCPv6工作正常
- Prefix Delegation成功下发前缀
- DNS可以正常解析 AAAA记录
- traceroute6已经能够进入运营商骨干网络
如果只看这些指标,大多数人都会认为 IPv6已经完全恢复正常。然而现实情况却是:IPv6实际不可用。
为什么这类问题特别容易误判
很多用户对 IPv6连通性的理解仍停留在“拿到地址就算成功”的阶段。实际上,一个完整的 IPv6通信过程至少涉及多个环节:
- 获取公网 IPv6地址
- 获取 Prefix Delegation前缀
- LAN正确广播 IPv6信息
- DNS返回 AAAA记录
- 路由表存在正确出口
- 策略路由不拦截流量
- 防火墙允许相关数据包通过
只要其中任意一个环节出现问题,都可能导致最终访问失败。而本次故障最大的迷惑性在于:前面几个环节全部正常。
排查思路:从运营商一路怀疑到自己
在发现 ping6完全不通后,首先怀疑的是运营商侧问题。随后检查光猫桥接配置、PPPoE拨号状态、IPv6前缀获取情况,均未发现异常。
继续检查 OpenWrt网络配置、DHCPv6参数以及 DNS设置,同样没有发现明显错误。由于 traceroute6已经能够看到运营商骨干网节点,因此网络似乎又不像完全中断。这种“看起来正常、实际上不通”的状态,让排查过程变得异常困难。
真正的问题:mwan3遗留策略路由
转折点来自对系统路由策略的进一步检查。执行:
ip -6 rule发现系统中存在与 fwmark、blackhole、unreachable相关的 IPv6策略路由规则。
继续检查:
ip6tables-save发现大量 mwan3自动生成的规则链。最终确认系统中仍安装着:
mwan3
luci-app-mwan3虽然当前网络环境已经不存在多 WAN或负载均衡需求,但这些遗留规则仍然参与 IPv6流量决策。
mwan3到底是什么
mwan3是 OpenWrt中常见的多线路管理组件(Multi WAN Manager)。它主要用于:
- 双 WAN接入
- 多运营商出口
- 负载均衡
- 故障自动切换
- 基于策略的流量分流
其核心机制是利用防火墙标记(fwmark)与策略路由(Policy Routing)控制不同流量走向不同出口。
当配置完整且维护得当时,mwan3十分强大。但如果曾经启用过多 WAN、测试过负载均衡,随后又修改网络结构,却没有同步清理相关配置,就可能留下失效规则。对于 IPv6而言,这些规则有时会把数据包导向 blackhole(黑洞路由)或 unreachable(不可达路由),导致流量在本机就被直接丢弃。
为什么 traceroute6正常而 ping6失败
这是本次故障最容易让人困惑的地方。策略路由问题并不一定会影响所有类型的数据包。不同协议、不同目的地址、不同标记状态下,流量可能匹配不同规则。因此可能出现:DNS正常、traceroute6正常、部分 IPv6网站可访问,以及 ping6全部失败。这种状态通常被称为“假连通”。从用户视角来看,网络似乎已经恢复;但从实际业务角度看,IPv6仍然处于异常状态。
最终解决方案
确认问题来源后,处理方式非常直接:停止服务:
/etc/init.d/mwan3 stop关闭开机启动:
/etc/init.d/mwan3 disable重启网络:
service network restart随后再次验证:
ping6 ipv6.google.com
ping6 240e:42.....
curl -6 ip.sbIPv6连通性恢复正常。
排查 OpenWrt IPv6时值得优先检查什么
如果遇到类似情况,可以按照以下顺序检查:
- `ip -6 addr` 查看地址是否正常获取
- `ip -6 route` 查看默认路由是否存在
- `ip -6 rule` 查看是否存在异常策略路由
- 检查 mwan3是否仍在运行
- 检查防火墙自定义规则
- 使用 `curl -6 ip.sb` 验证实际出口
- 使用多个目标地址交叉验证
相比单纯查看 WAN6状态,这些检查更容易发现隐藏问题。
写在最后
这次故障最大的启示是:IPv6是否正常,不能只看地址是否获取成功。WAN6有地址,不代表 IPv6正常;PD下发成功,不代表 IPv6正常;DNS能解析 AAAA记录,也不代表 IPv6真正可用。真正的 IPv6连通性依赖地址获取、路由表、防火墙、策略路由以及出口路径共同工作。
对于长期折腾 OpenWrt的用户来说,最危险的往往不是当前配置,而是那些早已忘记、却仍然在后台发挥作用的历史配置。mwan3本身并不是问题,但当网络结构已经发生变化时,残留的策略路由规则很可能成为排查过程中最容易被忽略的“隐形故障源”。