月神云 - 全终端加速服务

sing-box 对比 Xray:按协议、平台和迁移成本选择

更新于 2026-10-24 · moontoday.store

简答:多协议、TUN、DNS 分流和跨平台客户端优先评估 sing-box;VLESS+REALITY+Vision 服务端优先评估 Xray。两者可共存,但不能直接互换配置,应按协议和平台逐项核对。

定义:sing-box 和 Xray 都是网络代理核心,不等于完整客户端或协议本身:核心负责连接、路由、DNS 和系统接管,客户端负责界面与权限,协议决定两端能否互通。

30 秒先做决定:你该选 sing-box 还是 Xray

如果你要在多个协议之间切换,同时使用 TUN、DNS 分流、规则集或跨平台图形客户端,先评估 sing-box;如果你主要部署 VLESS + REALITY + Vision,尤其是已有 Xray 服务端配置,先评估 Xray。两者都不是“安装后自动可用”的完整服务,最终还要看客户端、协议组合、系统权限、线路和配置是否匹配。

  1. 先问用途:是 Windows、Android、iOS、Linux 客户端,还是 VPS 服务端、路由器透明代理?
  2. 再问协议:是 VLESS + REALITY,还是 Hysteria2、TUIC、WireGuard、AnyTLS 等多协议混用?
  3. 再问接管方式:是否需要 TUN、系统 VPN、DNS 分流或透明代理?
  4. 最后看迁移:已有 Xray 配置就先做字段映射和单节点验证,不要直接把 JSON 文件互换。
你的主要需求优先评估理由
VLESS + REALITY + Vision 服务端XrayXray 官方文档集中说明 VLESS、Vision、REALITY 和传输组合,已有 Xray 配置时字段连续性更好。
多协议混用、TUN、DNS 和规则集sing-boxsing-box 将入站、出站、route、DNS、TUN 和 rule-set 放在同一配置模型中。
只需要一个图形客户端先看客户端,再看核心图形客户端可能集成不同核心,不能只按 sing-box 或 Xray 的名称安装。
已有线上配置要迁移保留原核心并逐节点迁移两者都使用 JSON,但字段层级、命名、默认值和校验方式不同。
路由器或透明代理按固件与权限选择重点是 TUN、TProxy、DNS、默认路由和内核架构,不是单看项目名称。

本文是第三方使用指南,不代表 sing-box、Xray 项目方或任何服务商。核心结构和平台信息可分别核对 sing-box 配置文档、Xray 配置文件说明 和 sing-box 官方图形客户端说明。

先分清核心、客户端、服务端和协议

核心是执行连接、加密、路由、DNS 和 TUN 接管的程序;客户端是导入配置、切换节点并申请系统权限的应用;服务端是监听端口并接收入站连接的一端;协议是两端通信规则,例如 VLESS、Hysteria2、TUIC 或 WireGuard。

因此,安装 sing-box 或 Xray 核心,不等于安装了带界面的客户端;服务端能运行 Xray,也不代表任何客户端都能直接导入它的原始 JSON。sing-box 官方客户端页面列出 Android、iOS/macOS/Apple tvOS、Windows 和 Linux 的对应客户端,但客户端功能与核心配置仍应按平台页面核对。sing-box Graphical Clients

平台或场景常见使用方式选择重点
Windows图形客户端、命令行核心或 TUN 客户端检查 TUN 服务模式、管理员权限、系统代理和 DNS 是否冲突。
macOS图形客户端、命令行核心或系统 VPN检查隐私与安全性中的放行、应用隔离和网络扩展权限。
Android支持 VPNService 的图形客户端确认应用分流、TUN、后台运行和目标协议均受支持。
iOS支持 Apple 平台的图形客户端不能直接运行 Windows 或 Linux 核心程序,要看客户端的 Network Extension 和协议支持。
Linux 桌面命令行核心、桌面客户端或 systemd 服务检查专用用户、配置文件权限、CAP_NET_ADMIN、TUN 和 DNS 服务。
路由器固件集成、容器或命令行核心先确认 CPU 架构、TUN/TProxy、DNS 劫持、持久化配置和回滚方式。
VPS 服务端命令行核心与防火墙先确定监听端口、入站协议、TLS/REALITY 参数和服务管理方式。

协议支持矩阵:重点看入站、出站和功能状态

“支持某协议”不能直接等同于“客户端和服务端都完整支持”。应区分入站、出站、传输方式和安全层。REALITY 不是独立代理协议,而是传输安全配置;Xray 官方文档将 VLESS、传输方法和 REALITY 分成不同层级。Xray Transport Configuration

项目sing-box 当前官方配置目录Xray 当前官方配置目录选型提示
VLESS列出 inbound 与 outbound列出 inbound 与 outbound两端都能使用,但 TLS、REALITY、flow 和传输字段必须分别核对。
REALITY作为 TLS 配置中的 reality 字段使用作为 streamSettings.security 与 realitySettings 使用它是安全层,不是独立的 VLESS 替代品。
Hysteria2官方列出 hysteria2 inbound 与 outbound官方以 Hysteria 传输和 Hysteria inbound/outbound 支持 Hysteria2 兼容实现要同时检查 QUIC、TLS、UDP、MTU 和版本字段。
TUIC官方列出 tuic inbound 与 outbound官方入站和出站目录未列 TUIC需要 TUIC 时优先选择明确列出该协议的核心,不能把 TUIC 字段复制到 Xray。
WireGuard官方列出 wireguard outbound,但该页面标注旧 outbound 已弃用并规划移除官方列出 WireGuard inbound 与 outboundsing-box 使用前应查看当前迁移说明;不要仅凭旧模板判断长期兼容。
AnyTLS官方列出 anytls inbound 与 outbound,并注明自特定版本起提供官方入站和出站目录未列 AnyTLSAnyTLS 场景应优先使用明确支持该协议的核心和客户端。
MASQUE未在本文作为 sing-box 通用协议推荐官方列出 MASQUE inbound 与 outboundXray 的 MASQUE 配置需使用 TLS,且不能把它当作 REALITY 配置。

矩阵依据 sing-box Inbound、sing-box Outbound、sing-box AnyTLS、sing-box TUIC、sing-box WireGuard、Xray Inbound Protocols 和 Xray Outbound Protocols。页面中的“未列”表示对应官方目录未列出该项,不代表其他第三方实现不存在。

VLESS + REALITY:兼容性要核对哪些字段

VLESS + REALITY 连接失败时,不能只检查节点名称或地址。至少要对照服务器与客户端的服务器地址、端口、UUID、flow、传输方式、server_name、REALITY 公钥和 short_id。Xray 官方文档说明 REALITY 可与 RAW、XHTTP 和 gRPC 组合;sing-box 的 VLESS 出站与 TLS 配置也分别提供 flow、server_name、utls、reality.public_key 和 reality.short_id 等字段。Xray REALITY 文档 Xray VLESS 文档 sing-box VLESS 出站 sing-box TLS 配置

  1. 先在服务端使用原核心的配置检查功能,确认 JSON、证书、密钥和监听端口有效。
  2. 在客户端只导入一个节点,暂时关闭其他订阅、规则和 TUN,减少变量。
  3. 逐项核对 Vision、uTLS 指纹、server_name、REALITY 公钥、short_id 和传输方式。
  4. 查看连接日志中的握手失败、TLS、UUID、端口或传输错误,而不是只看“连接失败”。
  5. 确认日志命中了目标策略组,再通过出口 IP 或目标连接日志判断流量是否实际经过该节点。

uTLS 指纹不是“打开就一定更快或更安全”的开关。sing-box 官方 TLS 文档说明 uTLS 属于客户端字段,并对其指纹模拟能力给出限制说明;因此迁移时应把 uTLS 视为单独字段核对,而不是简单映射成 REALITY。sing-box TLS 与 uTLS 字段

从 Xray 迁移到 sing-box:字段映射与不能直接转换的部分

迁移应按协议重建,不应把 Xray JSON 直接改几个键名后启动。下面是帮助定位配置层级的概念映射,不是可直接运行的完整配置:

Xray 常见结构sing-box 常见对应结构迁移注意
inboundsinbounds名称相同,但每个协议的字段、监听字段和认证结构不同。
outboundsoutbounds名称相同,协议类型和字段名称仍需逐项重建。
routingroute规则表达方式、动作和 rule-set 结构不能直接复制。
dnsdns服务器定义、分流动作、解析器和默认行为需要重新核对。
streamSettings协议字段与 tls、传输字段组合不能把整个对象原样改名;要分别处理传输、TLS、REALITY 和 flow。
realitySettingstls.reality公钥、short_id、server_name 和角色方向必须按 inbound/outbound 重新填写。

不能直接转换的内容包括:未被目标核心列出的协议、特定客户端的订阅格式、依赖第三方面板生成的占位字段、不同核心的默认路由行为,以及涉及 TUN、DNS 劫持和系统 VPN 的权限配置。迁移时建议按以下顺序操作:

  1. 备份原配置、订阅原文、密钥、证书和节点参数。
  2. 建立字段清单,只迁移一个协议和一个节点。
  3. 用目标核心当前版本的 Schema 或配置检查命令校验。
  4. 先不开 TUN,只测试本地 SOCKS 或 HTTP 入站。
  5. 确认日志和出口 IP正常后,再增加 DNS、规则和 TUN。
  6. 保留原核心和旧端口作为回滚方案,确认新核心稳定后再停用旧配置。

sing-box 官方提供配置结构与 Schema 文档;Xray 官方配置文档则使用 routing、dns、inbounds 和 outbounds 等模块。sing-box JSON Schema Xray Configuration File

共存、端口、TUN 和 DNS 冲突怎么排查

sing-box 和 Xray 可以在同一设备共存,但必须避免两个程序同时监听同一端口、启用 TUN、接管 DNS 或修改默认路由。核心本身没有统一的默认监听端口,应以各自配置文件中的 listen_port、port 或客户端设置页为准。

  1. 先停止其中一个程序,确认另一个能单独启动。
  2. 为两个程序分配不同的本地监听端口,检查配置文件和客户端设置页是否一致。
  3. 一次只启用一个 TUN、系统 VPN 或透明代理接管层。
  4. 检查 DNS 53 端口是否被系统服务、旧核心或新核心占用。
  5. 查看连接日志命中的策略组,并用出口 IP 对比实际生效的程序。

Windows 可使用 netstat -ano | findstr LISTENING 查看监听端口;Linux 可使用 sudo ss -lntup;macOS 可使用 sudo lsof -nP -iTCP -sTCP:LISTEN 和 sudo lsof -nP -iUDP:53 检查 TCP 监听与 DNS UDP 端口。若看到占用进程,再根据 PID 对照任务管理器、systemd 服务或活动监视器处理。

Windows 的 TUN 服务模式通常需要管理员权限;macOS 需要在“隐私与安全性”中放行相关网络扩展或解除隔离;Linux 需要检查专用用户、配置文件权限以及 TUN、路由和 DNS 所需能力。实际字段和权限以当前客户端或核心文档为准。sing-box Tun Xray Inbound 与监听端口

性能比较不要看单次测速:用可复现条件判断

没有相同设备、相同线路、相同协议、相同 MTU、相同 DNS、相同并发和相同时间段的测试,就不能得出“sing-box 一定更快”或“Xray 一定更快”的普遍结论。VLESS + REALITY、Hysteria2、TUIC 和 WireGuard 的传输机制不同,TCP、UDP 和 QUIC 的结果也不能直接互相替代。

  1. 固定同一设备、网络、节点、协议参数和测试时间。
  2. 只替换核心,不同时修改 DNS、MTU、TUN、规则和传输方式。
  3. 分别记录空闲延迟、丢包、持续下载、持续上传、短连接和 UDP 表现。
  4. 记录 CPU、内存、连接失败次数、握手耗时和长连接保持情况。
  5. 每个场景重复测试,并写清测试条件与波动范围。

如果目标是跨境办公或长期连接,稳定性、丢包、DNS 成功率、重连时间和长连接保持通常比单次峰值吞吐更有参考价值。升级后出现节点空白、启动失败或连接异常时,应先查看客户端或核心项目的官方发布页,再按当前版本文档核对字段;不要直接套用旧版本模板。Xray Releases sing-box Releases

常见问题

sing-box 和 Xray 哪个速度更快?

没有脱离协议、线路、设备、MTU、DNS、并发和配置条件的固定答案。应固定测试条件,只替换核心,同时记录延迟、丢包、吞吐、CPU、握手和连接稳定性。

Xray 配置可以直接导入 sing-box 吗?

不能默认直接导入。两者虽都使用 JSON,但字段层级、命名、默认值和规则结构不同。应按协议建立字段清单,用目标核心的 Schema 或配置检查功能验证,并保留原配置回滚。

sing-box 能连接 VLESS + REALITY 节点吗?

可以,但必须同时满足 VLESS、flow、传输方式、TLS、server_name、REALITY 公钥和 short_id 等字段要求,且客户端版本支持对应配置。连接失败时应查看握手日志。

AnyTLS 应该选 sing-box 还是 Xray?

sing-box 官方入站和出站目录列出 AnyTLS;Xray 官方当前入站和出站目录未列 AnyTLS。因此需要 AnyTLS 时,应优先选择明确列出该协议的核心与客户端。

sing-box 和 Xray 可以在同一台设备共存吗?

可以,但不能同时监听同一端口、开启多个 TUN、接管同一个 DNS 入口或修改默认路由。建议使用不同端口,一次只启用一个系统接管层,再通过日志和出口 IP确认实际生效的核心。

Windows、Android、iOS、Linux、路由器和 VPS 怎么选?

Windows、Android 和 iOS 先选支持目标平台与协议的图形客户端;Linux 桌面按命令行、桌面界面和 TUN 需求选择;路由器重点看固件、架构、TUN/TProxy 和 DNS;VPS 则按入站协议、TLS/REALITY、路由和权限选择服务端核心。

相关阅读

参考资料

  1. Graphical Clients · sing-box
  2. Introduction · sing-box
  3. Inbound · sing-box
  4. Outbound · sing-box
  5. AnyTLS Inbound · sing-box
  6. TUIC Inbound · sing-box
  7. WireGuard Outbound · sing-box
  8. VLESS Outbound · sing-box
  9. TLS · sing-box
  10. JSON Schema · sing-box
  11. Tun · sing-box
  12. Configuration File · Project X