预匹配
sing-box 1.13.0 中的更改
预匹配是在连接建立之前运行的规则匹配。
工作原理
当 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。