BestVPN - 高速VPN与全能AI助手

sing-box Windows 怎么安装和运行?服务、配置文件与日志查看步骤

更新于 2026-11-11 · bv2.best

简答:先下载当前版本的 Windows 构建包,准备 config.json,用 sing-box check 校验后再执行 sing-box run。确认本地监听端口可用、运行窗口无 FATAL 日志后,再用 WinSW 注册后台服务;日志要分清 sing-box 自身日志和 WinSW 包装器日志。以下步骤按 2026 年 11 月 11 日可查资料整理,具体字段以当前版本文档为准。

定义:sing-box Windows 裸核运行,是直接使用 sing-box.exe 读取 JSON 配置并启动入站、出站和路由,不依赖图形客户端;WinSW 只是把这个进程包装成 Windows 服务。

先试这条最短路径:下载、校验、运行与成功判据

本文是中立的使用指南,不是 sing-box 项目的官方页面。sing-box 配置使用 JSON,官方配置文档列出了 log、inbounds、outbounds 和 route 等顶层字段;安装包和版本应从 sing-box Releases 按当前页面选择,检查日期为 2026 年 11 月 11 日。

  1. 在 Releases 页面选择 Windows 构建包。Windows 的官方构建涉及 amd64 和 arm64 等架构;不要把 amd64v3 简单等同于“只要支持 AVX2 就能运行”,具体资产名称和兼容性以对应版本页面为准。
  2. 把压缩包解压到一个固定目录,例如 C:\sing-box。将配置文件命名为 config.json,放在同一目录,便于命令和服务引用。
  3. 打开 PowerShell,进入目录:cd C:\sing-box。
  4. 先校验配置: .\sing-box.exe check -c .\config.json。官方配置文档提供了 sing-box check 检查命令,具体参数形式应以当前版本帮助信息为准。
  5. 校验没有报错后运行: .\sing-box.exe run -c .\config.json。

成功判据:校验阶段没有出现 FATAL 或配置解析错误;运行阶段进程保持运行;如果配置包含本地监听端口,可在另一个 PowerShell 执行 Test-NetConnection 127.0.0.1 -Port 2080,看到端口连通后再测试代理请求。端口号只是本文示例,必须与配置中的 listen_port 一致。

现象判断下一步
check 直接报 JSON 或字段错误配置未通过基础检查先按报错定位字段,不要注册服务
运行后立即退出可能是权限、端口或初始化错误保留控制台输出,查看 sing-box 日志
进程运行但端口不通监听地址、端口或配置未按预期加载核对 inbounds 和实际启动参数
端口可用但外部请求失败本地入站已启动,不代表远程出站可用检查出站、路由和上游网络

本文示例只用于验证本地核心和监听端口:mixed 入站接收本机代理请求,direct 出站直接连接目标地址。它不是远程服务器出站,也不会凭空提供代理线路。

配置文件怎么写:先用最小配置验证核心

官方文档说明 sing-box 使用 JSON 配置,并提供 check 和 format 命令。下面是一个仅用于本地验证的最小示例;其中没有远程节点、订阅或 TUN,不适合直接当作完整网络方案。

{"log":{"level":"info","output":"logs\\sing-box.log","timestamp":true},"inbounds":[{"type":"mixed","tag":"mixed-in","listen":"127.0.0.1","listen_port":2080}],"outbounds":[{"type":"direct","tag":"direct-out"}],"route":{"final":"direct-out"}}

mixed 属于可同时处理 HTTP 和 SOCKS 的入站类型,入站字段和监听字段以 官方 Inbound 文档为准。direct 出站的含义是直接发送请求,官方说明见 Direct Outbound 文档。

  • log.level:可使用 trace、debug、info、warn、error 等级别,排查时可临时提高日志级别,但不建议长期使用过于详细的日志。
  • log.output:设置后,sing-box 日志写入指定文件,不再继续写到控制台;相对路径通常应以当前工作目录为基准,因此服务运行时建议使用明确的工作目录和稳定路径。
  • inbounds:决定本机从哪里接收请求。示例只监听 127.0.0.1,仅供本机使用,不是局域网共享监听。
  • outbounds:决定请求如何发出。示例只有 direct,因此不能证明远程节点、WireGuard 或其他协议已经可用。
  • route.final:指定没有更具体规则时使用的最终出站。标签必须与 outbounds 中的标签一致。

保存后可先执行 .\sing-box.exe format -w -c .\config.json 整理格式,再重新运行 check。如果当前版本对参数形式有差异,执行 .\sing-box.exe help 或查看对应版本文档,不要照抄旧版本命令。

前台运行正常后,再注册为 Windows 服务

建议先以前台方式运行并确认端口和日志正常,再做服务化。WinSW 的官方 v3 文档要求 XML 根元素为 service,并支持 executable、arguments、workingdirectory 和日志相关元素,参考 WinSW XML 配置文档。

  1. 准备与 WinSW 可执行文件同目录的文件,例如 sing-box-service.exe、sing-box-service.xml、sing-box.exe 和 config.json。WinSW 要求配置文件名和包装器文件名能够对应,具体命名规则见其命令文档。
  2. 将下面配置保存为 sing-box-service.xml。logpath 的大小写和元素名称必须按当前 WinSW v3 文档核对,不要混用其他服务包装器的写法。

<service><id>sing-box-service</id><name>sing-box service</name><description>Run sing-box with a local configuration</description><executable>%BASE%\sing-box.exe</executable><arguments>run -c "%BASE%\config.json"</arguments><workingdirectory>%BASE%</workingdirectory><logpath>%BASE%\winsw-log</logpath><log mode="roll" /></service>

  1. 以管理员身份打开 PowerShell,进入该目录,执行 .\sing-box-service.exe install,然后执行 .\sing-box-service.exe start。
  2. 查看状态: .\sing-box-service.exe status。WinSW 官方命令文档还提供 stop、restart、uninstall 和 refresh,可参考 WinSW CLI 命令文档。
  3. 修改配置后先停止服务,再以前台方式执行 check;确认无误后重新启动服务。若只修改 XML,可按当前 WinSW 版本支持情况使用 refresh,不确定时采用 stop、修改、start 的回滚路径。

服务成功判据:WinSW status 显示服务正在运行;Windows 服务进程没有立即退出;sing-box 日志没有持续出现初始化错误;本地监听端口可被 Test-NetConnection 检测到。服务运行不等于远程线路可用,后者还取决于出站配置和网络环境。

回滚:先执行 .\sing-box-service.exe stop,再恢复上一份 config.json。如果不再需要服务,可执行 .\sing-box-service.exe uninstall;不要直接删除仍在运行的包装器文件。

日志怎么看:分开处理 sing-box 日志与 WinSW 日志

这是排查中最容易混淆的部分。sing-box 自身的 log.output 控制核心日志输出位置和等级;官方说明见 sing-box Log 配置文档。WinSW 的日志则用于捕获被包装进程的标准输出和标准错误,目录与滚动方式由 WinSW 配置决定,详细说明见 WinSW 日志与错误报告文档。

日志位置主要用途优先检查内容
log.output 指定的文件查看 sing-box 核心运行状态配置解析、入站创建、出站初始化、连接错误
WinSW logpath 目录查看服务包装器和标准输出/错误可执行文件路径、工作目录、服务启动和退出
前台 PowerShell 窗口首次验证配置和实时观察启动后是否立即退出、端口是否监听

推荐按“配置校验→前台运行→服务状态→两类日志”的顺序检查:

  1. 看到 decode config、unknown field 或 JSON 语法错误时,回到配置文件,检查逗号、引号、字段名和标签引用。
  2. 看到端口占用、监听失败或无法绑定时,执行 Get-NetTCPConnection -LocalPort 2080 -ErrorAction SilentlyContinue,并确认没有其他程序占用同一端口。
  3. 看到服务启动后立即停止时,先执行 WinSW 的 status,再查看 WinSW 日志和 sing-box 的 log.output 文件;不要只看 Windows 服务列表中的“已停止”。
  4. 看到本地端口可用但请求失败时,说明至少监听链路可能已经建立,继续核对出站类型、路由最终标签和上游网络;不要把 direct 示例误判成已经连接远程节点。

如果配置中的 log.output 使用相对路径,服务和手动运行的当前目录可能不同。本文示例通过 workingdirectory 固定工作目录;仍无法确认时,可临时改用绝对路径,并在确认问题后恢复为更易迁移的目录结构。

安装与运行速查卡

  • 安装:从当前 Releases 页面选择 Windows 构建包,版本、架构和哈希以该页面为准。
  • 目录:sing-box.exe、config.json 和日志目录放在固定路径,服务 XML 中使用稳定的工作目录。
  • 校验: .\sing-box.exe check -c .\config.json;参数如有变化,以当前版本帮助信息为准。
  • 前台运行: .\sing-box.exe run -c .\config.json。
  • 服务注册:使用 WinSW 的 install、start、status,不要跳过前台验证。
  • 日志:核心日志看 log.output,包装器和标准输出/错误看 WinSW 的 logpath。
  • 不要安装或继续使用的情况:下载来源、文件完整性、配置内容或可执行文件身份无法确认时,先停止操作,不要绕过系统安全提示。

以上路径只覆盖 Windows 上的 sing-box 裸核运行和 WinSW 服务托管,不包含订阅转换、具体远程节点、TUN 配置或多个客户端的混合排查。

常见问题

sing-box Windows 下载 amd64、amd64v3 还是 arm64?

不要只按“Intel 或 AMD”判断,也不要把 amd64v3 简化为 AVX2 兼容标志。先查看 Windows 当前系统类型,再对照对应版本 Releases 页面提供的资产;无法确认时选择当前页面明确标注、且与系统架构一致的构建包。具体版本和资产名称以发布页为准。

sing-box 的 check 命令能不能代替实际运行测试?

不能完全代替。check 主要用于发现配置解析和部分初始化问题;即使校验通过,运行时仍可能遇到端口占用、权限、网络或远程出站问题。因此应按 check、前台 run、端口测试、服务状态的顺序验证。

WinSW 日志和 sing-box 日志有什么区别?

sing-box 的 log.output 是核心自己的日志文件;WinSW 的 logpath 主要用于包装器及被包装进程标准输出和错误输出。服务启动失败时应先看 WinSW 日志确认进程是否被正确启动,再看 sing-box 日志确认配置和网络初始化。

为什么最小配置能启动,却不能证明远程代理可用?

因为示例使用的是 direct 出站,它表示直接连接目标地址,并没有配置远程服务器。这个示例只验证 JSON、核心进程和本地 mixed 监听是否正常;要使用远程线路,必须另外准备与当前版本匹配的出站配置,并按其官方字段文档核对。

修改 config.json 后,Windows 服务为什么没有立即变化?

服务进程通常会继续使用已经加载的配置。建议先执行 WinSW stop,备份并修改配置,手动运行 check,确认无误后再执行 WinSW start;如果只修改了服务 XML,再根据当前 WinSW 版本文档决定使用 refresh 或重新安装。

相关阅读

参考资料

  1. sing-box GitHub Releases
  2. sing-box 配置文件与 check、format 命令文档
  3. sing-box Log 配置文档
  4. sing-box Inbound 配置文档
  5. sing-box Direct Outbound 配置文档
  6. WinSW v3 XML 配置文档
  7. WinSW v3 CLI 命令文档
  8. WinSW v3 日志与错误报告文档