PassWall 排查问题怎么做?从断网、DNS到分流异常逐层定位
简答:PassWall 排查问题应按“基础网络→节点与核心→DNS→分流规则→IPv6/UDP→防火墙”顺序进行。先在 OpenWrt 的“网络→诊断”中测试网关、IP 和域名,再查看 PassWall 日志与 DNS 状态;只有确认本地网络、解析和规则都正常后,才判断是否需要更换节点。
定义:PassWall 排查问题,是把路由器联网故障拆成基础链路、代理核心、DNS、分流、协议和防火墙多个层级,逐层验证并保留可回滚改动的诊断方法。
先看这张排查表:不要把所有问题都当成节点故障
本站是第三方使用指南站,不是任何客户端或插件的官方站点。PassWall 出现断网时,建议先保持当前配置不变,记录故障时间、受影响设备、访问失败的域名以及 PassWall 日志,再按下表从上到下检查。
| 现象 | 先检查什么 | 通常如何判断 | 优先处理 |
|---|---|---|---|
| 路由器本身无法访问网络 | WAN 地址、默认网关、网关与公网 IP | 连基础网络都不通,尚未进入 PassWall 排查范围 | 先修复 OpenWrt 网络接口或上游线路 |
| IP 能通但域名打不开 | nslookup、DNS 服务状态、53 端口占用 | IP 测试成功而域名解析失败,优先看 DNS | 检查 dnsmasq、PassWall DNS 与第三方 DNS 组件 |
| 只有部分网站或应用失败 | 代理模式、规则列表、TCP/UDP 要求 | 直连和代理路径结果不同,通常是分流或协议差异 | 先做单域名规则验证,不要立即改全局配置 |
| 所有节点测试失败 | 订阅内容、节点域名解析、核心日志 | 多个节点同时失败,优先怀疑订阅、DNS或核心启动 | 查看日志后再更新订阅或切换核心 |
| 运行数小时后断流 | DNS 是否仍显示运行中、自动切换日志、服务重启记录 | 若重启主开关后恢复,需重点检查自动切换与 DNS 链路 | 先关闭自动切换复测,保留日志 |
OpenWrt 官方建议先使用“网络→诊断”进行连通性测试,也可以通过 SSH 执行 ping;官方文档同时建议使用 logread 查看系统日志。可参考 OpenWrt Internet connectivity and troubleshooting 与 OpenWrt 日志查看说明。
第一层:先确认不是 OpenWrt 或上游网络断了
现象
开启或关闭 PassWall 后,路由器和局域网设备都无法联网,或者管理页面能打开但 WAN 没有有效地址。
检查
- 进入 LuCI 的“网络→接口”,打开 WAN,记录 IPv4 地址、默认网关和 DNS。
- 进入“网络→诊断”,分别测试默认网关、一个公网 IP 和一个域名。
- 通过 SSH 执行
ip route、ping -c 4 网关地址、ping -c 4 1.1.1.1、ping -c 4 openwrt.org。 - 执行
logread -e netifd,查看接口是否反复 up、down 或重新获取地址。
判断
网关都无法到达,优先检查网线、上游路由、WAN 配置或地址冲突;公网 IP 能通而域名不通,转到 DNS 层;只有经过代理的目标失败,才进入节点和分流层。
处理
先暂时关闭 PassWall 主开关,确认普通直连是否恢复。若关闭后仍不能访问,修复 WAN 或上游网络;若关闭后恢复,记录 PassWall 状态和日志,再继续下一层检查。
回滚
只恢复最近一次改动,不要同时重置 DNS、规则和防火墙。若无法确定改动内容,可导出当前配置后再恢复上一个已知可用的配置备份。
第二层:DNS 解析失败、DNS 未运行与第三方组件冲突
现象
网页提示找不到域名,节点域名无法解析,或者 PassWall 页面中的 DNS 状态显示“未运行”。也可能出现 IP 地址可访问,但域名访问失败。
检查
- 在路由器 SSH 中执行
nslookup openwrt.org 127.0.0.1,再执行nslookup openwrt.org,比较本机 DNS 与系统默认 DNS 的结果。 - 检查“网络→DHCP/DNS”中的 dnsmasq 是否正在运行,并确认没有其他服务占用本地 DNS 监听端口。
- 查看 PassWall“基本设置”中的 DNS 分流模式、直连 DNS、远程 DNS 和默认 DNS;修改前先截图或导出配置。
- 执行
logread -e dnsmasq与logread -e passwall,重点看上游超时、解析失败、端口占用和服务反复重启。
判断
OpenWrt 默认使用 dnsmasq 提供下游 DNS/DHCP 服务,DNS 通常涉及 UDP 和 TCP 53 端口,具体说明见 OpenWrt DHCP 与 DNS 配置文档。如果本地 DNS 查询失败,先解决服务或端口问题;如果本地查询成功但代理目标仍打不开,再检查远程 DNS 和分流规则。
PassWall 的公开讨论中给出了最小化 DNS 配置思路,也提醒第三方 DNS 组件的上游连接可能影响整个路由器。该讨论属于社区经验,不等于所有版本的固定默认值,菜单名称和可选项应以当前版本界面为准,可参考 PassWall 常见问题问与答合集。
处理
- 先暂时停用额外的 DNS 转发组件,只保留 OpenWrt 自带 dnsmasq 与 PassWall 内置分流进行复测。
- 在 PassWall DNS 页面使用当前版本提供的基础分流选项,填写可解析的直连 DNS 与远程 DNS。
- 点击“保存&应用”后,再执行两次
nslookup,确认结果不再超时。 - 若只有某个域名错误,将其加入对应的直连或代理列表进行单域名验证,不要一次性改整套规则。
回滚
若改动后所有设备都无法解析,立即恢复原 DNS 组件配置,关闭刚添加的转发服务,并重启对应服务。不要在没有备份的情况下直接删除 /etc/config/dhcp 或防火墙配置。
第三层:节点、核心与分流规则要分开判断
现象
节点列表存在但全部测试失败,或者只有某些网站、游戏、语音应用无法连接;也可能出现测速结果正常,但实际网页打不开。
检查
- 先确认订阅更新时间、节点域名、端口、协议参数和 TLS/SNI 等字段是否仍完整;不要把“节点显示在列表中”当成“节点一定可用”。
- 查看 PassWall 日志,区分核心未启动、节点连接失败、DNS 解析失败、TLS 握手失败和规则未命中。
- 将模式临时改为当前版本支持的简单模式,选择单个节点,关闭自动切换,保存后只测试一个目标地址。
- 对游戏、语音或其他实时应用,单独确认出口是否支持 UDP;网页能打开不代表 UDP 一定可用。
判断
多个节点同时无法解析,优先检查 DNS 或订阅;单个节点连接失败,检查节点参数和出口;网页正常而实时应用失败,重点检查 UDP、核心实现和分流规则。PassWall 社区讨论将 UDP 异常归因于出口不支持、网络不稳定或所选核心行为差异,这些只能作为排查线索,最终仍应以日志和替换测试为准。
处理
- 关闭自动切换,固定一个节点并保存,避免自动切换同时改变节点、DNS 和防火墙状态。
- 将一个明确需要代理的域名加入代理列表,将一个明确需要直连的域名加入直连列表,分别测试。
- 如果只有特定应用失败,记录其使用的协议和端口,再判断是 TCP、UDP 还是 DNS 问题。
- 若日志显示核心启动失败,先核对核心文件、架构和权限;版本或核心兼容性无法从现有资料确认时,标记为“需核实”,不要凭经验更换版本。
回滚
测试完成后恢复原来的代理模式、节点选择和规则列表。若固定节点有效、自动切换无效,先保留固定节点运行并保存自动切换日志,随后再单独验证自动切换。
第四层:间歇性断流、IPv6 和防火墙规则
间歇性断流:现象→检查→判断→处理→回滚
现象:运行一段时间后网页大量打不开,PassWall DNS 显示未运行,重新切换主开关后暂时恢复。
检查:立即保存 logread 输出,搜索 passwall、dnsmasq、nft 和 restart;同时查看是否存在自动切换、自动更新规则或定时重启记录。
判断:公开 Issue #3409 记录了自动选择节点时出现不定期断连、DNS 显示未运行和反复切换节点的现象,但该 Issue 只代表具体报告,不能直接推断所有设备都有同一原因,可参考 PassWall Issue #3409:不定期断连。
处理:先关闭自动切换和自动更新规则,固定单节点复测;若问题消失,再一次只开启一个自动功能,观察日志变化。
回滚:恢复原有定时任务和节点策略,保留故障前后的日志,必要时联系维护者或服务提供方。
IPv6:现象→检查→判断→处理→回滚
现象:IPv4 访问正常,但启用 IPv6 的设备打不开目标,或部分应用优先使用 IPv6 后表现异常。
检查:在客户端执行 ping -6 或查看 IPv6 地址;在 LuCI“网络→接口”确认 WAN 和 LAN 是否获得有效 IPv6;再检查 PassWall 高级设置中的 IPv6 透明代理、TCP 代理方式和防火墙组件。
判断:本地没有有效 IPv6 或出口不支持 IPv6 时,仅勾选代理选项不能解决问题。公开讨论也提到 IPv6 透明代理与固件防火墙模块、其他网络软件之间可能存在兼容性条件,具体版本需核实。
处理:先关闭客户端的 IPv6 或在 PassWall 中暂时不代理 IPv6,确认 IPv4 路径正常;确认本地和出口均支持后,再按当前版本界面逐项启用。
回滚:撤销 IPv6 透明代理改动,恢复原有 WAN、LAN 和防火墙设置。
防火墙:不要用旧版命令直接套用
OpenWrt 22.03 及以后默认使用 firewall4,并以 nftables 作为后端;官方文档说明了 firewall4 与旧版 firewall3 的区别,见 OpenWrt Firewall overview 与 OpenWrt Firewall configuration。因此排查时先执行 fw4 print 或 nft list ruleset 查看实际规则,再判断是否存在 PassWall 相关链或规则。规则缺失时,先在 PassWall 中重新“保存&应用”并查看日志,不要直接套用只适用于旧版 firewall3 的命令。
回滚:修改防火墙前备份 /etc/config/firewall;如果保存后 LAN 全部断网,通过本地 SSH 或安全的管理入口恢复备份,再重载防火墙。
一套可复制的收尾判断:什么时候换节点,什么时候继续查本机
- 换节点前:确认 WAN、网关、公网 IP、DNS 和核心均已正常。
- 优先查本机:多个节点同时失败、所有域名都无法解析、PassWall DNS 未运行、服务反复重启或防火墙规则未加载。
- 优先查节点:只有一个节点失败,其他节点和同一客户端配置均能正常连接。
- 优先查分流:直连网站正常,只有特定域名、应用或协议失败。
- 联系服务提供方前:准备故障时间、节点名称、错误日志、是否仅 UDP 失败、是否关闭 PassWall 后恢复,以及固定节点与自动切换的对比结果。
如果问题在关闭 PassWall 后仍然存在,它就不应继续被归类为 PassWall 故障;如果只有 PassWall 开启后出现问题,则应保留最小复现配置,避免同时修改 DNS、规则、核心和防火墙。
常见问题
PassWall 开启后完全断网,第一步应该做什么?
先关闭 PassWall 主开关,进入“网络→接口”确认 WAN 地址和网关,再在“网络→诊断”测试网关、公网 IP 与域名。若关闭后仍无法访问,优先排查 OpenWrt 或上游网络;若关闭后恢复,再检查 DNS、核心和防火墙。
PassWall 节点测速正常,为什么网页还是打不开?
测速通常只能说明某个测试目标在某条路径上有响应,不代表 DNS、分流规则、TLS、IPv6 和网页实际访问都正常。应固定单节点,先执行域名解析测试,再分别验证直连列表、代理列表和客户端实际访问路径。
DNS 显示未运行,是否一定是节点失效?
不一定。DNS 未运行可能与 dnsmasq、上游 DNS 超时、端口占用、第三方 DNS 组件或服务重启有关。先查看 <code>logread -e dnsmasq</code> 和 PassWall 日志,并测试 <code>nslookup</code>,确认解析层后再判断节点。
PassWall 只有游戏或语音应用无法使用,网页正常,怎么判断?
先确认应用是否依赖 UDP,再确认所选出口是否支持 UDP;同时检查分流规则是否只覆盖 TCP。网页正常不能证明 UDP 路径正常,建议固定节点、关闭自动切换并进行单应用复测。
OpenWrt 防火墙排查应使用 iptables 还是 nftables?
先根据 OpenWrt 版本确认防火墙后端。OpenWrt 22.03 及以后默认使用 firewall4 和 nftables,建议查看 <code>fw4 print</code> 或 <code>nft list ruleset</code>;旧版环境才可能以 firewall3/iptables 为主,具体以设备实际安装情况为准。
相关阅读
参考资料
- OpenWrt Internet connectivity and troubleshooting(openwrt.org)
- OpenWrt Logging messages(openwrt.org)
- OpenWrt DHCP and DNS configuration(openwrt.org)
- OpenWrt Firewall overview(openwrt.org)
- OpenWrt Firewall configuration(openwrt.org)
- PassWall 常见问题问与答合集 #3480