代理内核 · sing-box

sing-box 下载与配置入门:安装内核、校验 JSON 和验证本地代理

先了解这款工具

sing-box 是支持多种代理协议、路由与 DNS 功能的开源网络内核。本篇面向愿意使用命令行和 JSON 的桌面用户,先运行只监听本机的 HTTP/SOCKS 入口;示例使用 direct 出站,不会连接远端代理,也不会修改系统代理或路由。

官方下载 ↗官方资料代理验证工具
WindowsmacOSLinux

区分命令行内核与图形客户端安装包

从 sing-box 官方 Releases 下载稳定版本。资产较多,先找到以 sing-box- 开头的命令行压缩包,再匹配系统与 CPU 架构。SFA、SFM、SFW 等是对应图形客户端的资产,不能把它们与本篇的命令行包混用。

sing-box 命令行压缩包选择方向
设备常见文件标识
Windows Intel/AMD 64 位windows-amd64.zip
Windows ARM 64 位windows-arm64.zip
Apple Silicon Macdarwin-arm64.tar.gz
Intel Macdarwin-amd64.tar.gz
Linux x86-64 / ARM64linux-amd64 或 linux-arm64;按发布说明区分其他运行库变体。

希望用界面导入配置的读者,可以从 Karing 或 Hiddify 开始。这里重点解释内核和本地入口的实际工作方式。

解压后先确认二进制能运行

把下载包解压到自己的测试目录,将配置文件放在同一目录。Linux、macOS 如需执行权限,可对当前目录的二进制执行 chmod +x ./sing-box。不要把首次实验混进已有系统服务的配置目录。

在终端中进入解压目录,运行 ./sing-box version 确认版本;Windows PowerShell 使用 .\sing-box.exe version。下面的命令假设二进制已在 PATH 中,因此写作 sing-box;未加入 PATH 时替换成上述相对路径即可。

Linux 长期运行可以采用官方软件仓库或包管理器方式,但那会涉及系统安装和服务管理。本地入门先使用压缩包,普通用户即可验证本篇的 mixed 入口,无需创建虚拟网卡、安装服务或修改系统代理。命令无法启动时,先排查架构、执行权限和文件路径。

可直接保存的本机 mixed 与 direct 配置

新建 config.json,完整复制下面内容,使用 UTF-8 保存。不要添加注释或保留模板中的占位符。

{
  "log": {
    "level": "info",
    "timestamp": true
  },
  "inbounds": [
    {
      "type": "mixed",
      "tag": "local-mixed",
      "listen": "127.0.0.1",
      "listen_port": 2080,
      "set_system_proxy": false
    }
  ],
  "outbounds": [
    {
      "type": "direct",
      "tag": "direct"
    }
  ],
  "route": {
    "final": "direct"
  }
}

mixed 在同一个端口接受 HTTP 和 SOCKS 请求;listen 限制为本机回环地址;set_system_proxy: false 明确不改系统代理;direct 则直接连接请求目标。端口 2080 只是本例选择,若被占用可改为其他空闲端口,并同步修改验证命令。

这是本地入口与直连出站的验证配置。它能证明内核接收并转发了请求,不能证明远端节点可用,也不会使原本无法直连的网站自动可访问。不要把监听地址改成 0.0.0.0 来解决本机连接问题,那会扩大无认证入口的可访问范围。

先 check 校验,再 run 启动

sing-box check -c config.json
sing-box run -c config.json

先执行第一条;检查成功通常没有额外输出,终端退出状态应为成功。报错时根据文件名、字段路径和提示修改,再重新检查。校验通过后执行第二条,保持该终端运行,查看日志是否出现 127.0.0.1:2080 的监听信息。

配置校验判断的是结构及核心能否建立配置对象,不能替你验证远端密码、网络连通性和业务网站。run 是前台运行,测试结束在该终端按 Ctrl+C 停止;不要关闭窗口后又误以为入口仍在服务。Windows 命令同样替换为 .\sing-box.exe,并确认当前目录含 config.json。

HTTP 与 SOCKS 各发一个实际请求

若电脑已有 Python 3,可在另一个空目录、另一个终端启动只绑定本机的临时网页服务:

python3 -m http.server 18080 --bind 127.0.0.1

Windows 上可使用已安装 Python 的 py -3 代替 python3。保持 sing-box 和临时服务都在运行,再从第三个终端分别执行:

curl --noproxy example.invalid --proxy http://127.0.0.1:2080 --max-time 15 http://127.0.0.1:18080/
curl --noproxy example.invalid --proxy socks5h://127.0.0.1:2080 --max-time 15 http://127.0.0.1:18080/

Windows PowerShell 使用 curl.exe 调用实际 curl 程序。看到临时网页内容,同时 sing-box 日志记录入站和 outbound/direct,说明两种本地入口完成了转发。--noproxy example.invalid 把绕过列表设为不会匹配本次本机目标的域名,避免已有排除代理设置绕过测试,也避免旧版 PowerShell 丢失空字符串参数。

上述 JSON 已用官方 1.14.2 Linux amd64 二进制完成校验,并通过本机 HTTP 与 SOCKS 请求验证;其他系统仍需自己按步骤确认。完成后在两个服务终端按 Ctrl+C 停止。该测试只验证本机处理流程,不涉及节点速度或远端服务。

从本地验证迁移到真实远端配置

本地测试通过后,保留这份配置作为入口恢复点。真实代理至少还需要一个正确的协议出站、对应服务器地址与认证信息,以及让需要代理的请求选中该出站的路由。

根据当前版本的官方协议文档填写配置,切勿把 Clash YAML 的字段直接拼进 sing-box JSON。应用里显示相同协议名称,也不代表导出的字段结构相同。订阅可能包含完整配置,也可能只有分享链接,需先确定输入形式再转换或导入。

迁移时一次只增加一个出站,先校验,再向一个明确目标发起请求。日志必须能证明该请求命中了远端出站,而不是仍由 direct 完成。确认基础链路后,再加入 DNS、规则集或 TUN;复杂旧配置要结合版本迁移说明,避免用已废弃字段重建整份模板。

按监听、语法、DNS 和出站顺序排查

  • connection refused:确认 run 仍在运行,并核对 curl 与配置中的端口一致。程序刚退出时,检查退出前的日志。
  • address already in use:已有进程占用端口。选择另一个空闲端口并同步修改命令,不要直接终止不认识的进程。
  • 配置解析错误:检查引号、逗号、括号与字段类型;先让最小示例通过,再加其他模块。
  • 本机 IP 请求正常,域名请求失败:沿 DNS 和域名解析配置检查,不能仅凭本地端口开放就排除解析问题。
  • 远端请求失败:检查命中的出站、认证参数、设备时间和服务端日志。direct 示例通过不能排除远端协议错误。

遇到系统代理或应用差异时,可接着使用 本站分层故障排查。本例没有设置全局代理,因此其他应用是否使用它取决于应用自己的代理配置。

备份配置与版本,升级后先做兼容检查

备份 config.json、本地规则文件、原二进制版本和启动方式;有凭据的配置保存在受保护目录,不要直接公开。升级前阅读 官方 Migration 说明,确认哪些字段已弃用或替换。

把新二进制放进独立目录,用新版本先执行 check。配置兼容后,再停旧实例、启动新实例,重做本地请求与真实业务验证。保留可恢复的旧配置副本,不要把格式化成功当成升级兼容成功。

本地入门阶段无需开机启动;持续运行时再根据实际系统选择官方服务管理方式。网页教程只描述已核对的版本行为,若未来新版本报字段兼容错误,以对应版本的官方文档和迁移提示为准。

常见问题

这份 sing-box JSON 可以直接访问远端代理吗?

不能。示例只有本机 mixed 入站和 direct 出站,用于验证本地 HTTP/SOCKS 转发。远端代理需要自己的有效服务器和协议出站配置。

运行示例会修改系统代理或路由吗?

不会。示例明确关闭 set_system_proxy,也没有 TUN、自动路由或系统服务安装操作;只有主动使用 127.0.0.1:2080 的请求进入它。

sing-box check 成功意味着所有节点可用吗?

不意味着。check 检查配置结构和核心能否建立配置,节点认证、网络连通性、目标网站及路由结果仍需真实请求验证。

HTTP 和 SOCKS 为什么能使用同一端口?

mixed 入站会识别 HTTP 与 SOCKS 请求。本例监听 127.0.0.1:2080,可分别用 curl 的 http:// 和 socks5h:// 代理地址测试。

Windows PowerShell 的命令应该怎么写?

在解压目录使用 .\sing-box.exe check -c config.json 和 .\sing-box.exe run -c config.json;测试请求使用 curl.exe,避免调用同名命令别名。

为什么配置看起来正确,升级后却报错?

不同版本会调整或移除配置字段。用新二进制执行 check,并查看该版本的官方 Migration 说明;保留旧版本与旧配置,逐项迁移后再验证。

官方来源与核对

本文依据以下官方项目与文档整理,资料核对日期为 2026.10.02。安装包、界面和配置字段会随版本变化,可通过原始资料确认当前要求。

Karing →跨设备配置与规则管理Hiddify →多平台与多种配置格式Xray-core →多协议代理命令行核心

先弄清这些概念

返回工具目录 · 按症状排查问题