sing-box TUN模式怎么开启?先开关、再验证与断网排查
简答:先确认配置已经加载且存在可用出站:图形客户端通常是选中配置后打开 TUN 或 VPN 开关,Linux 原生运行则要在 inbounds 中加入 type 为 tun 的入站。TUN 只负责接管流量,没有有效出站、路由和 DNS 配置时,开启后仍然不能联网。
定义:sing-box TUN 模式是通过虚拟网络接口接管系统流量的方式,不等同于只设置浏览器或系统 HTTP 代理。
先试这一步:确认开关、配置和权限都满足
如果你的目标是让不读取 HTTP 代理的应用也经过 sing-box,不能只看系统代理是否打开。sing-box 官方将客户端接管方式分为系统代理、防火墙重定向和虚拟接口;TUN 属于虚拟接口方案,适合需要接管更多应用流量的场景。可先阅读 sing-box 客户端流量接管说明。
| 检查项 | 通过标准 | 不通过时怎么做 |
|---|---|---|
| 配置文件 | 能被客户端加载,没有 JSON 错误或 unknown field | 先备份,再用当前版本执行 sing-box check |
| 出站配置 | 至少有可用的出站或节点 | 先验证普通代理或基础连接,不要把 TUN 当成节点 |
| 客户端权限 | 允许 VPN、网络扩展或虚拟网卡 | 重新授权;Windows 必要时用管理员权限启动 |
| 回滚方式 | 知道如何关闭 TUN、退出客户端并恢复原网络设置 | 先保存原配置和系统代理状态 |
原生配置使用 JSON,官方基础配置说明提供了 sing-box check 检查命令;配置结构可参考 sing-box 配置文件说明。本文中的字段片段只用于核对,不是可以独立启动的完整配置。
按系统开启:图形客户端没有统一的按钮名称
不同图形客户端可能把入口写成 TUN、VPN、透明代理、虚拟网卡或 Network Extension。sing-box 官方维护的图形客户端包含 Android、Apple 平台、Windows 和 Linux 桌面端,但各客户端的菜单位置不完全相同,可先查看 官方图形界面客户端列表。
Windows:加载配置后打开 TUN 或 VPN
- 打开桌面客户端,导入或选择已经通过检查的配置。
- 确认配置内有
type为tun的入站;如果客户端有单独的 TUN、VPN 或透明代理开关,打开对应开关。 - 首次创建虚拟接口时,按 Windows 提示授予网络或管理员权限。
- 启动后查看网络适配器、客户端日志和普通网页连接;如果开关立即关闭,先检查权限、配置错误和其他网络接管软件。
官方桌面端页面明确列出 Windows 10 及以上系统支持范围,但没有规定所有第三方图形客户端必须使用同一菜单路径。因此,无法核实的按钮位置不要照搬其他软件教程。
macOS:允许网络扩展,再启动 TUN
- 在客户端中导入配置并选中需要运行的配置。
- 打开 TUN、VPN 或网络扩展相关开关。
- 首次运行时允许系统创建网络扩展;如果授权后仍自动关闭,查看客户端服务日志。
- 先用一个普通网页验证基础连接,再检查 DNS 和分流规则。
sing-box 官方 Apple 平台说明显示,相关客户端通过 NetworkExtension 提供非特权 TUN 实现;同时,部分 Linux 专用字段在 Apple 图形客户端并不适用。不要把 Linux 的 auto_redirect、接口名或路由字段直接复制到 macOS。具体支持范围见 Apple 平台功能说明。
Android:打开 VPN 请求,先用全量模式验证
- 在 Android 客户端中导入配置并选中它。
- 点击 TUN、VPN 或启动按钮,首次出现系统 VPN 请求时选择允许。
- 如果客户端提供应用分流,先暂时使用全量模式完成基础验证,再加入排除应用。
- 如果使用 root 服务,不要直接照搬 Linux 的路由参数;先确认客户端是否支持对应字段。
官方 Android 客户端页面说明,Android 版本可管理本地或远程配置,并提供基于平台的 TUN 透明代理实现。Android 的 VPN、应用分流和 root 能力取决于客户端与设备环境,不能仅凭 Linux 配置推断一定可用,详见 sing-box Android 客户端说明。
Linux:在 inbounds 中加入最小 TUN 片段
Linux 原生运行时,可先用以下最小片段核对核心字段:
{"type":"tun","tag":"tun-in","address":["172.19.0.1/30"],"auto_route":true,"strict_route":true}
这段内容不能单独运行,还需要完整的 dns、outbounds 和 route 配置。确认基础 TUN 能启动后,再按 Linux 环境需要增加 auto_redirect。官方文档明确说明,auto_redirect 仅支持 Linux,并且要求同时启用 auto_route;它不是 Windows、macOS 或 Android 普通非 root 配置的通用开关。字段定义见 官方 TUN 入站文档。
字段怎么写:先用最小配置,再增加可选项
| 字段 | 作用 | 适用与注意事项 |
|---|---|---|
type | 指定入站类型 | 必须写为 tun |
address | 设置 TUN 接口的 IPv4 或 IPv6 前缀 | 自 1.10.0 起使用;旧的 inet4_address、inet6_address 不要与新版字段混用 |
auto_route | 为 TUN 设置默认路由 | 开启后要注意出站回环,必要时配置自动探测接口或默认接口 |
auto_redirect | 通过 Linux nftables 等机制改善 TUN 路由 | 仅支持 Linux,且要求 auto_route 已开启 |
strict_route | 加强路由约束和部分 DNS 处理 | 开启后局域网、非 TUN 接口和不支持的流量可能出现不同表现 |
dns_mode | 选择 DNS 的原生设置或劫持方式 | 自 1.14.0 起提供,不能脱离当前 DNS 与路由配置单独判断 |
dns_address | 指定 DNS 处理地址 | 自 1.14.0 起提供;设置后还要配置相应的 DNS 劫持路由规则 |
stack | 旧版 TCP/IP 栈选择 | 自 1.15.0 起废弃,建议移除;迁移说明见官方文档 |
截至 2026年10月30日,官方 TUN 文档显示:address 自 1.10.0 起使用,dns_mode 和 dns_address 自 1.14.0 起提供,stack 自 1.15.0 起废弃。版本兼容应以实际安装版本的检查结果和当前文档为准,不要只根据教程标题判断。
如果配置仍含有 stack,可先备份后删除,再执行当前版本的 sing-box check。官方迁移指南明确说明,1.15.0 起移除该字段即可使用 sing-tun 自有 TCP/IP stack,并计划在 1.17.0 移除该字段,详见 sing-box 迁移指南。
开启后怎么验证:接口、路由、应用和 DNS 分开检查
- 验证配置:先看客户端启动日志,确认没有 JSON 语法错误、unknown field、出站缺失或路由加载失败。
- 验证虚拟接口:Windows 查看网络适配器,macOS 查看客户端网络扩展状态,Linux 查看 TUN 接口,Android 查看系统 VPN 是否显示已连接。
- 验证应用流量:先打开普通网页,再测试一个明确不使用 HTTP 系统代理的应用。不要只用
ping判断 TUN 是否正常,因为 ICMP 是否经过代理取决于平台和应用路径。 - 验证 DNS:测试域名解析是否成功,并观察开启与关闭 TUN 后的差异。一次 DNS 查询成功,不能证明全部流量都已被接管。
- 验证回滚:关闭 TUN,退出客户端,确认系统代理、DNS 和网络连接恢复原状。
合格的基础验证至少要同时看到:虚拟接口创建成功、应用可以建立连接、域名解析没有单独失败、关闭 TUN 后网络可以恢复。端口监听、网卡出现或一次测速结果都不能单独证明 TUN 已完整工作。
TUN 开启后断网:按影响范围逐层回滚
| 现象 | 先检查 | 建议处理 |
|---|---|---|
| 开关打不开或立即关闭 | VPN、网络扩展、管理员权限 | 重新授权,退出其他网络接管工具后再启动 |
| Create TUN device failed | 权限、残留虚拟接口、客户端冲突 | 完全退出客户端,检查旧接口和冲突软件,再重新启动 |
| 开启后完全无法联网 | 出站、auto_route、路由回环 | 先关闭 TUN 恢复网络,再用最小配置重新验证,不要先改 MTU |
| DNS Resolve Failed | dns_mode、dns_address 和 DNS 路由 | 先确认 DNS 地址可达及路由规则匹配,不要直接判断为节点故障 |
| 局域网无法访问 | strict_route、局域网网段和平台限制 | 检查是否需要排除局域网地址;每次只改一个字段并保留原值 |
| 部分网站打不开或速度变慢 | MTU、IPv6、分流规则 | 先恢复默认 MTU,再分别测试 IPv4、IPv6 和规则,不要同时改多个变量 |
推荐排查顺序是:普通代理或基础连接 → 最小 TUN → DNS → Linux 的 auto_redirect 或严格路由 → MTU。每一步都记录原配置;如果问题扩大,关闭 TUN、恢复备份,再从最小字段重新开始。
本文是第三方使用指南,只整理 sing-box 公开文档和通用排查方法,不代表任何品牌客户端或服务的官方页面。具体版本、下载来源、菜单名称和平台支持范围,以官方为准。
常见问题
sing-box 开启 TUN 后是不是就能直接联网?
不是。TUN 只负责通过虚拟接口接管流量,还需要有效的出站、路由和 DNS 配置。应分别验证虚拟接口、应用连接和域名解析。
系统代理和 TUN 模式有什么区别?
系统代理主要把 HTTP 代理地址提供给支持它的应用,UDP、ICMP 和部分不读取系统代理的程序可能绕过;TUN 通过虚拟网络接口接管流量,但需要 VPN、网络扩展或虚拟网卡权限。
Linux 配置里的 auto_redirect 要不要一定开启?
不应在所有环境中无条件开启。官方文档将它限定为 Linux 选项,并要求 auto_route 已开启;先用最小 TUN 配置验证,再根据路由、性能或 Docker 冲突等实际情况测试。
sing-box 1.15.0 还要不要保留 stack?
建议先备份配置后移除。官方迁移指南显示,stack 自 1.15.0 起废弃,并计划在 1.17.0 移除;移除后使用 sing-tun 自有 TCP/IP stack。
Android 能不能直接复制 Linux 的 TUN 配置?
不能直接复制。Android 图形客户端通常通过系统 VPN 机制提供 TUN,root 服务、应用分流和 Linux 路由字段的支持范围不同,应先使用客户端的 VPN/TUN 开关,再按当前客户端文档调整。
TUN 开启后完全断网,最先改哪个参数?
先不要改 MTU。先关闭 TUN恢复基础网络,检查配置是否有 unknown field、出站是否可用、权限是否授予,以及 auto_route 是否形成路由回环;确认基础连接后再处理 DNS 和进阶路由。