sing-box Windows 使用教程:安装、导入配置与开启代理
简答:先确认你使用的是 Windows 10 及以上,并在官方发布页选择与 CPU 架构匹配的文件。新手优先使用 sing-box for Desktop 图形客户端:导入远程配置或本地 JSON 后,选中配置并启动服务;如果只显示“运行”但网页打不开,再分别检查系统代理、TUN、配置日志和端口占用。
定义:sing-box 是一个使用 JSON 配置文件的通用代理平台;Windows 上既可以使用 sing-box for Desktop 图形客户端,也可以直接运行 sing-box.exe 命令行内核。
先判断客户端类型、系统架构和下载文件
本文是第三方使用指南,示例只针对 Windows。sing-box 官方客户端列表将 Windows 客户端列为 sing-box for Desktop;官方文档说明该客户端可以管理并运行本地或远程配置,也提供 TUN 等平台功能,系统要求为 Windows 10 及以上,支持 x64、x86 和 arm64。查看 sing-box for Desktop 官方说明
| 你看到的文件或程序 | 适合谁 | 导入和启动方式 |
|---|---|---|
| sing-box for Desktop | 首次使用、需要图形界面 | 在客户端添加本地或远程 Profile,再启动服务 |
| sing-box.exe 压缩包 | 熟悉命令行或需要手动运行 | 使用 sing-box.exe check 检查,再用 sing-box.exe run 启动 |
| 第三方 GUI | 需要额外界面功能 | 菜单和权限以该项目文档为准,不能套用官方客户端步骤 |
先在 PowerShell 执行以下命令确认 Windows 版本和处理器架构:
Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsArchitecture, CsProcessors
预期能看到 Windows 版本以及 x64、x86 或 ARM64。下载时不要只按“Windows”选择文件;架构不匹配时,常见结果是程序无法启动、闪退或提示“Windows cannot run this app”。正式版本号、安装包名称和下载入口以官方 Releases 页面当前内容为准,不要把测试版当作稳定版。
安装前备份并完成首次启动
- 从官方 Releases 页面或官方 Desktop 文档进入下载渠道。下载后右键压缩包,选择“属性”,如看到“解除锁定”选项,先勾选并应用,再解压到短路径,例如
C:\sing-box\。 - 如果使用图形客户端,首次启动时按界面提示安装或启用内核;如果 Windows 弹出防火墙或管理员权限提示,先确认程序路径无误,再根据是否需要 TUN 决定是否允许。官方资料只确认 TUN 属于客户端提供的平台功能,具体权限提示会随版本变化,界面文案需以当前版本为准。
- 如果使用命令行内核,打开 PowerShell,进入程序目录并确认版本:
Set-Location C:\sing-box
.\sing-box.exe version
预期输出版本、系统和架构信息。若提示“不是内部或外部命令”,通常是当前目录错误或文件名不一致;用 Get-ChildItem .\sing-box*.exe 核对实际文件名。
覆盖已有配置前先备份。假设配置位于 C:\sing-box\config.json,可执行:
Copy-Item C:\sing-box\config.json C:\sing-box\config.json.bak -Force
撤销修改时执行 Copy-Item C:\sing-box\config.json.bak C:\sing-box\config.json -Force。不要把包含完整订阅 URL、密码或密钥的配置上传到公开仓库;远程订阅也不要随意交给不明转换服务。
导入远程订阅或本地 JSON 配置
方式一:导入远程 Profile
- 在图形客户端中找到添加 Profile、远程配置或类似入口,粘贴服务提供方给你的完整 HTTPS 配置 URL,并填写容易识别的名称。
- 保存后选中该 Profile,执行更新或刷新。官方通用客户端文档将这种对象定义为 Remote Profile,更新来源是 URL,并要求客户端支持自动更新和 HTTP Basic 授权。查看 Profile 与远程配置说明
- 更新结束后检查是否出现 outbounds 或节点分组。如果提示“401 Unauthorized”,说明远程地址要求认证或链接已失效;如果提示“404 Not Found”,先用浏览器或 PowerShell 检查 URL 是否仍能返回配置。
Invoke-WebRequest -Uri "你的配置URL" -Method Head
该命令只适合检查 HTTP 响应,不要把带敏感参数的完整 URL 粘贴到截图或公开日志中。若返回 HTML 登录页而不是 JSON,客户端通常会提示解析失败。
方式二:导入本地 JSON
- 将配置文件复制到
C:\sing-box\config.json,文件编码优先使用 UTF-8。 - 在客户端选择本地 Profile 或导入 JSON 文件。sing-box 官方配置文档明确说明配置格式为 JSON,并提供
check检查命令。查看 sing-box 配置结构与检查说明 - 命令行检查配置:
Set-Location C:\sing-box
.\sing-box.exe check -c .\config.json
检查成功时通常没有致命错误并返回命令提示符;如果看到 FATAL、decode config 或 json: unknown field,先按报错中的字段定位,不要直接从网上复制另一份配置覆盖。unknown field 常表示配置与当前内核版本不兼容,需按当前版本文档迁移字段。
编辑器还可以使用官方 JSON Schema 辅助补全和校验。Schema 只帮助发现格式或字段问题,不能证明节点地址、认证信息或网络一定可用。查看官方 JSON Schema 说明
启动代理:系统代理、规则、全局和 TUN 不要混为一谈
| 选项 | 作用 | 适合的验证方式 |
|---|---|---|
| 系统代理 | 让遵循 Windows 代理设置的应用使用本机代理 | 检查 Windows 代理设置和浏览器请求 |
| 规则模式 | 根据配置中的路由规则决定直连或代理 | 查看连接日志与最终出站 |
| 全局模式 | 尽量将匹配到的流量交给代理出站 | 用同一网站对比直连和代理结果 |
| 直连模式 | 不经过代理出站 | 确认关闭代理后网络本身正常 |
| TUN | 通过虚拟网络接口接管更广泛的系统流量 | 通常需要更高权限,检查 TUN 状态和日志 |
如果只是浏览器使用,先开启系统代理,不要一开始就启用 TUN。启动后观察客户端状态、配置名称、节点或出站分组以及实时连接数;官方通用客户端说明提到 Dashboard 可展示状态、连接和流量,含分组出站时还可以切换分组。查看官方客户端状态与分组说明
命令行运行本地配置的兼容写法是:
Set-Location C:\sing-box
.\sing-box.exe run -c .\config.json
需要停止时回到该窗口按 Ctrl+C。如果窗口马上退出,记录屏幕中的英文报错,不要重复点击启动。需要把日志写入文件时,可在配置的 log 段设置 level、output 和 timestamp;官方日志文档列出了这些字段及可用日志级别。查看官方日志配置
Windows 上无法上网的排查顺序
- 先确认配置检查通过。重新执行
.\sing-box.exe check -c .\config.json。若失败,优先处理 JSON、字段版本、节点认证和订阅返回格式。 - 确认服务确实在运行。查看客户端日志是否有启动完成、连接节点或出站请求;只看到界面“已运行”而没有连接记录,不能证明浏览器流量已经进入代理。
- 检查本机端口。如果日志出现
bind: Only one usage of each socket address或address already in use,在 PowerShell 执行:
Get-NetTCPConnection -State Listen | Sort-Object LocalPort | Format-Table LocalAddress,LocalPort,OwningProcess
再用进程 ID 定位程序:
Get-Process -Id 进程ID
确认是旧的 sing-box 或其他代理程序后,先在其界面停止;只有确认进程可结束时才执行 Stop-Process -Id 进程ID。撤销方法是重新启动对应程序,不能盲目结束系统服务。
- 检查系统代理是否指向当前端口。如果客户端只启用了 TUN,浏览器手动代理设置可能仍然无效;如果只启用了系统代理,不遵守 Windows 代理的应用也可能不走代理。
- 检查节点和 DNS。假如日志出现
i/o timeout、context deadline exceeded或 TLS 握手错误,先切换其他已配置出站,再测试同一网址。若只有域名打不开、IP 请求正常,重点检查 DNS 配置和 DNS 请求是否被路由到正确出站。 - 检查防火墙和权限。如果 TUN 启动失败、虚拟接口创建失败或出现
permission denied,关闭 TUN 后先用系统代理验证;确认程序来源和路径后,再以管理员身份启动测试。管理员权限只能解决权限问题,不能修复错误的订阅、节点认证或端口占用。 - 做可复现验证。先停止代理执行
curl.exe https://ifconfig.me记录结果,再启动代理并在相同网络、相同命令下重复测试;结果变化只能说明该命令的出口可能改变,不能据此保证所有应用都走代理。随后查看客户端连接数和日志,确认请求命中了目标出站。
配置导入失败时的快速判断表
| 现象或英文报错 | 优先判断 | 处理方法 |
|---|---|---|
invalid character | 返回内容不是合法 JSON,或文件损坏 | 用文本编辑器查看开头是否为 HTML、登录页或错误信息 |
json: unknown field | 配置字段与当前版本不匹配 | 备份后按当前版本文档修改,必要时重新导出兼容配置 |
401 Unauthorized | 远程配置需要认证或链接失效 | 核对授权信息和订阅地址,不公开完整 URL |
address already in use | 监听端口被其他进程占用 | 用 Get-NetTCPConnection 找到进程后停止冲突程序 |
i/o timeout | 节点、DNS、路由或当前网络链路超时 | 查看日志中的目标地址,切换出站并分别测试 DNS 与 TCP 连接 |
| 客户端运行但浏览器直连 | 系统代理未开启或浏览器不遵守系统代理 | 检查 Windows 代理设置,或改用客户端支持的 TUN 后重新验证 |
旧版本配置可能使用已经废弃或改名的字段。官方变更日志会记录字段迁移、客户端变化和版本差异;遇到旧配置导入失败时,应先确认当前内核版本,再对照变更日志处理,而不是混用不同版本教程。查看官方变更日志
本文核对日期与安全提醒
本文核对日期:2026年11月14日。官方发布页和文档会持续变化,版本号、界面菜单、安装包名称以及权限提示均以当前页面和当前客户端为准。远程订阅通常包含节点地址、认证信息或其他敏感参数;不要将完整 URL、配置文件和日志原样发到公开论坛,排错时先打码。
常见问题
Windows 上应该下载 sing-box 图形客户端还是 sing-box.exe?
首次使用优先选择 sing-box for Desktop,因为它负责管理本地或远程 Profile,并提供 Windows 平台功能。sing-box.exe 更适合熟悉 PowerShell、需要手动检查配置或运行服务的用户;两者的配置文件不一定能直接套用,菜单和权限提示要以当前版本为准。
导入订阅后没有节点,应该先检查什么?
先确认远程 URL 返回的是 sing-box 可识别的 JSON,而不是 HTML 登录页、错误页或需要认证的响应;再查看客户端是否提示 401、404、invalid character 或 unknown field。Clash、YAML 或其他通用订阅不能默认视为 sing-box JSON,格式不兼容时需要服务提供方提供 sing-box 配置或兼容转换方式。
sing-box 显示运行,但浏览器仍然打不开网页怎么办?
先确认浏览器是否使用 Windows 系统代理,再看客户端是否有连接记录和流量变化。若系统代理未生效,检查监听地址和端口;若 TUN 启动失败,先关闭 TUN,用系统代理做基础验证;若日志出现 timeout 或 TLS handshake error,再检查节点、DNS 和当前网络。
配置检查失败时可以直接删除哪些字段?
不建议盲删。先备份配置,记录完整英文报错,再根据当前版本文档或变更日志判断字段是否改名、废弃或属于其他客户端格式。删除字段可能让配置通过检查,却改变路由、DNS 或认证行为。
如何确认代理真的生效,而不是只看客户端显示已连接?
至少同时检查三项:客户端有连接或流量记录;浏览器或命令请求确实经过配置中的监听入口;相同网络下运行 <code>curl.exe https://ifconfig.me/</code> 时出口结果发生可解释变化。最终还要结合日志中的出站或节点记录判断,单看托盘图标不足以证明所有应用都已接管。