sing-box 1.14.0-alpha.40 的重点只有一个:新增 bridge outbound。它把 TUN 或其他 L3 endpoint 收到的 TCP、UDP、ICMP 直接转出网络接口,不走 L3 to L4 translation。别把它当生产升级信号。github.com 仍把 alpha.40 标成 pre-release,稳定 Latest 还是 2026-06-25 发布的 1.13.14。

1.14.0-alpha.40 现在能上生产吗?

不建议。这个版本在 GitHub Releases 里标记为 pre-release,发布日期是 2026-07-07,release notes 只列了 Add bridge outbound 和 fixes/improvements。对生产环境来说,信息还不够厚:没有稳定版标签,没有迁移说明,也没有图形客户端适配节奏。

如果你只是跑 sing-box 下载与配置入口 里的常规客户端配置,优先继续看 1.13.14。它在 Release 列表里仍是 Latest,发布日期是 2026-06-25。alpha.40 适合放在一份独立测试 JSON 里验证,不适合直接替换 systemd、OpenWrt 或长期在线的旁路由内核。

版本GitHub 标记发布日期适合动作
1.14.0-alpha.40Pre-release2026-07-07测试 bridge outbound 和 L3 转发
1.14.0-alpha.39Pre-release2026-07-06观察 L3 forwarding 基础变化
1.13.14Latest2026-06-25生产环境继续优先使用

bridge outbound 到底补了哪一层?

bridgedirect 的 L3 counterpart。这个说法别跳过,它决定了你该把它放在哪一段配置里。

常规 direct outbound 收到的是已经被 sing-box 抽象出来的连接,请求目标、端口、协议都在 L4 语义里处理。bridge 处理的是 L3 连接:TCP、UDP、ICMP 从 TUN、WireGuard、Tailscale 这类入口进来后,可以在 pre-match 阶段直接被 route 到一个 bridge outbound,再从指定网络接口发出去。

Release notes 明确写了一个关键点:不走 L3 to L4 translation。翻成配置语言,就是不要期待它像普通 SOCKS/HTTP 出站那样处理已经建立好的 L4 连接。官方 Bridge 文档也写了:L4 connections will be rejected。

direct 和 bridge 差在哪?

把它们放在同一张表里更清楚。

对比项direct outboundbridge outbound
配置类型"type": "direct""type": "bridge"
工作层级L4 连接语义L3 连接语义
典型入口mixed、socks、http、常规 routeTUN 或其他 L3 endpoint
支持流量常规 TCP/UDP 连接TCP、UDP、ICMP 的 L3 流量
关键限制走 Dial Fields需要权限,L4 连接会被拒绝
生产建议稳定配置可继续用alpha 阶段只测试

最容易误判的是把 bridge 当成「更底层的 direct」。它不是 direct 的性能开关,也不是把所有出站都改成 bridge 就会更干净。你的流量如果不是从 L3 inbound 进来,或者 route 规则没有在 pre-match 阶段命中它,bridge 不会给普通 profile 带来可见收益。

哪些平台真的能用?

官方文档写得很直:需要权限,支持 Linux、macOS、rooted Android、jailbroken iOS。图形客户端还要再加一层条件。

macOS 上,只有 standalone 版本可用,并且需要 Root Helper。Android 需要 root permission。iOS 需要 jailbreak。没有这些权限,bridge 不会神奇地绕开系统网络栈限制;更可能的结果是启动失败、接口不可用,或者规则命中了但流量被丢掉。

Linux 用户还要留意两个字段:iproute2_table_indexiproute2_rule_index。前者只在 Linux 且设置了 interface 时生效,用来给 pinned egress routes 分配路由表索引;后者是 Linux 的 iproute2 rule 起始索引。多实例环境里,这两个值撞车会很难排,日志不看就是玄学。

最小配置长什么样?

下面不是可直接覆盖的完整配置,而是字段骨架。它只说明 bridge outbound 应该出现在 outbounds,并且 route rule 用 action: "route" 指向它。真实配置还要按你的 TUN 入站、地址段、DNS 和默认出站补齐。

{
  "inbounds": [
    {
      "type": "tun",
      "tag": "tun-in",
      "address": ["172.19.0.1/30"],
      "auto_route": true
    }
  ],
  "outbounds": [
    {
      "type": "bridge",
      "tag": "bridge-out",
      "interface": "en0",
      "bridge_name": "bridge"
    }
  ],
  "route": {
    "rules": [
      {
        "inbound": "tun-in",
        "action": "route",
        "outbound": "bridge-out"
      }
    ],
    "final": "bridge-out"
  }
}

配置时先保留一份 config-stable-1.13.14.json,再新建 config-alpha40-bridge.json。两个文件不要共用同一个 systemd service。最小改变量是单独启动 alpha 配置,确认日志里 bridge-out 能加载,再考虑把某一段测试地址导进去。

怎么确认流量走的是 L3 转发?

先确认版本,再看配置,再看日志。命令行用户可以把检查顺序写死,不要边改配置边猜。

sing-box version
sing-box check -c ./config-alpha40-bridge.json
sudo sing-box run -c ./config-alpha40-bridge.json

你要看到的是三类信号。

第一,sing-box version 输出里确实是 1.14.0-alpha.40,不是图形客户端还在加载旧 core。第二,check 阶段没有 unknown outbound type: bridge,否则说明内核版本不对。第三,运行日志里没有权限相关错误,尤其是接口、iproute2 rule、Root Helper、root permission 这一类。

排查时把失败信号归成三类就够了:

信号更可能原因先改哪里
unknown outbound type: bridge当前 core 不认识 bridge版本和 GUI 内置 core
接口不可用或没有对应路由interface、网卡名或系统路由不匹配出口接口和 route 目标
权限相关错误缺 root、Root Helper、Android root 或 iOS jailbreak启动权限和平台条件

版本不对、出站网卡不可用、权限不够,三种问题的修法完全不同,别一次性改 route.rulesinterface 和启动权限。

哪些配置不要急着迁移?

只用常规 directselectorurltestsockshttp 出站的配置,不需要为了 alpha.40 改结构。bridge 解决的是 L3 endpoint 到网络接口的直接转发,不是普通出站选择器的替代品。

正在用 FakeIP 的配置也要小心。官方 Pre-match 文档说明,FakeIP destinations 需要在 pre-match 执行 resolve action,否则连接会被拒绝。也就是说,看到 bridge 支持 TCP/UDP,不代表你的 FakeIP + TUN 配置能无改动搬过去。

旁路由和多网卡环境可以单独测。测试范围建议缩小到一台设备、一个 TUN 入站、一个固定出口接口。Linux 上先记录当前路由表和 rule:

ip rule show
ip route show table all | grep -E "2200|bridge|tun"

如果测试后多出了一组表项,先确认它们对应的是 alpha 配置生成的 iproute2_table_indexiproute2_rule_index。回滚时停掉 alpha 进程,再看这些表项是否消失。没消失就别继续扩大测试范围。

这次更新和 alpha.39 的 L3 forwarding 有什么关系?

alpha.39 先补了 L3 forwarding 支持:来自 L3 inbounds 的 TCP/UDP 可以直接转发到 WireGuard 和 Tailscale endpoints,不走 L3 to L4 translation。alpha.40 在这个基础上补了 bridge outbound,让同类 L3 流量可以直接转出网络接口。

这条线索说明 1.14 正在把 L3 inbound、pre-match、route action、endpoint/outbound 这些部件接起来。它不是一个给普通 GUI 用户点开的新按钮,更像内核层把转发路径拆得更细。等 1.14 稳定版出来,再看 GUI 客户端怎么暴露这些选项,会比现在手动把主配置改成 alpha 更稳。

这篇没有覆盖桥接后的吞吐、延迟和多平台稳定性,因为官方 release notes 没给数据,我也没有可复现测试样本。现在能确定的是版本、发布时间、pre-release 状态、支持平台、权限要求,以及 bridgedirect 的层级差异。

相关阅读