sing-box 1.14 升级实战:TUN DNS 接管变了,升级前先看这三件事

sing-box代理技术升级
sing-box 1.14 升级实战:TUN DNS 接管变了,升级前先看这三件事

如果你在用 sing-box 做代理客户端(TUN 模式)或在 VPS 上跑服务端,最近应该注意到了 1.14 这个大版本。先给第一次听说 sing-box 的读者补个背景:sing-box 是一个开源的通用代理内核,支持 VLESS、VMess、Trojan、Hysteria2、Shadowsocks 等几乎所有主流代理协议,既能跑在服务器上做节点,也能跑在电脑、手机上做客户端,配上 TUN(虚拟网卡)就能接管整机流量。

1.14.0 在 2026 年 9 月发布,目前已经迭代到 1.14.2。这次更新变化不少,但真正会影响你日常使用的其实就三件事,下面逐个讲清楚,外加一份升级 checklist 和一个我亲手踩过的坑。

第一件事:TUN 默认开始接管系统 DNS

这是 1.14 对普通用户感知最强的变化。TUN 入站新增了 dns_mode 和 dns_address 两个选项,dns_mode 默认值是 hijack——开启后 sing-box 会主动改掉系统网卡的 DNS 设置(Linux 走 systemd-resolved,Windows 和 macOS 改对应网卡的 DNS),并在系统层面做 DNS 劫持(Linux 用 iproute2 规则,开了 auto_redirect 则用 nftables 做 DNAT)。

而 1.13 及更早版本是完全不碰系统 DNS 和防火墙的。所以如果你升级后发现这类症状,先别怀疑人生,大概率是这个改动:

  • 开了代理后,局域网里的设备名(比如 nas.local)突然解析不出来了;
  • 某些国内网站的解析结果和没开代理时不一样了;
  • DNS 查询莫名其妙走了代理的 DNS,而不是你原来设的。

不想被接管也很简单,在 TUN 入站配置里加一行即可:

{
  "type": "tun",
  "tag": "tun-in",
  "dns_mode": "disabled"
}

disabled 是彻底不管,native 则是只改系统 DNS 但不做劫持。用图形客户端的话更省事,比如 sing-box-windows 的 v2.3.2 版本直接在设置页加了"TUN DNS 接管模式"下拉框(hijack / native / disabled),点一下就行。

还有一个真实案例值得提:有人在开启"IPv6 优先"后 TUN 模式 DNS 直接报错(dial tcp6: cannot assign requested address),原因就是 DNS 服务器域名的初始解析被带偏了——这类组合问题在 1.14 的 DNS 大改之后更容易冒出来,升级后 DNS 异常先查 dns_mode 和 IPv6 偏好这两个开关。

第二件事:rule-set 支持本地预热,冷启动不再卡

1.14 给 rule-set(分流规则集)加了 initial_path 支持:你可以在本地存一份 .srs 规则文件做缓存,sing-box 冷启动时先用缓存顶上,后台再去下载更新。

这解决了之前一个很烦人的体验:分流规则集每次冷启动都要等下载完成,网络差的时候客户端半天没反应,还以为是节点挂了。如果你用了 geosite、geolocation 这类远程规则集,建议配上 initial_path,感知会明显变好。

第三件事:gRPC API 与 Dashboard,客户端开始大改

1.14 引入了正式的 gRPC API 服务(配置里 type: api)、Web Dashboard 和远程控制。对普通用户来说,直接影响是:第三方图形客户端正在全面迁移到新 API,内核和客户端最好一起升级,混用旧版内核 + 新版客户端可能出现兼容问题。

比如 sing-box-windows v2.3.2 就明确写了"迁移到 sing-box 官方 gRPC API",并且设置页里加了"1.16 弃用字段移除计划"提示卡——官方已经在预热 1.16 要删掉一批弃用配置字段了。

顺带看一眼:协议侧的新东西

如果你只关心"能不能更快更稳",这部分按需看:

  • 新增 Snell 协议支持、OpenVPN 客户端/服务端、OpenConnect 客户端;
  • Hysteria2 增强:Realm 服务、NAT 穿透、Chrome QUIC 指纹伪装、BBR 拥塞 profile、端口跳跃随机化、gecko 混淆;
  • TLS spoof 新增 wrong-ack 等方法,并支持按路由规则单独启用;
  • DNS 侧:mDNS 服务器、乐观 DNS 缓存(optimistic DNS cache)、DNS 查询超时选项。

服务端用户(VPS 上跑 VLESS+Reality / Hysteria2 的)基本无感,我自己的节点从 1.14.1 升到 1.14.2 就是无痛升级。变化主要集中在客户端一侧。

升级 checklist(建议照着走)

  1. 先备份:cp config.json config.json.bak-20261003,回滚永远是最便宜的后悔药。
  2. 跑一遍检查:sing-box check -c config.json,重点看有没有 deprecated(已弃用)字段警告。1.16 要删一批旧字段,现在看到警告就顺手改掉,别拖。
  3. 升级二进制:Linux 一键脚本、包管理器或手动替换都行,升到 1.14.x 最新(目前是 1.14.2)。
  4. 重启后验证:看日志有无报错,随手打开几个网站,再用 nslookup 测一下 DNS 走的是不是你预期的。
  5. TUN 用户加测一项:确认 DNS 行为符合预期,不符合就去调 dns_mode。

一个我亲手踩过的坑:inbound 里别写 multiplex

之前我为了给服务端开连接复用,三次往 inbound 配置里加 multiplex 字段,三次都被 1.14.1 的配置校验打回来:第一次说 protocol 字段不支持,第二次说 max_streams 不支持,第三次连 multiplex 这个字段名本身都不认。结论是:服务端 inbound 根本不需要配 multiplex,它会自动接受复用连接;想吃复用的加成要在客户端侧开 Mux。完整翻车记录在这里:sing-box multiplex 三次翻车实录。

写在最后

1.14 是一次"客户端体验向"的大更新:DNS 接管、规则预热、新 API,三件事都和 TUN / DNS / 客户端有关。如果你是服务端用户,放心升;如果你是 TUN 客户端用户,升级前先记住 dns_mode 这个开关,能省掉大半排错时间。

想从零搭一个 sing-box 服务端,可以看这篇实战记录:日本 VPS 部署 sing-box 全记录(VLESS+Reality / Hysteria2 / VMess+WS)。官方完整更新日志在 sing-box changelog,想抠细节的可以去翻。