满速网络客户端下载

sing-box TUN模式怎么开?分平台设置与失败排查

更新于 2026-11-09 · man.christmas

简答:sing-box 的 TUN 模式不是单独的代理协议,而是通过虚拟网卡接管系统流量。最快做法是:先导入可用配置,打开客户端的 TUN/VPN 开关,再确认系统授权、自动路由和 DNS 是否生效;如果连接后无法上网,先关闭 TUN 回到系统代理,再按“权限→路由→DNS→规则”顺序排查。

定义:sing-box TUN模式是利用虚拟网络接口接收系统或指定应用流量,再交给 sing-box 路由和出站配置处理的流量接管方式。

先试这一步:开启前先看系统、配置和权限

本文只讲 sing-box 的 TUN 模式,不讨论其他客户端。适用范围包括 sing-box 图形客户端和命令行配置;不同平台的菜单名称可能随客户端版本变化,实际入口应以当前客户端页面为准。sing-box 官方将 TUN 作为一种 inbound 类型,图形客户端则负责申请系统网络权限和启停服务。可先查看sing-box 官方图形客户端列表,确认自己使用的是对应平台客户端。

现象先查层级判断标准下一步回滚
开关无法打开系统权限系统是否弹出VPN、网络扩展或管理员授权重新授权并重启客户端关闭TUN,改用系统代理
开关已开但网页打不开路由与出站日志中是否出现TUN入站和有效出站检查auto_route、默认出站和规则关闭TUN,保留配置不改动
网页能开但域名失败DNSIP连接与域名解析是否表现不同检查DNS服务器、DNS路由和劫持设置暂时关闭DNS劫持或恢复系统DNS
部分应用不走代理应用范围与规则浏览器和目标应用是否走同一网络路径检查应用排除、路由规则和系统VPN范围取消应用排除或关闭TUN测试

安全回滚:第一次配置时不要同时修改DNS、MTU、路由规则和出站。建议先保存原配置,启动失败时只关闭TUN开关;如果系统断网,退出客户端或撤销系统VPN/网络扩展权限,再恢复原网络设置。

Windows:用图形客户端打开TUN并验证

  1. 打开 sing-box 图形客户端,先确认配置或订阅已经成功加载,并且至少有一个可用的出站和路由规则。
  2. 在当前配置或运行页面查找名称类似“Tun”“TUN Mode”“虚拟网卡”或“VPN”的开关。不同图形客户端的菜单可能不同,找不到时以客户端当前帮助或配置编辑器为准。
  3. 首次开启时接受 Windows 网络或管理员权限请求。没有权限时,TUN可能无法创建,开关也可能立即回退。
  4. 如果配置文件包含TUN入站,确认其中的auto_route已启用。官方文档说明,auto_route用于将默认路由设置到TUN;同时应设置自动探测接口、默认接口或出站绑定接口,避免流量回环。详见sing-box TUN入站官方配置文档。
  5. 开启后,用客户端日志确认出现TUN启动、路由设置和出站连接记录。仅看到系统VPN图标只能证明局部授权成功,不等于所有应用都已经按预期接管。

Windows最小验证:先打开一个普通网页,再测试一个明确使用域名解析的应用。如果网页失败但日志没有入站记录,优先检查TUN权限和配置是否实际生效;如果有入站记录但无出站连接,检查路由规则和默认出站。

macOS与iOS:重点是网络扩展和VPN授权

Apple平台的TUN实现通常由系统的Network Extension承载,而不是让用户手动创建一个普通网卡。sing-box官方Apple客户端说明中,TUN由Network Extension提供,部分TUN字段由系统管理,例如interface_name并不由用户自由指定;因此不要照搬Linux的接口名称、路由命令或权限做法。相关能力和限制可查看sing-box Apple客户端功能说明。

  1. 在客户端导入配置并选中需要运行的配置。
  2. 打开TUN或VPN开关,首次运行时允许添加VPN配置或网络扩展。
  3. 回到系统设置,确认对应VPN配置处于允许或已连接状态;如果系统没有弹窗,先退出客户端再重新打开并再次尝试。
  4. 检查配置中的address、mtu、auto_route等字段是否符合当前客户端支持范围。Apple图形客户端不一定支持所有命令行字段,尤其不要自行添加官方功能表中标记为不支持的选项。
  5. 测试时先用一个浏览器页面和一个需要域名解析的应用分别验证,避免把单个应用的网络限制误判为TUN整体失败。

回滚方法:先关闭客户端内的TUN/VPN开关;若系统仍显示VPN连接,再到系统网络设置中断开对应VPN。不要在不清楚字段作用时反复删除配置,保留原配置便于对比。

Android:TUN通常表现为系统VPN,先确认应用范围

Android上的TUN常通过系统VPN机制运行。开启前要确认客户端是否获得VPN授权,以及是否设置了“允许所有应用”或应用排除列表。官方TUN文档列出了include_package、exclude_package等应用范围选项,并说明Android用户与应用筛选依赖auto_route;因此“客户端显示已连接”不代表每个应用都被接管。

  1. 打开 sing-box Android 客户端,导入并启用配置。
  2. 进入TUN、VPN或服务设置,开启服务并接受系统VPN授权。
  3. 如果有应用列表,先不要排除目标应用;完成基础验证后,再按需要加入排除列表。
  4. 确认auto_route已启用,并检查是否存在与目标应用冲突的include_package或exclude_package。
  5. 若手机同时运行其他VPN、企业管理软件或网络过滤工具,先暂时停用其中一个再测试,避免多个VPN服务互相抢占。

成功判据:客户端服务保持运行,日志出现TUN入站或VPN服务启动记录,且目标应用能够完成实际网络请求。VPN图标、一次DNS响应或一次页面打开只能证明局部链路,不能单独证明所有流量均已接管。

Linux:命令行配置重点看auto_route、auto_redirect和权限

Linux适合直接编辑JSON配置并从终端启动。下面是一个结构片段,不是可独立运行的完整配置;它只展示TUN入站,仍需要你已有的outbounds、route和DNS部分才能完成实际转发。

{"inbounds":[{"type":"tun","tag":"tun-in","address":["172.18.0.1/30","fdfe:dcba:9876::1/126"],"auto_route":true,"auto_redirect":true}]}

官方文档说明,auto_route用于把默认路由设置到TUN;auto_redirect仅适用于Linux并依赖auto_route,官方建议Linux场景优先启用它,以改善路由性能并减少与Docker桥接网络的冲突。使用这些设置通常需要相应权限,命令行启动前应确认当前用户具备创建TUN和修改路由的权限。

  1. 保存原配置副本,再把TUN入站加入当前配置。
  2. 确认已有有效出站、路由和DNS配置;不要只添加TUN而没有后续出站。
  3. 以有权限的方式启动配置,观察终端日志是否出现TUN创建、路由设置和出站拨号。
  4. 如果主机运行Docker、虚拟机或多个网卡,检查default_interface、auto_detect_interface或outbound.bind_interface,避免TUN把发往上游的连接再次接回自身。
  5. 测试目标应用后,再决定是否增加route_address、route_exclude_address或应用筛选,不要一开始就加入复杂规则集。

回滚:停止 sing-box 进程并删除本次新增的TUN片段;如果手动添加过路由,按启动前保存的路由记录恢复。不要直接执行来源不明的清理脚本。

配置字段怎么选:TUN、系统代理、DNS与MTU的边界

项目作用常见误解排查重点
TUN接收三层IP流量并交给sing-box处理打开后所有应用必然接管系统权限、应用范围、路由和规则
系统代理让遵循系统HTTP或SOCKS代理设置的应用发送请求等同于TUN应用是否读取系统代理、代理端口是否可达
auto_route把默认路由设置到TUN只影响客户端自身是否产生路由回环、是否指定上游接口
DNS处理域名解析和可能的DNS劫持DNS正常就代表网络正常DNS服务器、规则、劫持模式和域名结果
MTU限制单个网络接口可承载的报文大小越大越快仅在特定丢包、分片或部分网站异常时调整

官方TUN文档还说明,较新的配置使用address,旧的inet4_address和inet6_address字段已经被合并并逐步废弃。编辑旧配置时不要机械复制旧字段;如果当前版本提示字段废弃,应以对应版本的官方配置文档为准。

TUN开启后不能上网:按四层顺序排查

  1. 权限层:确认系统VPN、网络扩展、管理员或创建TUN所需权限已授予。开关自动关闭通常先查这里。
  2. 核心与端口层:确认实际运行的是 sing-box 核心,配置能够通过校验,且没有其他程序占用本地管理或代理端口。不要把端口占用误判为TUN路由问题。
  3. 路由层:确认TUN入站存在,auto_route是否启用,默认接口或出站绑定是否能让上游连接绕开TUN回到真实网卡。Linux再检查auto_redirect与Docker、虚拟机网桥的关系。
  4. DNS层:如果直接访问IP有响应、域名打不开,检查DNS服务器和DNS规则;如果所有连接都失败,则不要先改DNS,应回到权限、路由和出站。
  5. 应用层:浏览器能用而某个应用不能用时,检查应用排除、应用自身代理设置、IPv6偏好和规则匹配。单个应用失败不等于TUN整体失败。

每次只改一个变量并记录结果。例如先关闭DNS自定义设置测试,再恢复后检查路由;不要同时更换MTU、DNS和规则,否则无法判断真正原因。

常见问题 FAQ

1. sing-box打开TUN后,还需要打开系统代理吗?

不一定。TUN和系统代理是两种不同的流量接管方式。TUN主要依靠虚拟接口和路由接收流量,系统代理则依赖应用是否遵循HTTP或SOCKS设置。若TUN已经正常运行,通常先不要叠加系统代理;遇到异常时可关闭TUN,单独用系统代理判断问题在哪一层。

2. TUN开关显示已开启,但为什么部分应用仍然直连?

先查Android或Apple客户端的应用范围,再查规则和路由。include_package、exclude_package、应用排除列表以及应用自带网络策略,都可能造成部分流量不进入TUN。用同一应用在关闭排除规则前后各测试一次,结果更容易比较。

3. auto_route要不要打开?

如果目标是让TUN接管默认流量,通常需要auto_route;官方文档将其定义为把默认路由设置到TUN。但它必须与上游接口、默认出站和防回环设置一起考虑。只打开auto_route而没有可用出站,可能表现为系统断网,应先保存配置并准备关闭TUN回滚。

4. TUN模式需要修改MTU吗?

不要把MTU当作默认优化项。只有在出现特定的分片、部分站点异常或路径对大报文不兼容时,才在记录现象后小幅调整,并保留原值。MTU改变不能替代权限、路由或DNS排查。

5. sing-box TUN模式怎么判断真的生效?

至少结合三项检查:客户端日志出现TUN启动或入站记录;目标应用能完成实际请求;关闭TUN后现象发生可重复变化。单看VPN图标、一次DNS查询或一次网页打开,都只能证明局部链路。

常见问题

sing-box打开TUN后,还需要打开系统代理吗?

不一定。TUN依靠虚拟接口和路由接管流量,系统代理依赖应用是否遵循代理设置。建议先单独测试TUN,不要同时叠加多种接管方式。

TUN开关已开启,但部分应用仍然直连怎么办?

先检查应用排除列表、include_package、exclude_package和规则,再确认应用是否使用独立网络策略。

auto_route要不要打开?

如果希望TUN接管默认流量,通常需要auto_route,但还要同时确认默认出站、上游接口和防回环设置。

TUN模式需要修改MTU吗?

不需要默认修改。只有出现有记录的分片、丢包或部分网站异常时,才应保留原值并单变量测试。

如何确认sing-box TUN真的生效?

结合日志中的TUN启动或入站记录、目标应用的实际请求,以及关闭TUN后现象是否可重复变化来判断。

相关阅读

参考资料

  1. sing-box 官方 TUN 入站配置文档
  2. sing-box 官方图形客户端列表
  3. sing-box Apple 客户端功能与 TUN 支持说明
  4. sing-box 官方 GitHub 仓库