PassWall2 IPv6 连接失败怎么办?
简答:PassWall2 IPv6 连接失败,最快的处理顺序是:先确认路由器和客户端真的拿到可用 IPv6,再分别测试 IPv6 直连与代理出口,最后检查 PassWall2 的 IPv6 TProxy、DNS 和防火墙后端。仅打开“IPv6 TProxy”并不代表代理节点支持 IPv6;如果节点不支持,先关闭 IPv6 TProxy或让 IPv6 直连,通常比继续改规则更容易定位问题。本文适用于已安装 PassWall2 的 OpenWrt 路由器,重点覆盖路由器主路由或旁路由场景;不覆盖某个具体固件发行版的专有菜单,也不把单次 ping 或测速当作完整可用性证明。
定义:PassWall2 IPv6 连接失败,是指 OpenWrt 本地 IPv6、IPv6 透明代理或代理出口中的某一层无法建立或未按预期转发 IPv6 流量。
先做这组检查:5分钟判断是本地 IPv6 还是代理链路
这是第三方使用指南站,页面只依据 PassWall2 源码和 OpenWrt 文档整理通用排查方法。先不要同时修改 DNS、MTU、TUN 和防火墙;依次执行下面的检查,并记录哪一步失败。
| 检查目标 | 命令或位置 | 结果如何判断 |
|---|---|---|
| WAN6 地址与前缀 | ubus call network.interface.wan6 status | 应能看到 IPv6 地址、路由或前缀信息;若接口不存在或无地址,先修复 OpenWrt IPv6,不要先调 PassWall2。 |
| 路由器地址 | ip -6 addr | 至少区分链路本地地址与可路由地址;只有 fe80:: 地址不能证明具备公网 IPv6。 |
| 默认路由 | ip -6 route | 检查是否存在默认 IPv6 路由;没有默认路由时,客户端即使拿到地址也可能无法访问外网。 |
| IPv4/IPv6对照 | curl -4 -I https://目标域名curl -6 -I https://目标域名 | IPv4成功、IPv6失败,优先查本地IPv6或IPv6规则;两者都失败,再查基础节点、DNS或目标域名。 |
| PassWall2规则 | nft list ruleset | grep -Ei 'PSW2|tproxy|ip6' | OpenWrt 22.03及以后通常使用fw4生成nftables规则;如果设备使用旧防火墙,则还要核对iptables/ip6tables。 |
OpenWrt 官方文档说明,IPv6正常工作通常涉及 DHCPv6 客户端、RA/DHCPv6 服务、NDP以及 IPv6 防火墙;旁路由或只有一个上游前缀的网络,还可能需要 relay 模式。可先对照 OpenWrt IPv6 配置文档 和 IPv6 故障排查文档。
按现象分流:不要把“本地 IPv6 可用”当成“代理出口可用”
- 路由器自身的 curl -6 失败:先检查 wan6、默认路由、前缀委派、RA、DHCPv6 和 NDP。此时 PassWall2 不是第一故障点。
- 路由器 curl -6 成功,但 LAN 客户端失败:检查 LAN 是否收到 RA、DHCPv6 地址和默认路由;旁路由环境还要确认主路由是否继续广播 IPv6,以及是否存在重复的 RA/NDP 服务。
- IPv6 直连成功,开启 IPv6 TProxy 后失败:优先怀疑 TProxy 依赖、TCP 代理方式、nftables/iptables 后端或节点出口能力。PassWall2 当前源码将 IPv6 TProxy标记为实验性功能,并要求确认节点支持 IPv6。
- IPv4代理成功、IPv6绕过代理:这是典型的 AAAA 记录优先或 IPv6 未被透明代理接管。检查 PassWall2 的 IPv6 TProxy 是否启用、客户端是否拿到全局 IPv6 路由,以及 DNS 返回的 AAAA 是否被分流规则处理。
- 只有某个 App 或部分网站失败:先比较该域名的 A 与 AAAA 记录,再分别用
curl -4和curl -6测试。应用可能优先选择 IPv6,也可能使用独立的 DNS、QUIC 或自身网络栈。
关键结论是:本地网络具备 IPv6,只能证明“路由器到目标”的一段链路可能可用;PassWall2 的代理节点还必须能够处理 IPv6 连接。PassWall2 源码在启用 IPv6 TProxy 时会提示确认节点及类型支持 IPv6,不能把这个开关理解为自动提供 IPv6 出口。
PassWall2 中正确核对 IPv6 TProxy、代理方式与防火墙后端
- 进入 PassWall2 的全局或转发设置,找到源码对应的 IPv6 TProxy 选项。不同 LuCI 主题或版本的菜单层级可能略有差异,字段名以页面实际显示为准。
- 确认代理方式。PassWall2 源码在 IPv6 TProxy 启用时将 TCP Proxy Way 设为 TPROXY;普通 IPv4 转发可能显示 REDIRECT 或 TPROXY,两者不要混为一谈。
- 确认防火墙后端。OpenWrt 22.03及以后默认使用 fw4 生成 nftables 规则;PassWall2 页面也会根据检测到的组件显示 Iptables 或 Nftables 相关选项。不要在 fw4 环境直接套用旧版 iptables 脚本。
- 检查内核能力和模块。可执行
lsmod | grep -Ei 'tproxy|nft|ip6table|mangle';如果固件提供内核配置,还可执行zcat /proc/config.gz 2>/dev/null | grep -Ei 'TPROXY|NFT_TPROXY_IPV6'。某些厂商固件可能把能力编译进内核,不一定会以独立模块出现在lsmod中。 - 先只代理 TCP 做验证,暂时不要同时启用 ICMPv6 劫持、复杂 UDP 规则或多个透明代理程序。PassWall2 页面中的 Hijacking ICMPv6 是独立选项,普通网页访问验证不需要先打开。
- 保存并重启 PassWall2 后查看日志:
logread | grep -Ei 'passwall2|tproxy|nft|ipv6'。如果日志提示透明代理组件不可用,先处理依赖或切回基础代理,不要继续修改 DNS。
PassWall2 的配置源码明确区分 IPv6 TProxy、TCP Proxy Way、Iptables/Nftables 和 ICMPv6 劫持;其 nftables 脚本还会为 IPv6 TProxy创建独立的 IPv6 链和策略路由。因此,看到“服务已启动”不等于 IPv6 流量已经命中代理链。
可核对 PassWall2 页面字段源码、PassWall2 IPv6 nftables规则脚本 和 OpenWrt nftables说明。
DNS、AAAA 与分流规则:为什么网页会绕过 IPv4 代理
当 DNS 返回 AAAA 记录时,客户端可能优先连接 IPv6。如果 PassWall2 只接管了 IPv4,或 DNS 分流返回了不适合当前代理链的地址,就会出现“IPv4 正常、IPv6失败”或看似连接成功但出口不符合预期的情况。
- 先在路由器和客户端分别解析目标域名,确认是否同时存在 A 与 AAAA 记录。不要只看一个 DNS 查询结果判断全链路。
- 将测试目标固定为一个真实失败域名,分别执行
curl -4 -I https://目标域名与curl -6 -I https://目标域名。 - 如果关闭 IPv6 TProxy后 IPv4恢复、IPv6仍失败,说明问题更接近 IPv6出口或本地路由;如果关闭IPv6后整个访问恢复,则可能是客户端优先使用 AAAA 而 IPv6透明代理未接管。
- 检查 PassWall2 的直连 DNS、远程 DNS、IPv6过滤或查询策略。字段名称和可选值会随核心与版本变化,不能把某个版本的配置文件直接复制到另一套固件。
不要用“关闭 IPv6”作为唯一结论。它可以作为回滚和定位手段,但长期是否关闭要结合局域网设备、办公系统、运营商网络和应用兼容性决定。
最小改动修复顺序与安全回滚
- 先备份:保存 OpenWrt 配置,并记录当前 PassWall2 的节点、分流、DNS 与转发设置。
- 恢复基础链路:关闭 IPv6 TProxy,保留普通 IPv4 代理,确认 IPv4 网站和局域网设备恢复。
- 验证节点出口:使用同一节点分别测试 IPv4 与 IPv6;如果节点不支持 IPv6,不要强行开启 IPv6 TProxy,可暂时让 IPv6直连或在客户端侧禁用 IPv6优先。
- 只启用必要能力:先启用 IPv6 TProxy和 TCP TPROXY,暂不启用 ICMPv6 劫持、复杂 UDP规则或其他透明代理服务。
- 处理冲突:检查 OpenClash、HomeProxy、Docker、KVM、WireGuard 等是否同时写入防火墙或策略路由。发现规则重复时,一次只停用一个组件并验证。
- 最后再改 DNS:只有确认地址、路由、节点和 TProxy均正常后,才调整 AAAA、远程 DNS、FakeDNS 或分流策略。
如果修改后全网异常,立即关闭 IPv6 TProxy并重启 PassWall2;若仍未恢复,再恢复备份配置。不要直接删除防火墙配置文件,也不要把临时关闭 IPv6当作永久修复。
推荐:如果你还需要核对跨设备连接、延迟和丢包,可以使用边界云加速的网络诊断服务,把本地 IPv6、代理出口与办公网络问题分开验证。
常见问题
PassWall2 开启 IPv6 TProxy 后一定要用 TPROXY 吗?
按 PassWall2 当前页面源码,启用 IPv6 TProxy时,TCP Proxy Way 对应的是 TPROXY;普通 IPv4转发则可能提供 REDIRECT或TPROXY选项。实际可选项仍取决于固件是否检测到相关组件。
路由器有 IPv6 地址,为什么手机还是 IPv6 连接失败?
路由器有地址不等于 LAN 客户端收到正确的 RA、DHCPv6 和默认路由。请在手机或电脑上查看 IPv6 地址和默认网关,再检查 OpenWrt 的 LAN 服务模式;旁路由还要排除主路由重复广播或未转发 NDP。
关闭 IPv6 后 PassWall2恢复,是否说明节点坏了?
不能直接说明节点坏了。这个现象只表明 IPv6路径、AAAA优先级、TProxy规则或节点IPv6能力中的至少一层存在差异。应使用同一目标分别执行 curl -4 和 curl -6,再查看 PassWall2日志。
OpenWrt 22.03 以后为什么不能照搬旧 iptables 教程?
OpenWrt 官方说明 22.03及以后默认使用 fw4生成 nftables规则。旧教程中的 iptables命令可能与当前防火墙后端不一致,甚至造成规则冲突,应以当前固件的 fw4/nftables状态和 PassWall2页面实际检测结果为准。
常见问题
PassWall2 IPv6 连接失败,最先应该改哪个设置?
先不要改DNS。先关闭IPv6 TProxy并确认普通IPv4代理可用,再用ubus、ip -6 addr、ip -6 route和curl -4/curl -6判断故障属于本地IPv6、节点出口还是透明代理。
IPv6 TProxy 显示已开启,但为什么仍然泄漏?
可能是客户端直接使用IPv6、AAAA解析未按预期分流、TProxy依赖缺失,或其他防火墙组件覆盖了PassWall2规则。可用nft list ruleset和PassWall2日志确认是否存在IPv6相关链及策略路由。
PassWall2 IPv6必须关闭吗?
不是。是否关闭取决于你的网络是否提供稳定IPv6、代理节点是否支持IPv6,以及你希望IPv6直连还是走代理。关闭IPv6可以作为排查和回滚步骤,不应直接视为所有环境的长期方案。
旁路由环境为什么更容易出现IPv6连接失败?
旁路由通常涉及主路由的RA、DHCPv6、NDP和默认路由广播。如果客户端拿到的IPv6网关仍指向主路由,旁路由上的PassWall2可能无法接管流量,需要结合拓扑检查广播与策略路由。
相关阅读
参考资料
- PassWall2 页面字段与 IPv6 TProxy 源码
- PassWall2 nftables 与 IPv6 TProxy 规则源码
- OpenWrt IPv6 配置文档(openwrt.org)
- OpenWrt IPv6 故障排查文档(openwrt.org)
- OpenWrt nftables 文档(openwrt.org)