sing-box Windows 配置教程 安装、订阅与路由规则完整指南

在跨平台通用网络代理与网络协议栈的技术版图中,由 Nekoray、SagerNet 社区核心开发者主导孵化的 sing-box,被公认为近年来代理工具生态中最具革命性与前瞻性的“次时代通用网络核心”。不同于早期基于历史沉淀代码缝补衍生的工具,sing-box 从第一行 Go 代码开始,便以现代高并发架构、极致纯粹的代码规范、统一的 JSON 抽象模型以及对新一代传输协议的原生支持为最高设计原则。
对于 Windows 平台的技术极客、企业级网络管理员与重度网络使用者而言,sing-box 既可以作为极轻量、零界面开销的后台系统服务静默守护,也可以作为现代图形客户端(如 GUI for sing-box)的动力心脏澎湃运转。然而,sing-box 全面摒弃了传统 YAML 语法,转向严谨但相对陡峭的模块化 JSON 配置结构与 rule_set 独立规则集体系,使得许多习惯了传统 Clash 模式的用户初次接触时产生畏难情绪。本篇万字深度指南将从底层设计哲学切入,全景式呈现 sing-box 在 Windows 上的安装选型、完整核心配置 JSON 拆解、订阅转换导入、TUN 虚拟网卡调优以及生产级排障实践。
sing-box 的底层技术哲学与四大核心模块拓扑
理解 sing-box 的工作原理,首先必须抛弃以往对于代理客户端“仅处理 HTTP 端口转发”的狭隘认知。sing-box 是一个高度模块化的可编程网络数据路由引擎。
如上图所示,sing-box 的整个运行生命周期由四个高度正交且清晰解耦的四大核心技术支柱组成:
一 入站层(Inbounds)
定义网络数据包如何进入 sing-box。除了支持传统的 HTTP、SOCKS5 混合代理端口外,其核心优势在于深度整合了自研的高性能 TUN 虚拟网卡驱动,能够在三层网络层透明捕获系统的所有 TCP、UDP 与 ICMP 数据包。
二 DNS 路由子系统(DNS Subsystem)
在 sing-box 的设计规范中,DNS 不再是附属于主路由的简易开关,而是一个拥有独立规则树的子路由器。它允许用户为国内域名与海外域名配置截然不同的上游解析器,并原生支持高效的 Fake-IP 映射机制。
三 路由引擎与规则集(Route & Rule-Set)
sing-box 彻底淘汰了冗长、臃肿且解析缓慢的内嵌规则条目,转向全新的二进制预编译规则集(.srs 格式)与 Headless Rule-Set 架构。路由引擎负责在微秒级内比对数据包的域名、目标 IP、出站网络协议与操作系统进程,决定出站流向。
四 出站层(Outbounds)
定义流量如何流向目标目的地。涵盖原生节点协议(如 VLESS-Reality、Hysteria 2、Shadowsocks 2022)、自动化调度策略组(Selector、URLTest)以及底层的 Direct 直连和 Block 阻断出站。
Windows 平台安装选型与部署形态 CLI 服务 vs GUI 客户端
在 Windows 操作系统中运行 sing-box,通常有两种主流部署形态,技术人员可以根据使用场景灵活权衡。
一 极客形态 命令行 CLI 与 Windows 原生后台服务部署
对于服务器、软路由、本地开发工作站或追求绝对纯净的用户,直接运行官方编译的原生二进制程序是效率最高的方式:
- 访问 sing-box 官方 GitHub Releases 发布页,下载对应架构的发布包(现代 64 位 Intel / AMD 处理器选择
sing-box-x.y.z-windows-amd64.zip); - 解压至系统非保护路径,例如
C:\Tools\sing-box; - 将解压出的可执行程序重命名为
sing-box.exe; - 在该目录下放置编写好的
config.json配置文件; - 在终端中通过
sing-box.exe run即可直接在控制台中启动核心。
二 桌面形态 现代化图形客户端选型
若习惯直观的图形化界面与节点测速矩阵,推荐使用社区基于 sing-box 打造的开源图形壳:
- GUI for sing-box:采用现代跨平台技术构建,完美契合 sing-box 原生字段模型,支持订阅管理、可视化规则覆写与实时拓扑;
- NekoBox for Windows:基于 C++ / Qt 打造,性能极其卓越,深度集成 sing-box 内核,支持直观的节点测速与自定义策略组选择。
核心配置文件(config.json)深度逐层拆解与范式
sing-box 所有的魔力都汇聚在一份严谨的 JSON 配置文件中。以下我们将拆解一份生产级经过实战验证的标准配置模板。
一 完整的生产级 config.json 配置范式
{ "log": { "level": "info", "timestamp": true }, "dns": { "servers": [ { "tag": "dns-remote", "address": "https://1.1.1.1/dns-query", "address_resolver": "dns-direct", "strategy": "ipv4_only", "detour": "select-proxy" }, { "tag": "dns-direct", "address": "223.5.5.5", "strategy": "ipv4_only", "detour": "direct" }, { "tag": "dns-fakeip", "address": "fakeip" } ], "rules": [ { "outbound": "any", "server": "dns-direct" }, { "rule_set": "geosite-cn", "server": "dns-direct" }, { "query_type": ["A", "AAAA"], "server": "dns-fakeip" } ], "fakeip": { "enabled": true, "inet4_range": "198.18.0.0/15" }, "strategy": "ipv4_only" }, "inbounds": [ { "type": "mixed", "tag": "mixed-in", "listen": "127.0.0.1", "listen_port": 2080, "sniff": true }, { "type": "tun", "tag": "tun-in", "interface_name": "singbox-tun", "inet4_address": "172.19.0.1/30", "auto_route": true, "strict_route": true, "stack": "system", "sniff": true } ], "outbounds": [ { "type": "selector", "tag": "select-proxy", "outbounds": [ "auto-urltest", "香港 01 专线", "日本 01 专线", "direct" ], "default": "auto-urltest" }, { "type": "urltest", "tag": "auto-urltest", "outbounds": [ "香港 01 专线", "日本 01 专线" ], "url": "http://cp.cloudflare.com/generate_204", "interval": "3m", "tolerance": 50 }, { "type": "vless", "tag": "香港 01 专线", "server": "hk01.example.com", "server_port": 443, "uuid": "e9b8b0e6-8c8f-4d3b-8211-1a2b3c4d5e6f", "flow": "xtls-rprx-vision", "tls": { "enabled": true, "server_name": "gateway.icloud.com", "reality": { "enabled": true, "public_key": "YOUR_REALITY_PUBLIC_KEY_HERE", "short_id": "0123456789abcdef" }, "utls": { "enabled": true, "fingerprint": "chrome" } } }, { "type": "direct", "tag": "direct" }, { "type": "block", "tag": "block" }, { "type": "dns", "tag": "dns-out" } ], "route": { "rule_set": [ { "tag": "geosite-cn", "type": "remote", "format": "binary", "url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs", "download_detour": "select-proxy" }, { "tag": "geoip-cn", "type": "remote", "format": "binary", "url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs", "download_detour": "select-proxy" } ], "rules": [ { "protocol": "dns", "outbound": "dns-out" }, { "ip_is_private": true, "outbound": "direct" }, { "rule_set": "geosite-cn", "outbound": "direct" }, { "rule_set": "geoip-cn", "outbound": "direct" } ], "auto_detect_interface": true, "final": "select-proxy" }}规则集(Rule-Set)架构与二进制 SRS 性能飞跃
在 sing-box 的技术革新中,最为震撼的当属其首创的“二进制规则集”(Binary SRS 格式)。
一 为什么废弃传统的内联规则
在早期代理软件中,配置文件内部通常写满了成百上千行 DOMAIN-SUFFIX 或 IP-CIDR。这导致两大致命缺陷:
- 配置极其臃肿:单个配置文件往往达到数万行,人工审阅极其困难;
- 内存膨胀与解析卡顿:每次启动核心,程序需要逐行解析文本字符串并转换为内存对象。在低功耗设备上,仅规则解析就需要消耗数百兆内存与长达十余秒的时间。
二 SRS 二进制规则集的工程优势
sing-box 团队定义了一套二进制规则集规范:
- 预编译序列化:开源社区维护的规则集在云端 CI 流水线中提前完成了二叉树或 Radix 树的编译,输出为精炼的
.srs二进制文件; - 极速内存直读:客户端下载
.srs文件后,通过底层内存映射技术直读,省去了所有的反序列化过程; - 独立自动更新:在
route.rule_set中声明type: remote并配置更新周期。sing-box 会在后台独立静默拉取规则集,完全不需要重启核心或重新加载主配置文件。
TUN 虚拟网卡调优与系统级完全透明代理实战
为了让 Windows 平台上的网络游戏、开发终端、Docker 容器以及未适配代理的各类复杂应用享受真全局加速,正确调校 TUN 模块至关重要。
一 TUN 核心参数深度优化要点
在 inbounds 的 TUN 配置中,以下几个关键参数的设置直接决定了网络的稳定性与吞吐上限:
stack: "system":强烈推荐使用系统原生网络协议栈,在 Windows 10/11 上能带来极致的零拷贝吞吐与极低 CPU 占用;auto_route: true:指示内核自动修改操作系统的全局路由表,将默认网关重定向至虚拟网卡;strict_route: true:启用严格路由防护,彻底封死因多物理网卡、IPv6 漏探引发的流量穿透泄漏;auto_detect_interface: true:在route中必须开启该项,内核会自动识别承载物理公网流量的真实网卡,避免加密握手流量再次卷入 TUN 虚拟网卡形成毁灭性的死锁环路。
外部控制 API(Clash API)与现代化 Web 可视化仪表盘集成
对于追求轻量化后台服务运行、同时又渴望拥有图形化测速与节点切换面板的用户,sing-box 贴心地内置了兼容 Clash API 规范的实验性模块。
一 开启 experimental.clash_api 模块配置
在 config.json 的顶层增加以下控制块声明:
{ "experimental": { "clash_api": { "external_controller": "127.0.0.1:9090", "external_ui": "metacubexd", "external_ui_download_url": "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip", "external_ui_download_detour": "select-proxy", "secret": "MySuperSecretKey2026", "default_mode": "rule" } }}二 体验极客级 Web 仪表大屏
配置生效后,sing-box 会在后台自动下载解压优秀的开源 Web 控制台。用户只需在日常浏览器中输入 http://127.0.0.1:9090/ui,在登录窗口输入此前配置的 Secret 密钥,即可拥有一个与商业级防火墙无异的可视化控制中心:
- 实时流量与吞吐曲线:直观监控每一秒的上下行网络带宽,精准捕捉后台异常大流量下载;
- 节点延迟并发测速:点击测速按钮,仪表盘并发探测所有可用节点的往返时延,并以色块直观区分优质与故障节点;
- 活动连接实时追踪:全面洞悉当前系统的每一个出站连接来源,支持一键掐断恶意偷跑流量的连接会话。
进程级路由与 Windows 应用程序精准定向分流
在 Windows 平台开发和高频办公过程中,很多用户希望实现“特定软件走特定出口”的极细颗粒度分流策略:例如让 Git 终端与 Docker 镜像构建走美国专线,让外服网游走香港极速专线,而国内聊天与网银工具强制走直连。
一 基于 process_name 的精准进程匹配
sing-box 能够通过 Windows 底层网络钩子,在数据包进入虚拟网卡的首帧精确嗅探出所属的系统进程名(可执行文件名称)。在 route.rules 中可以编写如下高阶规则:
[ { "process_name": ["git.exe", "ssh.exe", "curl.exe"], "outbound": "select-proxy" }, { "process_name": ["WeChat.exe", "QQ.exe", "DingTalk.exe"], "outbound": "direct" }, { "process_name": ["steam.exe", "cs2.exe", "ApexLegends.exe"], "outbound": "香港 01 专线" }]二 进程级路由对系统性能的优化价值
传统的基于域名反查与 IP 归属的路由匹配,需要先经历完整的 DNS 解析与庞大的 IP 网段二叉树检索,在极高并发连接时会产生轻微的时延开销。而进程级路由在数据包离开应用套接字的瞬间便直接完成了出站判定,极大地提升了游戏与高频网络请求的数据包吞吐效率。
自建规则集编译实战 从 JSON 到二进制 SRS 格式
除了直接引用社区维护的官方规则集,在许多大型研发团队与企业内网中,管理员往往需要维护私有的域名与 IP 分类数据库。sing-box 提供了强大的本地规则编译工具链。
一 编写源代码 JSON 规则集文件
在本地新建一个名为 my-company-rules.json 的文本文件,采用标准的规则定义规范:
{ "version": 1, "rules": [ { "domain": [ "corp.internal.net", "gitlab.dev.local" ], "domain_suffix": [ ".internal.cloud", ".devcluster.com" ], "ip_cidr": [ "10.200.0.0/16", "172.28.0.0/14" ] } ]}二 命令行编译为高性能 SRS 二进制
在 Windows 终端中调用 sing-box 内置的 rule-set compile 子命令,一键将人类可读的 JSON 文件编译为硬件级优化的二进制文件:
# 将 JSON 规则集编译为二进制 .srs 文件C:Toolssing-boxsing-box.exe rule-set compile --output my-company-rules.srs my-company-rules.jsonWrite-Host "私有二进制规则集已成功完成预编译构建!" -ForegroundColor Green随后在生产配置中的 route.rule_set 内通过 type: local 直接引用编译好的 my-company-rules.srs,即可享受微秒级极速规则判定。
纯净 DNS 架构深度调优 Fake-IP 缓存持久化与防泄漏
在代理网络运维过程中,DNS 的配置直接左右着整个网络的加载响应速度与隐私防线。sing-box 的独立 DNS 子系统允许用户实现严密的数据流控制。
一 Fake-IP 模式的工作闭环与加速原理
当启用 Fake-IP 模式时,内核会在本地维护一个高优先级的保留地址池(通常为 198.18.0.0/15)。当浏览器或操作系统发起域名查询时,sing-box 立即从池中分配一个虚拟 IP 应答,同时在内存哈希表中牢牢绑定该虚拟 IP 与原始域名的对应关系:
- 阻断本地污染:请求域名在本地网络中不触发实际的 DNS 递归查询,因此彻底免疫了本地 ISP 运营商的劫持与伪造应答;
- 极速建立连接:应用程序无需等待耗时数十毫秒的远程 DNS 解析返回结果,即刻开始建立 TCP 握手握流,显著减少网页初次渲染的首包延迟;
- 避免 IP 归属地穿透:对于具有严格风控策略的海外流媒体与 AI 服务,若本地 DNS 解析泄露了国内真实 IP,可能触发跨区风控封锁。Fake-IP 彻底切断了本地与远端的解析联动,确保了地理身份的纯粹性。
二 针对国内银行与企业内网的白名单豁免
针对国内银行、国企办公系统等特殊内网系统,可以在配置文件中将特定域名加入 fakeip.rules 白名单,强制其走系统的原生 DNS 解析流程,实现极致的安全与兼容平衡。
高可用容灾出站与多节点负载均衡调度编排
在生产网络环境中,单点节点的突发故障往往会导致业务长连接中断。sing-box 原生提供了极其丰富的出站策略类型。
一 Fallback 容灾回退组
Fallback 策略组按顺序排列节点。正常情况下始终使用首选节点,仅当首选节点发生丢包或健康检查失败时,无缝切换至备用节点:
{ "type": "urltest", "tag": "fallback-cluster", "outbounds": [ "香港 01 专线 (首选)", "日本 01 专线 (备用)", "新加坡 01 专线 (容灾)" ], "url": "http://cp.cloudflare.com/generate_204", "interval": "3m", "tolerance": 50}二 负载均衡(Load-Balance)算法实战
在高并发数据爬取或批量分片下载场景下,sing-box 支持配置基于哈希散列的负载均衡:
- Round-Robin(轮询机制):将进入内核的每一个新会话按顺序交替分发至节点池,实现多节点总带宽的聚合拉满;
- Consistent-Hashing(一致性哈希):根据请求的目标域名或 IP 进行哈希计算,将同一目的地的流量绑定在同一出口节点上,既分散了连接并发,又有效避免了因对外 IP 频繁变动触发网银或社交账号的风控异常。
Windows 任务计划与系统守护进程健康自愈体系
对于以 CLI 形式在后台运行的用户,保障进程在开机自启、睡眠唤醒或意外崩溃时能够自动自愈拉起,是构筑企业级可用性的关键保障。
一 借助 Windows 计划任务实现开机静默提权启动
- 按下快捷键
Win + R打开taskschd.msc任务计划程序; - 点击“创建任务”,在“常规”选项卡中命名为
SingBox-Daemon; - 勾选“不管用户是否登录都要运行”以及“使用最高特权运行”(必须获取管理员权限以创建 Wintun 虚拟网卡);
- 在“触发器”选项卡中,新建触发器选择“在系统启动时”;
- 在“操作”选项卡中,新建操作选择“启动程序”,程序路径填入
C:\Tools\sing-box\sing-box.exe,添加参数为run -c C:\Tools\sing-box\config.json; - 在“条件”选项卡中,取消勾选“只有在计算机使用交流电源时才启动此任务”,保证笔记本电池供电下依然自动就绪。
二 睡眠唤醒后的网络健康探针脚本
针对笔记本睡眠唤醒后网络套接字句柄失效的偶发情况,可以在桌面常备一个自动化修复探针:
# sing-box 唤醒自愈与网络健康测试脚本$ServiceName = "SingBoxService"try { $Status = (Get-Service -Name $ServiceName -ErrorAction Stop).Status if ($Status -ne "Running") { Write-Host "检测到服务异常中断,正在尝试拉起服务..." -ForegroundColor Yellow Restart-Service -Name $ServiceName -Force }} catch { Write-Host "未找到后台服务,直接测试核心进程..." -ForegroundColor Cyan}
# 刷新本地 DNS 缓存并验证网关连通性Clear-DnsClientCache$TestResult = Test-Connection -TargetName "172.19.0.1" -Count 2 -Quietif ($TestResult) { Write-Host "TUN 虚拟网卡通信健康,网络漫游通道就绪!" -ForegroundColor Green} else { Write-Host "虚拟网卡网关响应异常,请检查 Wintun 驱动状态!" -ForegroundColor Red}订阅提供者(Outbound Providers)多机场聚合与自动化更新
除了单节点手工编写,现代版本的 sing-box 深度支持外部出站提供者。你可以直接在配置文件中声明引入机场的远端订阅,实现节点池的自动化动态填充:
{ "outbound_providers": [ { "type": "remote", "tag": "airport-primary", "download_url": "https://sub.example.com/api/v1/client/subscribe?token=secret", "path": "./providers/primary.json", "download_interval": "12h", "download_detour": "direct" } ]}通过将远端订阅文件持久化保存在本地磁盘目录,即使机场官网遭受偶发性宕机,客户端重启时依然能无缝加载本地缓存的节点数据,极大提升了生产级高可用保障。
生产级网络诊断与服务守护管理工具链
对于以 CLI 命令行或后台服务方式运行的用户,熟练运用生产级管理工具能让运维效率大幅提升。
一 使用 NSSM 将 sing-box 注册为 Windows 原生系统服务
NSSM(Non-Sucking Service Manager)是 Windows 平台极为优秀的后台服务包装神器。通过 NSSM 可以将 sing-box 封装为开机无需登录即可静默自启的后台守护服务:
# 下载并调用 nssm.exe 注册 sing-box 后台服务nssm install SingBoxService "C:Toolssing-boxsing-box.exe" "run -c C:Toolssing-boxconfig.json"nssm set SingBoxService AppDirectory "C:Toolssing-box"nssm set SingBoxService Start SERVICE_AUTO_STARTnssm set SingBoxService AppStdout "C:Toolssing-boxstdout.log"nssm set SingBoxService AppStderr "C:Toolssing-boxstderr.log"
# 启动该系统服务Start-Service SingBoxServiceWrite-Host "sing-box 已成功注册为 Windows 系统后台自愈服务!" -ForegroundColor Green二 验证配置语法有效性
在每次修改 config.json 后,切勿直接盲目重启服务。先在控制台中执行语法检测指令:
# 验证 sing-box 配置语法与规则合法性C:Toolssing-boxsing-box.exe check -c C:Toolssing-boxconfig.json如果终端输出 configuration check successful,即代表 JSON 结构、协议参数与规则集声明完全合规,方可安全重启生效。
主流核心与客户端全维度特性横向对比
为了帮助用户更加清晰地评估 sing-box 的定位与适用场景,下表对各类主流代理核心进行了全维度的横向评测:
| 评估维度 | sing-box 原生内核 | Xray-core 原生内核 | Mihomo (原 Clash.Meta) | 原版 Clash Premium (停更) |
|---|---|---|---|---|
| 开发编程语言 | 纯 Go 语言 (全新架构) | Go 语言 (基于 V2Ray 演进) | Go 语言 (基于 Clash 演进) | Go 语言 (经典老架构) |
| 配置语言标准 | 严谨模块化 JSON | 经典分层 JSON | 声明式 YAML | 传统 YAML |
| 规则集技术 | 二进制 SRS (内存直读) | DAT 规则数据库 | MRS 二进制与文本 Provider | 基础纯文本 Rules |
| TUN 虚拟网卡 | 原生集成 Wintun 极致优化 | 依赖系统外部虚拟网卡 | 原生深度集成 Wintun | 基础 TAP/TUN 支持 |
| 新协议演进 | 极快 (第一时间同步全协议) | 极快 (Reality 官方发源地) | 极快 (全生态协议无缝吸收) | 停滞 (不支持新协议) |
| 常驻内存开销 | 极低 (通常 15MB 至 35MB) | 较低 (通常 40MB 至 80MB) | 较低 (通常 30MB 至 60MB) | 偏高 (通常 80MB 以上) |
4个真实生产环境排障复盘案例
案例一 启动服务时提示 panic json syntax error
故障现场:某技术人员在手工编辑完 config.json 后,通过命令行启动客户端,程序瞬间崩溃闪退,控制台高频打印 fatal error: failed to parse config: invalid character '}' looking for beginning of value。
根本原因:JSON 规范对格式有着极严苛的语法要求(不允许在对象或数组的最后一个元素末尾多写逗号)。该用户在 outbounds 数组末尾添加完新节点后,多保留了一个逗号,导致 JSON 解析器语法树构建失败。
处置流程:
- 使用 VS Code 打开该
config.json文件; - 观察编辑器右下角的语法检测报警,定位到第 84 行红线标注处;
- 删除末尾多余的英文逗号;
- 在终端运行
sing-box check -c config.json,控制台返回检查通过; - 重新启动服务,核心毫秒级正常加载。
案例二 开启 TUN 模式后出现死循环且网络瞬间断联
故障现场:用户在配置文件中开启了 TUN 虚拟网卡入站,并设置 auto_route: true。启动程序后,所有国内国外网页全部断连,物理网卡流量瞬间被跑满,CPU 单核占用飙升至 100%。
根本原因:用户在 route 配置段中遗漏了 auto_detect_interface: true 这一关键参数。当 sing-box 将系统默认路由接管至虚拟网卡后,客户端自身向海外代理服务器发起的加密握手流量,由于缺乏物理网卡出口绑定,被再次卷入虚拟网卡中,形成了致命的“数据包无限自循环转发”。
处置流程:
- 强制终止
sing-box.exe进程以解除死循环; - 在
route配置块中加入"auto_detect_interface": true参数; - 确保直连规则中加入了针对节点服务器 IP 的豁免;
- 重新启动核心,加密握手流量精准绑定物理以太网卡出网,死循环彻底消失,全网畅通。
案例三 二进制规则集 SRS 下载超时导致核心阻塞
故障现场:首次在新机器上启动 sing-box 时,控制台持续打印 downloading rule-set: geosite-cn,随后因 GitHub 网络波动提示 context deadline exceeded,整个核心迟迟无法进入正常监听状态。
根本原因:配置中引用的远程规则集 URL 直接指向了公网 raw.githubusercontent.com,而在机器尚未建立代理通道的初次启动阶段,直连访问 GitHub 容易发生连接超时,而规则集又被标记为启动前必须下载。
处置流程:
- 在规则集声明中增加
download_detour: "select-proxy"参数,指示规则集的拉取允许经由已建立的代理节点进行; - 或者在无网络环境下,通过离线方式提前在本地下载好
geosite-cn.srs与geoip-cn.srs二进制文件,将规则集类型由remote修改为本地local并指定本地文件路径; - 再次启动,核心直接内存映射本地 SRS 文件,耗时不足 20 毫秒即完成加载。
案例四 电脑系统时钟偏慢导致 Reality 协议握手静默丢包
故障现场:用户配置了基于 VLESS-Reality 的高性能出口节点,运行 sing-box.exe 没有任何报错,但只要通过本地代理端口发起任何请求,连接均卡死在握手阶段,最终返回超时错误。
根本原因:双系统切换导致 Windows 本地系统时钟比北京基准时间慢了 4 分钟。Reality 协议内嵌的时间戳校验算法判定客户端握手包无效,直接丢弃。
处置流程:
- 在 PowerShell 管理员模式下执行时钟同步指令:
w32tm /resync /force; - 确认系统时间已完全精确对齐标准网络时间;
- 再次发起网络请求,Reality 节点在 80 毫秒内完成 TLS 伪装握手,海外网络秒级畅通。
关于 sing-box Windows 使用的 10 个高频疑难解答 (FAQ)
Q1 sing-box 相比 Clash 和 Xray,最大的核心优势是什么
A1:最大的优势在于其全新架构的极简度、极低的系统常驻资源占用以及二进制规则集(SRS)带来的超凡匹配速度。sing-box 没有任何历史包袱,统一了全协议抽象模型,同时在 Windows 平台上提供了对 Wintun 虚拟网卡的原生级深度调优,特别适合追求极致性能与稳定性的极客用户。
Q2 为什么编辑 config.json 时总是报错,有什么好的工具推荐
A2:JSON 格式不允许尾部多余逗号,且对双引号、括号匹配有着严苛要求。强烈推荐使用 Visual Studio Code 或 Sublime Text 编辑 JSON 文件,并安装官方提供的 sing-box schema 校验插件,插件能够在你输入参数时提供实时的字段自动补全和红线语法纠错,极大降低排错成本。
Q3 可以在同一个配置文件中同时配置混合代理端口和 TUN 模式吗
A3:完全可以。在 inbounds 数组中,你可以同时定义一个 mixed 类型的入站(例如监听 127.0.0.1<2080>2080> 用于兼容旧版浏览器或第三方软件代理)和一个 tun 类型的入站(用于操作系统全量流量接管)。两者在内核内部共享相同的 DNS 与路由引擎,互不干扰、相得益彰。
Q4 怎么把机场提供的 Clash 订阅链接转换成 sing-box 能用的配置
A4:你可以使用支持 sing-box 格式的开源订阅转换工具(如本地搭建的 Subconverter 最新版),在转换参数中指定 target=singbox 即可一键生成标准的 JSON 配置;或者直接使用支持直接导入 Clash 订阅并自动在底层转译为 sing-box 运行的现代图形客户端(如 GUI for sing-box 或 NekoBox)。
Q5 为什么开启 TUN 模式后,国内某些网银或办公软件提示网络环境异常
A5:部分对安全性极度敏感的国内金融软件会在系统底层检测活动网络适配器。一旦检测到存在 Wintun 等虚拟网络接口,可能触发防御报警。遇到此类场景,可临时在终端或服务管理器中暂停 sing-box 服务,待金融业务办理完毕后再行开启。
Q6 远程规则集(remote rule-set)多长时间会自动更新一次
A6:如果在配置中未明确声明 interval,sing-box 默认会在启动时比对 ETag 或根据默认策略刷新。建议在 remote 规则集对象中显式加上 "update_interval": "24h",指示核心每隔 24 小时在后台静默检查并增量更新一次,既保证规则新鲜,又避免了频繁请求。
Q7 为什么关闭控制台窗口后代理就立刻停止了
A7:在 CMD 或 PowerShell 中直接运行 sing-box.exe run 时,核心进程是作为当前控制台的前台子进程运行的。一旦关闭终端窗口,操作系统会向子进程发送终止信号。若想让其在后台长期静默运行,建议使用本文第六节介绍的 NSSM 工具将其注册为 Windows 原生系统服务。
Q8 sing-box 支持打游戏加速(UDP 报文转发)吗
A8:原生完美支持。只要在 inbounds 中启用了 tun 模式,所有的游戏 UDP 流量都会被虚拟网卡截获。随后在出站策略中为游戏选择低延迟的 IPLC 专线节点,即可实现媲美专业商业游戏加速器的低延迟联机表现。
Q9 如何在日常运行中查看 sing-box 的实时吞吐与当前活动连接
A9:可以在配置中开启 experimental.clash_api 模块,声明开放本地控制端口(如 9090)和安全 Secret。随后在浏览器中打开任何主流的 Clash 外部仪表盘 Web 面板(如 Yacd 或 Metacubexd),连接本地控制端口即可获得极其酷炫的可视化流量看板与实时连接审计大屏。
Q10 升级 sing-box 版本时需要备份哪些文件
A10:sing-box 本身是纯绿色单文件设计。升级时只需前往官方 GitHub 下载新版的压缩包,停止当前服务,将新版的 sing-box.exe 覆盖替换旧文件即可,原有的 config.json 与下载缓存的 .srs 规则集完全不受影响,实现真正的秒级平滑升级。
局域网透明网关与下游设备免配置漫游实战
除了在单台 Windows 电脑上运行代理,sing-box 凭借其高度优化的网络协议栈,完全有能力将这台 Windows 电脑打造为家庭或研发实验室的“局域网旁路由软网关”。
一 开启 mixed 混合端口与局域网放行
在入站配置中,将监听地址由 127.0.0.1 修改为 0.0.0.0,指示内核接受来自局域网任意内网 IP 的网络连接:
{ "type": "mixed", "tag": "mixed-lan-in", "listen": "0.0.0.0", "listen_port": 2080, "sniff": true, "users": []}二 Windows 防火墙入站规则一键放行
为了防止 Windows Defender 防火墙拦截局域网内其他设备的数据包,需在管理员终端中添加防火墙放行策略:
# 在 Windows 防火墙中放行 sing-box 混合代理端口入站连接New-NetFirewallRule -DisplayName "SingBox LAN Inbound" -Direction Inbound -LocalPort 2080 -Protocol TCP -Action AllowWrite-Host "局域网入站代理端口 2080 已成功放行!" -ForegroundColor Green此时,局域网内的手机、iPad、Nintendo Switch 或开发板,只需在 Wi-Fi 高级设置中将 HTTP / SOCKS5 代理填入电脑的局域网 IP(例如 192.168.1.150)与端口 2080,即可全员无感共享高速出海通道。
uTLS 客户端指纹伪装与防主动探测加固
在针对跨国加密流量的现代审查对抗中,深度包检测(DPI)系统不仅会审查数据包的目的 IP 与端口,还会细致分析 TLS Client Hello 握手报文中的加密套件列表、扩展参数顺序以及签名算法等细微特征(即 JA3 / JA4 指纹)。
一 uTLS 模拟大厂浏览器指纹
如果客户端使用 Go 语言原生的标准库进行 TLS 握手,其指纹特征极为明显,很容易被审查探针标记为“疑似自动化代理爬虫”。sing-box 深度集成了 uTLS 库,能够在二进制层面精确伪装为真实主流浏览器的握手特征:
fingerprint: "chrome":精确模拟全球市场份额最大的 Google Chrome 浏览器的 TLS 握手特征,完全混杂在数以亿计的常规网民流量中;fingerprint: "ios":模拟 Apple iOS Safari 浏览器的握手签名,适合在移动协同或特定的苹果生态网络中隐匿特征;- 安全效益:从根本上杜绝了因客户端指纹单一被审查防火墙定点识别丢包的隐患,大幅延长了自建 VPS 节点或机场专线节点的存活周期。
基于 GitOps 的跨设备配置版本控制与自动化测试
对于在多台工作站、笔记本及家庭服务器之间频繁切换的技术人员而言,维护离散的 config.json 容易导致规则配置碎片化与版本不一致。引入 GitOps 理念进行版本控制是极客运维的最佳实践。
一 私有 Git 仓库托管与敏感变量隔离
- 结构拆分:将通用的路由分流规则、DNS 配置与私有节点凭据进行解耦存储;
- 凭据脱敏防泄露:严禁将包含真实 UUID 或密码密钥的配置文件提交至公开 GitHub 仓库。通过私有仓库或借助环境变量(如
.env文件)在部署时动态渲染生成最终配置文件; - 自动化提交钩子(Pre-commit Hook):在本地 Git 仓库中配置 pre-commit 钩子,每次执行
git commit前自动调用sing-box check -c config.json。只有通过了语法校验的配置才被允许提交,从代码源头上消除了低级语法错误导致生产服务崩溃的风险。
二 跨端无缝拉取与热重载流水线
在 Windows 工作站中编写轻量级的同步脚本,配合计划任务每日自动从私有 Git 仓库执行 git pull。若检测到配置发生变动,脚本自动触发服务热重载,实现跨设备多终端规则配置的永续自动漫游与高度协同。
日志级别精细调校与全链路故障定位规范
在日常稳定运行阶段与新节点联调阶段,合理设定日志记录级别对排查问题与节约硬盘 I/O 资源至关重要。
一 生产级日志级别动态切换
在 config.json 的 log 块中支持配置不同的输出级别:
warn或error(日常生产推荐):仅在发生严重握手异常或配置错误时记录日志,日常静默无感运行,最大限度减少磁盘写入和日志文件膨胀;debug或trace(排障联调模式):打印每一个进入内核的数据包来源、DNS 嗅探结果以及命中的具体规则集名称。在新机场节点调试、排查特定网站无法分流时,开启 debug 级别能够让你以毫米级的颗粒度洞悉数据流向。
驾驭终极网络路由核心的技术总结
在通用网络代理技术不断演进的浪潮中,sing-box 展现出了令人惊艳的工程美感与纯粹的技术追求。它不仅彻底打破了传统工具臃肿松散的架构宿命,更以一整套严密的 JSON 模型与高效的二进制规则集规范,树立了现代网络分流的全新标杆。
总结在 Windows 平台上驾驭 sing-box 的核心技术心法,关键在于筑牢“四大支柱”:
- 架构先行明边界:深刻理解 Inbound、DNS、Route 与 Outbound 的正交协作,让每一股数据流的来龙去脉了然于胸;
- 规则集选型释潜能:坚决拥抱二进制 SRS 规则集,以纳秒级的查询速度和微小的内存开销告别冗长 YAML 文本的拖累;
- 虚拟网卡避环路:严密配置
auto_detect_interface与出口绑定,消除隧道自嵌套死锁,让全局透明加速坚如磐石; - 服务治理保长青:善用 NSSM 系统服务托管与严密的语法校验工具链,构筑开机即用、自愈容灾的现代化生产级出网底座。
只要掌握了这套系统化的架构认知与工程实践,你便能从容驾驭这一通用网络利器,在 Windows 平台上打造出极致轻盈、澎湃强悍且充满安全掌控力的现代化私人网络超级中枢。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!












