sing-box 连接成功但打不开网页怎么办?
简答:sing-box 显示“已连接”不等于浏览器流量已经经过代理。最快的排查顺序是:先关闭其他代理并确认原网络正常,再验证系统代理或 TUN/VPN 是否真正接管流量,随后检查本地代理端口、DNS、路由规则和日志;如果只有部分网站打不开,优先看分流与 DNS,如果所有应用都打不开,优先看权限、端口和节点。
定义:“sing-box 连接成功但打不开网页”是指客户端或配置显示运行正常,但浏览器请求没有被正确接管,或请求在 DNS 解析、路由、节点连接、TLS 握手等环节失败。
先试这一步:用影响范围判断故障位置
本文是面向 Windows、macOS、iOS 和 Android 的 sing-box 通用排查指南,菜单名称会因客户端版本和图形界面不同而变化。sing-box 的图形客户端覆盖 Windows、Android、iOS 和 macOS,但具体权限入口应以当前客户端页面为准;本文不覆盖某个第三方客户端的专属菜单,也不把“已连接”当作实际网页可用性的证明。可先对照 sing-box 图形客户端与平台支持说明。
| 现象 | 优先检查 | 最短验证方法 |
|---|---|---|
| 所有网页和应用都打不开 | 原网络、节点、代理端口、系统代理或 TUN/VPN 权限 | 关闭 sing-box 后确认普通网络可用,再重新启动并检查代理接管 |
| 只有部分网站打不开 | route.rules、DNS 规则、直连/代理出站、IPv4/IPv6 | 切换全局或明确代理模式,再测试同一域名 |
| 浏览器打不开,其他应用可以 | 浏览器代理设置、扩展、缓存或 QUIC | 用无痕窗口或另一浏览器,并检查浏览器是否单独设置了代理 |
| 客户端测速成功但网页失败 | 测速只验证了某个节点或连接,不代表网页 DNS、路由和 TLS 都正常 | 使用浏览器代理测试或 curl 进行实际 HTTP 请求 |
先做的三项操作:关闭其他 VPN、系统代理、加速器和浏览器代理扩展;备份当前配置;确认没有把订阅令牌、节点密码或私人地址直接贴到日志中。
按固定顺序排查:备份、代理接管、端口、日志
- 确认版本和配置来源。记录当前 sing-box 内核版本、图形客户端版本,以及配置是本地文件还是远程订阅。配置字段会随版本变化,尤其是 TUN、DNS 和路由字段;不要把其他版本的示例直接覆盖到现有配置。
- 备份后做最小化测试。复制配置文件或导出当前配置,先不要同时修改 DNS、MTU、TUN 和规则。若客户端提供“测试配置”或“检查配置”入口,先执行检查;检查通过只代表格式或启动阶段通过,不代表网页一定可用。
- 确认流量是否被接管。桌面系统先看系统 HTTP/SOCKS 代理是否已启用,端口是否与 sing-box 的入站端口一致。sing-box 的
mixed入站可以同时提供 SOCKS 和 HTTP 服务,也支持启动时设置系统代理,但是否启用取决于配置中的set_system_proxy或客户端实现。官方 mixed 入站字段说明。 - 移动端确认 VPN 权限。Android 和 iOS 如果使用 TUN/VPN 模式,需要在系统弹窗中允许 VPN 权限,并确认当前 VPN 开关仍处于运行状态。若权限被撤销、系统省电策略停止后台进程,客户端可能显示运行但流量未持续接管。
- 检查端口是否一致。如果你手动给浏览器设置了代理,核对地址通常应为本机回环地址和配置中实际监听的端口;不要照抄别人的端口号。若日志显示端口已被占用,关闭其他代理软件后重启 sing-box,再重新验证。
- 提高日志级别并重现一次。只在排查期间把日志级别提高到
debug或更详细级别,打开一个明确的网页,记录对应时间附近的报错,然后恢复为原级别。官方日志配置支持trace、debug、info、warn、error等级别。sing-box 日志配置说明。
验证标准:至少完成一次真实网页请求或命令行请求,不要只依据客户端状态、节点延迟或测速结果判断成功。
错误关键词怎么分流:DNS、超时、TLS 还是认证
| 关键词或现象 | 更可能的位置 | 处理方法 |
|---|---|---|
| DNS、resolve、no such host、server misbehaving | DNS 服务器、DNS 规则或 DNS 流量没有被正确接管 | 检查 dns.servers、dns.rules 和最终 DNS 服务器;先用同一域名测试不同网络 |
| connection refused、无法连接本地端口 | 代理端口未监听、端口填错或被其他程序占用 | 核对入站地址和端口,关闭冲突软件后重启;不要把远端节点端口误填到浏览器代理设置 |
| timeout、i/o timeout | 节点不可达、路由不通、网络丢包或协议不兼容 | 换一个节点并换一个网络交叉测试;若只有某个协议失败,先回退到已知可用配置 |
| TLS handshake、certificate、connection reset | 目标连接、时间校准、TLS 参数或中间网络设备 | 确认系统日期时间正确,检查服务器名、TLS 配置和日志上下文;不要仅凭一次失败判断节点永久不可用 |
| authentication failed、unauthorized | 账号、密码、密钥或订阅内容 | 重新核对凭据和配置是否完整,必要时重新导入;分享日志前遮挡认证信息 |
sing-box 将 DNS 服务器、DNS 规则和 DNS 最终服务器分开配置;DNS 配置中的 final 用于指定默认 DNS 服务器,未设置时会使用列表中的第一个服务器。DNS 配置说明。因此,单纯修改系统 DNS 不一定能解决 TUN 模式下的解析问题。
只有部分网站打不开:检查分流、DNS 与 TUN
- 先切换到明确的全局代理测试。如果全局代理下网页恢复,而规则模式下失败,故障重点就在
route.rules、规则集、直连出站或 DNS 分流,不要先修改 MTU。 - 核对最终出站。路由规则可以按域名、域名后缀、IP 网段、网络类型、应用包名等条件匹配,并通过动作决定后续处理。某个域名如果命中了直连规则,节点本身正常也不会替它代理。路由规则匹配字段说明。
- 检查 DNS 规则是否与路由目标一致。域名解析成功但访问仍失败时,检查 DNS 服务器是否能解析目标域名,以及解析结果是否被错误的规则或 IPv6 优先策略影响。可临时测试
prefer_ipv4,但修改前先保存原配置,验证后决定是否恢复。 - 检查 TUN 的 DNS 处理方式。在支持的版本中,TUN 的
dns_mode可以是disabled、native或hijack;启用auto_route时,默认 DNS 处理行为可能与未启用时不同。Windows 的严格路由还会影响非 TUN 接口的 DNS 行为。TUN、auto_route 与 dns_mode 说明。 - 确认没有路由循环。桌面 TUN 配置可检查
route.auto_detect_interface或默认网卡设置,避免 sing-box 自己的出站连接再次进入 TUN。官方路由文档说明,自动检测默认网卡可用于避免 TUN 下的路由循环。路由配置说明。
每次只改一个变量:先切换规则模式,再测试 DNS,再测试 TUN。每次修改后都重新启动客户端并打开同一个网页,这样才能知道是哪项改变产生了结果。
Windows、macOS、iOS、Android 分平台检查
| 平台 | 重点检查 | 恢复方式 |
|---|---|---|
| Windows | 系统代理开关、TUN/VPN 权限、其他代理软件、IPv6 和防火墙提示 | 关闭 TUN 或系统代理,恢复原网络代理设置后重新启动 |
| macOS | 系统网络代理、网络扩展/VPN 权限、Wi-Fi 与有线接口、浏览器单独代理 | 退出 sing-box 并在系统网络设置中关闭其代理或 VPN 配置 |
| iOS | VPN 配置授权、当前配置是否启用、蜂窝网络权限、低数据模式和 Wi-Fi 切换 | 关闭 VPN 配置,切换一次 Wi-Fi/蜂窝网络后重新授权 |
| Android | VPN 授权、省电限制、分应用路由、始终开启 VPN 和其他 VPN 冲突 | 停止其他 VPN,取消电池限制或恢复原设置,再重新启动 sing-box |
Apple 平台的 sing-box 图形客户端要求 iOS 15.0 或更高版本、macOS 13.0 或更高版本;实际可用入口仍以当前客户端和系统显示为准。Apple 平台客户端要求。如果只是浏览器打不开,优先排查浏览器自己的代理设置;如果所有应用都打不开,优先排查系统 VPN/TUN 权限和节点连接。
用实际请求验证,不把测速当作网页可用
- 先关闭 sing-box,确认普通网络可以打开一个常用网站;如果原网络本身不可用,先处理路由器、Wi-Fi 或蜂窝网络问题。
- 启动 sing-box,只启用一种接管方式:要么系统代理,要么 TUN/VPN。不要同时叠加多个代理软件。
- 浏览器中打开一个普通 HTTPS 页面,再打开一个此前失败的域名,记录是否是全部失败还是部分失败。
- 桌面端可用浏览器的代理设置或系统网络诊断工具验证本地代理;也可以使用
curl对明确的本地 HTTP/SOCKS 代理进行测试。命令中的地址和端口必须替换为当前配置实际监听值,不能直接复制示例端口。 - 如果实际请求失败,立即查看同一时间点的 sing-box 日志,按 DNS、端口拒绝、超时、TLS 和认证关键词分流。
验证通过的最低标准是:客户端正在运行、请求确实经过当前代理入口、目标网页能完成加载,并且日志没有对应的解析或连接错误。单独的延迟、端口监听或节点测速只能作为辅助信号。
恢复与安全注意事项
- 每次修改前保留一份能启动的配置,出现“改完更糟”时先恢复备份。
- 订阅链接、访问令牌、节点密码、私有域名和完整日志不要公开粘贴;排查时只保留必要的错误行。
- 不要一次同时改 DNS、规则、TUN、MTU 和协议参数,否则无法判断原因。
- 如果升级后才出现问题,先记录客户端和内核版本,再对照对应版本的字段说明;官方文档页面会标注字段新增、弃用或移除的版本。
- 如果换节点、换网络、切换规则模式后仍失败,保留最小复现信息:系统、客户端版本、内核版本、接管方式、错误关键词和是否所有应用受影响。
如果你只是需要一条可执行的结论:先关闭其他代理,备份配置,确认系统代理或 TUN/VPN 真正接管,再用实际网页请求配合日志定位 DNS、路由、端口或节点问题。
推荐:如果你希望在跨设备连接排查时获得线路与网络诊断支持,可了解边界云加速的相关服务,具体能力与适用范围以官网说明为准。
常见问题
sing-box 显示已连接,为什么浏览器还是打不开?
“已连接”通常只说明客户端或某个出站已经启动,不代表浏览器流量一定经过 sing-box。优先检查系统代理是否启用、代理地址和端口是否一致,或移动端 VPN/TUN 权限是否仍有效;然后用实际网页请求和日志验证。
sing-box 只有部分网站打不开,应该先换节点吗?
先不要急着换节点。先切换到明确的全局代理模式测试同一域名:如果全局模式正常,重点检查 route.rules、直连出站和 DNS 分流;如果所有模式都失败,再换节点并更换网络交叉测试。
TUN 模式开启后反而没有网络怎么办?
先关闭 TUN,恢复到系统代理或基础代理入口,确认普通网页可用,再检查 VPN/TUN 权限、auto_route、DNS 处理方式和其他 VPN 是否冲突。每次只修改一项,并保留原配置以便恢复。
DNS 能解析,但网页仍然打不开,说明 DNS 没问题吗?
不一定。解析成功只说明 DNS 环节可能正常,后续仍可能在路由、节点连接、TLS 握手或认证环节失败。应查看同一时间点日志,并区分 connection refused、timeout、TLS handshake 和 authentication failed 等关键词。
升级 sing-box 后配置还能直接使用吗?
不能默认认为完全兼容。官方配置文档会标注字段新增、弃用和移除的版本。升级前应备份配置,记录客户端和内核版本,再按对应版本文档核对 TUN、DNS、route.rules 等字段。