高墙之外❤️

PassWall2 分流规则教程:可复制模板、语法优先级与不生效排查

更新于 2026-11-04 · passwall.lol

简答:PassWall2 分流规则最稳妥的配置顺序是:内网直连 → 指定服务例外 → 国内域名/IP直连 → 默认代理。特别是指定服务如果也被 geosite:cn 命中,必须把它放在国内直连规则之前,否则可能提前走直连。先用一个单节点和一条明确的 domain 或 full 规则验证,再逐步加入 geosite、geoip、IPv6 和其他高级选项。

定义:PassWall2 分流规则,是根据域名、目标 IP、网络协议或规则资源,把流量交给直连、代理、黑洞或指定节点处理的一组匹配条件。

先照抄这套最小规则,再验证是否命中

本文是 PassWall2 使用指南,不是该项目或相关软件的官方页面。由于固件、PassWall2 版本和所选内核会影响字段名称,以下路径以当前 LuCI 页面中能看到的实际选项为准。

如果你的目标是“局域网直连、指定服务走代理、国内网站直连、其余流量走默认代理”,建议先进入 服务 → PassWall2 → 节点列表,编辑或新建一个分流节点。上游配置示例使用 protocol '_shunt' 创建分流节点,并设置 default_node、domainStrategy、domainMatcher 和 shunt_group 等字段。可查看 PassWall2 上游默认配置示例。

推荐的最终规则顺序
顺序规则用途匹配示例目标
1路由器、局域网和保留地址192.168.0.0/16、10.0.0.0/8、172.16.0.0/12直连
2必须指定代理的服务例外full:api.example.com、domain:example.com指定单节点或节点组
3国内域名geosite:cn直连
4国内 IPgeoip:cn直连
5未命中流量不填写匹配条件默认代理节点

这里的“顺序”是配置模板的安全排列方式,不等于所有版本和内核都保证按照 LuCI 表格的视觉顺序逐条停止匹配。PassWall2 会把规则写入当前分流节点,Xray 与 sing-box 再按各自生成的配置处理;因此,必须通过日志或实际连接结果验证,而不能只看页面上的行号。

  1. 先确认一个普通节点可以单独启动。
  2. 新建分流节点,协议或类型选择当前页面提供的分流选项。
  3. 把默认节点设置为已经验证可用的单节点;不要一开始就使用负载均衡组。
  4. 添加上表中的内网、指定服务、国内域名和国内 IP 规则。
  5. 点击保存并应用,只测试一个局域网地址、一个指定域名和一个国内域名。

规则管理页面的字段应该怎么填

在当前上游 LuCI 代码中,分流表会显示每条规则对应的目标节点,并额外提供默认节点、直连、黑洞、FakeDNS 和预代理等选项。规则所在的分流组由 shunt_group 控制;只有属于当前分流组的规则才会被放入该分流节点。可查看上游分流页面字段实现。

PassWall2 常见字段对照
界面字段或配置项作用填写建议
分流节点承载默认节点和规则映射先选择一个明确支持的分流类型,不要把规则写在未被主节点引用的节点上
默认节点处理未命中的流量选择已单独验证可用的节点;官方默认配置中对应 default_node
规则组决定哪些规则被当前分流节点加载检查规则的 group 是否与分流节点的 shunt_group 一致
网络协议限制 TCP、UDP 或两者网页先用 TCP;实时通信场景再确认是否需要 UDP
域名列表按域名或域名资源匹配每行一个条目,先使用明确的 full: 或 domain:
IP 列表按 IP、CIDR 或 geoip 资源匹配先用内网 CIDR 验证,再加入 geoip:cn
目标节点决定直连、代理或阻断先选“直连”或单节点;黑洞和节点组留到规则验证后

上游示例还展示了 domain_list、ip_list、network 和 group 等配置项,并将 geosite:cn、geoip:cn、CIDR 和普通域名写入这些列表。字段是否在当前版本直接显示为中文名称,需以实际 LuCI 页面为准。

domain、full、geosite、geoip、CIDR 怎么区分

以下是 PassWall2 上游默认配置中能直接看到的示例和常见对照。它们不能简单视为所有 Xray、sing-box 版本都完全等价的通用语法;尤其是高级匹配和远程 rule-set,必须先看当前页面帮助、生成配置或日志。

规则语法与核验边界
写法通常填写位置适用场景使用前注意
full:api.example.com域名列表只针对一个明确完整域名适合最小复现;当前字段是否保留该前缀需核对生成配置
domain:example.com域名列表覆盖一个域名及其常见子域名范围比 full: 大,误匹配时先改用 full:
geosite:cn域名列表按 geosite 数据中的分类匹配需要规则资源存在并被当前内核加载;不能只看文件名判断成功
geoip:cnIP 列表按 geoip 数据中的地址分类匹配域名解析后的 IP、IPv4/IPv6 和内核策略都会影响结果
192.168.0.0/16IP 列表局域网、保留网段或已核实地址段适合最小验证,避免一开始引入大型规则资源
regexp:可能出现在域名匹配字段具有稳定命名规律的一组域名当前上游默认配置未把它作为基础示例;是否可直接填写需核对当前内核与生成配置

PassWall2 当前分流页面在 Xray 类型下提供 domainStrategy 和 domainMatcher。其中 AsIs 只按域名路由,IPIfNonMatch 会在域名规则未命中后解析 A 或 AAAA 再重新尝试,IPOnDemand 则在存在 IP 规则时解析域名。页面同时提供 hybrid 和 linear 两种域名匹配选项。具体选项和说明以当前上游代码为准。

关于 Xray 和 sing-box:PassWall2 同时支持两类内核,但不能据此推断同一条规则在两个内核中具有完全相同的解析、资源和匹配行为。官方默认配置同时包含 Xray 分流字段以及 sing-box 相关的远程 rule-set 示例,因此更稳妥的做法是:先用 full:、domain: 和 CIDR 建立最小闭环,再逐步测试 geosite:、geoip: 或远程规则。可对照当前上游默认配置中的字段。

三套可复制模板:基础、指定服务与单节点验证

下面的内容是填写对照,不是可以不经修改直接导入所有固件的 UCI 文件。节点名称、规则组名称和目标节点必须替换成当前页面中的实际值。

模板一:内网直连,其他流量默认代理

  • 规则一:内网直连:IP 列表填写 192.168.0.0/16、10.0.0.0/8、172.16.0.0/12,目标选择直连。
  • 规则二:国内域名直连:域名列表填写 geosite:cn,目标选择直连。
  • 规则三:国内 IP 直连:IP 列表填写 geoip:cn,目标选择直连。
  • 默认节点:选择一个已经单独测试成功的代理节点。

模板二:指定服务优先于国内直连

  • 规则一:指定域名例外:域名列表先填写 full:api.example.com,必要时再添加 domain:example.com,目标选择指定单节点。
  • 规则二:内网直连:填写局域网 CIDR,目标选择直连。
  • 规则三:国内直连:填写 geosite:cn 和 geoip:cn,目标选择直连。
  • 默认节点:选择普通代理节点。

如果某服务同时拥有登录域名、接口域名、静态资源域名和 CDN 域名,不要只按应用名称猜测。先从 PassWall2 日志、浏览器开发者工具或终端解析结果确认实际域名,再逐条添加。这样可以避免把不相关的域名一起代理,也能更容易判断究竟是哪条规则命中。

模板三:最小复现

  1. 暂时关闭或移除 geosite、geoip、正则和节点组。
  2. 只保留一条 full:example.com 规则。
  3. 目标设置为一个单独可用的节点。
  4. 默认节点也暂时设置为同一个单节点。
  5. 保存应用后,只访问这一个域名并查看日志。

如果最小复现成功,再依次恢复内网规则、指定服务规则、国内规则和默认兜底。每次只增加一类变量,才容易定位问题来自规则语法、规则组、DNS 还是节点本身。

规则不生效时,按现象建立最小闭环

规则目标、现象与下一步
现象优先检查下一步
规则完全没有效果分流节点是否被主节点引用,规则组是否一致确认 protocol 为分流类型,并检查 group 与 shunt_group
指定域名仍然直连是否被国内规则提前匹配把指定域名例外移到 geosite:cn 和 geoip:cn 之前,再用单节点测试
geosite:cn 不命中规则资源是否存在、路径是否正确、当前内核是否加载查看规则资源状态;临时换成一个明确的 domain: 规则
IPv4 正常但 IPv6 仍直连目标是否解析出 AAAA,转发模式是否接管 IPv6分别用 nslookup 或 dig 查看 A/AAAA,并临时关闭 IPv6 路径或使用明确支持 IPv6 的转发模式进行对照
规则命中但连接失败节点本身、UDP/TCP 范围或 DNS 策略将目标改为单一节点,先测试 TCP;需要 UDP 时再单独确认
启用 FakeDNS 后行为变化代理规则是否启用 FakeDNS,客户端是否能处理返回地址先关闭该规则的 FakeDNS 做对照,再根据当前页面说明恢复
  1. 先确认运行状态:PassWall2 已启用,主节点确实指向分流节点,而不是只保存了一个未引用的规则节点。
  2. 再确认规则组:上游页面会根据当前分流节点的 shunt_group 筛选规则;规则属于其他组时,页面可能保存成功,但当前分流节点不会使用它。
  3. 再确认资源:上游默认配置包含 geosite_update、geoip_update、规则文件位置以及更新地址字段,但实际文件路径和资源状态应以当前配置为准。
  4. 再确认域名策略:Xray 模式下,AsIs、IPIfNonMatch 和 IPOnDemand 对 IP 规则的参与方式不同。若问题只在 IP 规则出现,先把域名策略改为当前页面提供的另一种值进行对照。
  5. 最后看日志和抓取结果:关注实际请求域名、A/AAAA 解析、是否使用 TCP/UDP、最终节点以及连接错误。规则命中、出口选择和连接成功不是同一个结果,不能只凭其中一项下结论。

FakeDNS、IPv6 和 DNS 都应当作为排查变量,而不是直接认定为故障原因。上游页面明确把 FakeDNS设置为分流规则级选项,并提示其适用于让节点服务器获得目标域名等场景;如果启用后出现异常,最简单的验证方式是只关闭该条规则的 FakeDNS,再重复同一域名测试。可查看 FakeDNS、分流目标和域名策略的上游字段说明。

回滚:保存原有规则文本;出现全网无法访问时,先把主节点改回已经验证成功的单节点,关闭最近新增的 geosite、geoip、FakeDNS 和 IPv6 相关选项,再逐项恢复。不要同时修改节点、DNS、分流组和规则资源,否则无法判断故障来源。

常见问题

PassWall2 分流规则是不是一定从上到下匹配?

不能把 LuCI 页面显示顺序直接当成所有版本和内核的统一运行保证。更稳妥的配置方式是把具体规则放在宽泛规则前面:内网之后放指定服务例外,再放 geosite:cn、geoip:cn,最后设置默认节点;然后用日志和实际连接结果验证。

为什么指定服务规则写了,还是走直连?

最常见的排查方向是它同时被 geosite:cn 命中,或者规则组没有被当前分流节点加载。先把 full: 或 domain: 规则放到国内直连规则之前,确认 group 与 shunt_group 一致,再将目标临时改为单一节点。

domain: 和 full: 应该怎么选?

需要只匹配一个明确完整域名时,优先用 full: 做最小复现;需要覆盖某个域名及其子域名时,再考虑 domain:。当前字段是否直接接受这些前缀,要以生成配置、页面帮助和日志为准。

geosite:cn 或 geoip:cn 不生效怎么办?

先检查规则资源是否存在、实际路径是否正确、当前分流节点是否引用了这些规则,以及当前内核是否支持对应格式。然后暂时改用一个明确的 full: 或 domain: 规则,区分资源问题、规则组问题和节点问题。

Xray 和 sing-box 能不能完全共用一套 PassWall2 规则?

不能直接假定完全兼容。PassWall2 提供两类内核和相应字段,但规则资源、远程 rule-set、DNS 和域名匹配行为可能不同。建议先用 full:、domain: 和 CIDR 建立最小闭环,再逐项加入 geosite、geoip 或高级规则。

为什么 IPv4 正常,IPv6 却没有按规则走?

这只能先作为排查假设。检查目标域名是否返回 AAAA、当前转发模式是否接管 IPv6,以及规则网络范围是否包含需要的协议。可以暂时对照关闭 IPv6 路径或只测试 IPv4,确认问题是否与地址族有关。

相关阅读

参考资料

  1. PassWall2 上游 GitHub 仓库说明:支持的内核与流量管理能力
  2. PassWall2 上游默认配置:分流节点、规则字段与 geosite/geoip 示例
  3. PassWall2 上游 LuCI 分流页面字段:目标节点、规则组、域名策略与 FakeDNS