跳转至

预匹配

sing-box 1.14.0 中的更改

route
sniff

sing-box 1.13.0 中的更改

bypass

预匹配是在连接建立之前运行的规则匹配。

工作原理

当 L3 入站(TUN、WireGuard 或 Tailscale)收到连接请求时,连接尚未建立:对于 TCP 连接,无连接数据可用;对于 UDP 连接,仅首个数据包可用。在此阶段,sing-box 在预匹配模式下运行路由规则。

当规则匹配到需要比当前可用数据更多连接数据的动作时,预匹配将在该规则处停止。

支持的动作

reject

以 TCP RST / ICMP 不可达拒绝。

详情参阅 reject

route

sing-box 1.14.0 中的更改

自 sing-box 1.14.0 起,TCP 和 UDP 连接也可以在 L3 转发;此前仅支持 ICMP 连接。

将连接直接在 L3 转发到指定出站,不经过 L3 到 L4 转换。

支持的目标:

  • ICMP 连接:direct 和 bridge 出站以及 WireGuard / Tailscale 端点。
  • TCP 和 UDP 连接:bridge 出站以及 WireGuard / Tailscale 端点。

当没有规则匹配且默认出站为受支持的目标时,L3 转发同样生效;对于出站组,使用当前选中的出站。

FakeIP 目标需要在预匹配中先执行 resolve 动作,否则连接将被拒绝。

详情参阅 route

sniff

自 sing-box 1.14.0 起

对于 UDP 连接,首个数据包在预匹配中可用,因此协议探测将直接在其上运行,随后规则匹配将携带探测结果继续。

当探测器需要更多数据时(如分片的 QUIC Client Hello),预匹配将在该规则处停止。

对于 TCP 连接,预匹配总是在该规则处停止。

详情参阅 sniff

bypass

自 sing-box 1.13.0 起

仅支持 Linux,且需要启用 auto_redirect

在内核层面绕过 sing-box 直接连接。

如果未指定 outbound,规则仅在来自 auto redirect 的预匹配中匹配,在其他场景中将被跳过。

对于其他所有场景,指定了 outbound 的 bypass 行为与 route 相同。

详情参阅 bypass