高墙之外❤️

PassWall2 规则不生效怎么办?按流量、规则、DNS 四层排查

更新于 2026-10-30 · passwall.lol

简答:PassWall2 规则不生效,最快的处理顺序是:先切换到全局代理确认节点可用,再确认终端网关确实指向 PassWall2,随后检查规则是否保存并加载,最后排查默认出口、DNS、IPv6 和浏览器安全 DNS。若服务在运行但所有流量都绕过代理,优先检查防火墙规则是否生成,而不是继续增加分流条目。

定义:PassWall2 规则不生效,是指服务或核心可能显示运行,但目标流量没有按预期进入对应的代理、直连或阻断出口。

先做最小化测试:三分钟判断故障在哪一层

本站是第三方使用指南站,不是 PassWall2 官方站。PassWall2 本身是一个 OpenWrt LuCI 代理应用,具体菜单、核心和防火墙行为可能随版本与系统组合变化,应以你当前页面和日志为准。项目仓库可在PassWall2 公开仓库核对代码、版本和问题记录。

现象优先判断先做什么
全局代理也不能访问目标站点节点、核心或基础连通性暂时不看分流规则,检查核心日志和节点连通性
全局代理正常,分流模式失效规则未加载、顺序不对或默认出口错误只保留一条测试域名规则,保存并应用后重新验证
部分设备有效,部分设备直连网关、DHCP、旁路由或访问控制核对客户端 IP、网关和 DNS 是否指向运行 PassWall2 的设备
日志显示服务运行,但全部流量绕过透明代理的防火墙或路由规则未生成按 fw4/nftables 或 fw3/iptables 检查规则链
域名规则像是不生效,IP 访问结果不同DNS、IPv6、DoH/DoT 或域名解析方式先关闭浏览器安全 DNS 和 IPv6 做对照测试

最短路径:把当前模式临时改成全局代理,选择一个确认可用的节点,保存并应用,然后从同一台客户端测试。如果全局代理仍失败,继续改规则通常没有意义;如果全局代理成功,再回到单条规则验证。

第一层:确认流量真的经过 PassWall2

  1. 在客户端查看 IPv4 地址、默认网关和 DNS 服务器。网关应指向运行 PassWall2 的主路由或旁路由;如果客户端仍把另一台设备作为网关,规则不会按预期接管。
  2. 如果使用旁路由,检查 DHCP 是否由正确设备提供,或确认客户端手动填写的网关、DNS 与旁路由方案一致。只把 DNS 指向旁路由,不等于所有 TCP/UDP 流量都会经过旁路由。
  3. 临时只测试一台设备,关闭该设备上的其他代理客户端、浏览器代理、VPN、DoH/DoT 和系统级网络加速功能,避免多个接管组件同时修改流量。
  4. 在路由器 SSH 中查看接口与路由:ip addr、ip route。这些命令只能证明接口和路由状态,不能单独证明透明代理已经生效。

如果只有某个 IP 地址或 MAC 地址不生效,优先检查访问控制、客户端分组和源地址字段。公开 issue 中曾记录过访问控制字段未正确传递,导致服务启动失败并进入 no proxy mode 的情况,遇到类似现象可先关闭访问控制做对照,而不是直接重建全部规则:PassWall2 issue #1250。

第二层:确认规则已保存、加载,并没有被更早规则覆盖

分流排查不要一开始就同时启用大量域名、IP、GeoSite、GeoIP 和自定义规则。先建立一个最小案例:只保留一个明确的测试域名、一条目标出口和一个默认出口,点击保存并应用,再重启 PassWall2 服务。

  1. 确认规则开关已启用,目标域名没有多余空格、协议头或路径;规则通常匹配域名或地址,不应把完整网址直接当作域名条目。
  2. 确认该规则的去向是实际存在的代理节点、节点组或直连出口。关闭、禁用、未选择和直连不是同一个概念,页面显示的字段应以当前版本为准。
  3. 把测试规则放在更容易观察的位置,并暂时删除或禁用可能覆盖它的泛域名、默认直连、访问控制和黑名单规则。不同核心或版本的具体优先级可能不同,不要仅凭界面上下顺序推断结果。
  4. 每次只改一个变量:先改单条域名,再测 IP 规则,再恢复 GeoSite/GeoIP。每次保存后记录日志,避免无法判断是哪一次修改改变了结果。

实用判断是“命中后是否还继续向下匹配”。若某条规则已经把流量送入一个出口,后面的同类规则通常不会再改变该流量,但具体行为取决于 PassWall2 生成的配置及所选核心。因此应以生成配置、运行日志和实际连接结果交叉验证,而不是把“默认节点”理解为一定会覆盖所有规则。

如果修改规则后服务直接无法启动,先导出或复制当前配置,再恢复到最后一个能启动的版本或配置,随后逐条加回规则。公开 issue 曾记录修改管理规则后服务无法启动、日志进入防火墙规则加载阶段的案例:PassWall2 issue #580。

第三层:检查核心、规则文件与防火墙是否真的生成

PassWall2 的“服务运行”不等于透明代理链路完整。尤其在 OpenWrt fw4/nftables 环境,应把核心进程、PassWall2 生成的防火墙规则和客户端流量分开检查。

  1. 先在 PassWall2 页面确认实际使用的是 Xray、sing-box 或其他已安装核心,并检查核心路径、版本和配置生成是否报错。
  2. 查看系统日志与 PassWall2 日志,重点搜索 error、failed、parse、rule-set、nft、iptables、permission 和 no proxy。
  3. fw4/nftables 环境可执行 nft list ruleset,观察是否存在与透明代理、重定向、标记或集合相关的规则;旧版 fw3/iptables 环境可对照执行 iptables -t nat -S 与 iptables -t mangle -S。命令输出为空或完全没有对应链,说明应先处理规则生成,而不是继续调整域名。
  4. 如果使用 GeoIP 或 GeoSite,确认规则文件下载、路径和格式与当前核心匹配。Xray 常见的是 dat 类规则文件,sing-box 可能使用 rule-set 或 srs 类文件;具体文件名和路径必须以当前生成配置及日志为准,不能把一种核心的文件直接套到另一种核心。
  5. 切换核心后重新保存并应用,再查看日志。如果切换后出现“找不到规则集”“解析规则集失败”或类似错误,先切回原来能工作的核心验证,随后按当前核心要求重新生成规则文件。

升级后出现“核心启动成功但所有流量绕过”的故障,应特别检查防火墙和路由规则是否应用。PassWall2 仓库的 issue #1219 记录了 26.8.10-r1 环境下服务与核心启动、但防火墙和路由规则未应用的报告;该记录还提到回退到此前版本后现象恢复。你的版本是否受影响不能仅凭该案例判断,应以实际日志和发布说明为准:PassWall2 issue #1219。

第四层:DNS、IPv6 和浏览器安全 DNS 造成的绕过

域名规则与 IP 规则可能依赖不同的解析路径。假如浏览器先通过自身 DoH 解析,或客户端优先使用 IPv6,而 PassWall2 只接管了另一条路径,就可能出现“规则看起来正确但访问结果不一致”。这时不要把单次 DNS 查询结果当成完整可用性证明。

  1. 临时关闭浏览器的安全 DNS/DoH,关闭其他 DNS 代理程序,仅保留一套 DNS 路径,再测试同一域名。
  2. 分别测试 IPv4 和 IPv6。可用 nslookup example.com、nslookup -type=AAAA example.com 查看解析结果;若 IPv6 路径绕过规则,临时关闭客户端 IPv6 或在 PassWall2 中明确配置 IPv6 策略,再进行对照。
  3. 检查 PassWall2 页面中的直连 DNS、远程 DNS、FakeDNS、DNS 分流和监听端口是否互相冲突。若日志显示 DNS 监听端口被占用,先解决端口冲突并重启服务。
  4. 确认域名规则命中的是域名还是解析后的 IP。若域名被解析并重写,IP 规则可能与域名规则产生不同结果;最稳妥的办法是先用单条域名规则验证,再分别关闭 GeoIP、GeoSite、FakeDNS 和 IPv6 做二分测试。

完成每一项改动后都要保存、应用并记录回滚方式。不要同时修改 DNS、MTU、核心和规则顺序,否则即使结果改变,也无法知道真正原因。

升级或改坏后的恢复顺序

  1. 备份:导出 PassWall2 配置,至少保存节点、规则、DNS、访问控制和核心选择信息。
  2. 回到最小配置:关闭复杂规则、GeoIP/GeoSite、访问控制、IPv6 透明代理和额外 DNS 功能,只保留一个节点与基础分流。
  3. 重启并验证:重启 PassWall2 服务,确认核心进程、日志、防火墙规则和单台客户端访问结果。
  4. 逐项恢复:先恢复单条域名规则,再恢复规则集、访问控制、IPv6 和浏览器端设置,每次只恢复一类。
  5. 版本回退:若故障明确发生在升级后,记录当前版本、核心版本和系统版本,再依据公开发布记录或仓库 issue 确认是否存在相似问题;不要直接删除配置文件。回退前保留备份,回退后重新保存并应用。

如果服务进入 no proxy mode、启动脚本在规则加载阶段停止,或者 nftables/iptables 中完全没有透明代理相关规则,优先恢复到最近一次可工作的配置并重新生成规则。不要用“能打开某个网页”作为唯一判断标准,至少同时检查核心日志、规则链和另一台客户端。

常见问题

PassWall2 全局代理正常,分流模式却不生效,最可能是什么?

通常先查规则是否保存并加载、测试域名是否被更早规则覆盖,以及默认出口是否被设为直连。把规则缩减为一个域名和一个目标出口,保存应用后再测,是最快的定位方法。

PassWall2 页面显示运行,为什么流量仍然直连?

核心进程运行只说明核心启动,不代表透明代理规则已经生成。检查 nft list ruleset 或对应的 iptables 规则;如果没有相关链、集合或重定向规则,应先查防火墙加载日志。

切换 sing-box 后规则不生效怎么办?

先切回原来能工作的核心做对照。如果日志出现规则集格式、路径或解析错误,检查当前核心实际需要的规则文件和生成配置,不要直接复用另一核心的规则文件。

只让某些设备走规则,其他设备不生效怎么办?

核对这些设备的默认网关、DNS、IP 地址和 DHCP 来源,再临时关闭访问控制做对照。若关闭后恢复,重点检查访问控制中的源 IP、MAC 和规则关联字段。

为什么电脑有效,手机却绕过 PassWall2?

常见原因是手机使用了不同的 DNS、IPv6 或私有 DNS,也可能没有把路由器作为默认网关。先在手机上关闭私有 DNS/其他代理,确认 Wi-Fi 下的网关与 DNS,再进行单设备测试。

结论与参考资料

PassWall2 规则不生效时,按“流量是否进入 PassWall2—规则是否加载—规则是否命中—DNS/IPv6 是否绕过”的顺序排查,比反复增加规则更可靠。无法从日志和规则链确认的版本差异,不要强行套用其他教程;以当前页面、生成配置和公开 issue 为准。

本文核对的资料包括:PassWall2 项目仓库、规则与防火墙未应用问题记录、访问控制导致服务进入 no proxy mode 的问题记录、修改管理规则后无法启动的问题记录。资料核对日期为 2026-10-30。

常见问题

PassWall2 全局代理正常,分流模式却不生效,最可能是什么?

先查规则是否保存并加载、测试域名是否被更早规则覆盖,以及默认出口是否为直连。缩减为一个域名和一个出口后重新应用。

PassWall2 显示运行但流量仍然直连怎么办?

检查核心进程之外的透明代理规则。fw4/nftables 环境执行 nft list ruleset,旧版环境再检查对应 iptables 规则。

切换 sing-box 后规则不生效怎么办?

先切回原来能工作的核心做对照,再根据日志检查规则集格式、路径和生成配置,不能直接复用另一核心的规则文件。

手机绕过规则而电脑正常怎么办?

核对手机的默认网关、DNS、IPv6、私有 DNS 和其他代理设置,并先关闭私有 DNS 做单设备测试。

相关阅读

参考资料

  1. PassWall2 项目仓库
  2. PassWall2 issue #1219:服务启动但规则与防火墙未应用
  3. PassWall2 issue #1250:访问控制导致服务进入 no proxy mode
  4. PassWall2 issue #580:修改管理规则后无法启动