sing-box 与 Xray
哪个核心运行你的配置档、Xray VLESS 首选项如何起作用,以及如何修复较新 Xray 服务器导致的 Reality 错误。
Throne 的核心基于 sing-box 构建,其中也包含 Xray。大多数配置档运行在 sing-box 上,部分 VLESS 配置档和所有 Xray 自定义配置运行在 Xray 上。本页说明 Throne 如何选择核心、如何针对 VLESS 链接更改这一选择,以及如何修复 Reality 连接错误。
合二为一的两个核心
sing-box 始终在运行,负责本地代理端口、TUN 模式、路由规则和 DNS。Xray 作为辅助组件运行在同一个核心中,只有当正在运行的配置档需要它时才会启动,例如该配置档本身、其代理链中的某个跳点或某条路由规则的出站运行在 Xray 上时。sing-box 通过内部的本地连接把这部分流量交给 Xray,因此 TUN 模式、路由配置档和 DNS 设置在两个核心下的效果相同。
以下配置档运行在 Xray 上:
类型(Type)列 |
来源 |
|---|---|
VLESS (Xray) |
vless:// 链接(取决于 Xray VLESS 首选项);Xray JSON 中的 VLESS 出站;配置档编辑器中的 VLESS (Xray) 类型。 |
Custom Xray … Outbound |
自定义 (Xray 出站)(Custom (Xray outbound))类型;导入的 Xray JSON 中的其他出站。 |
Custom Xray Config |
自定义 (Xray 配置)(Custom (Xray config))类型;导入的完整 Xray 配置列表。 |
其他所有配置档(包括 VLESS)都运行在 sing-box 上。
有些 VLESS 功能只有 Xray 支持。使用了其中任一功能的 vless:// 链接总会被导入为 VLESS (Xray),无论首选项如何设置:
- XHTTP 传输(
type=xhttp)及其extra设置; - VLESS 加密(
encryption的值不是none); - Finalmask;
- 带 HTTP 头部并同时启用 TLS 的 TCP(
raw)传输。
Xray 的消息同样显示在 日志(Logs)标签页中。其详细程度在 设置(Settings)→ 基本设置(Basic Settings)→ 日志(Logging)→ Xray 日志级别(Xray Log level)中设置。
为 VLESS 链接选择核心
设置 → 基本设置 → 核心(Core)→ Xray VLESS 首选项(Xray VLESS Preference)决定导入 vless:// 链接时使用哪个核心:
| 选项 | 导入为 VLESS (Xray) 的链接 |
|---|---|
XHTTP Only |
仅限需要 Xray 独有功能的链接(见上方列表)。Reality 链接仍使用 sing-box。 |
XHTTP And Reality(默认) |
上述链接,外加所有 Reality 链接。 |
All VLESS |
所有 vless:// 链接。 |
其余 vless:// 链接都会成为运行在 sing-box 上的 VLESS 配置档。
该首选项只对 vless:// 链接生效:
- Clash / Mihomo YAML: VLESS 条目只有在使用 XHTTP 或 VLESS 加密时才会使用 Xray。Reality 条目仍使用 sing-box。
- Xray JSON: 每个 VLESS 出站都会成为
VLESS (Xray)。 - sing-box JSON: VLESS 出站仍使用 sing-box。
- 配置档编辑器: 由你自己在
类型列表中选择VLESS或VLESS (Xray)。
更改首选项之后
该首选项只影响更改之后导入的配置档,已有的配置档保持原来的核心。要把它们换到另一个核心:
- 订阅分组: 更新订阅(
分组(Groups)→更新订阅(Update subscription),或右键点击分组标签页 →更新订阅)。Throne 会用另一种类型的新配置档替换受影响的配置档,因此它们原有的测试结果会丢失。 - 从链接添加的配置档: 重新添加该链接,然后删除旧配置档。
- 手动创建的配置档: 其类型无法更改。请用另一种类型新建一个配置档。
如果在分组的 Advanced 订阅设置中开启了 Keep working profiles,旧的可用配置档可能会与新配置档并存。请自行删除它们。
配置档使用的是哪个核心?
查看配置档列表中的 类型 列。VLESS 运行在 sing-box 上;VLESS (Xray)、Custom Xray … Outbound 和 Custom Xray Config 运行在 Xray 上。
如果想在该列中同时看到安全层(例如 Reality),请开启 设置 → 基本设置 → 样式(Style)→ 显示配置安全信息(Show Config Security)。对于 VLESS (Xray) 和 自定义 (Xray 出站) 配置档以及代理链,右键菜单中还有 分享(Share)→ 导出 Xray 配置(Export Xray config)。
较新 Xray 服务器的 Reality 错误
较新的 Xray 服务器会拒绝 sing-box 的 Reality 客户端。此时配置档无法连接,日志中显示 reality verification failed(#1780)。
- Xray 26.7.11 至 26.7.28 只接受报告较新 Xray 版本的客户端。
- Xray 26.9.9 及更新版本要求使用较新的密钥交换(X25519MLKEM768),而 sing-box 的 Reality 客户端不提供这种密钥交换。
解决方法是让该配置档运行在 Xray 上:
- 打开
设置→基本设置→核心。 - 将
Xray VLESS 首选项设为XHTTP And Reality或All VLESS。 - 点击
确定(OK)。 - 更新订阅,或重新添加链接(见更改首选项之后)。
- 确认
类型列现在显示为VLESS (Xray)。
对于来自 Clash / Mihomo YAML 订阅的 Reality 条目,这种方法无效,因为它们始终使用 sing-box。如果你的服务商也以链接列表的形式提供订阅,请改用该格式。
如果你自己运行的是 26.7.11 至 26.7.28 版本的 Xray 服务器,也可以在其 VLESS 入站的 realitySettings 中添加 "minClientVer": "0.0.0",以允许较旧的客户端连接。此方法对 Xray 26.9.9 及更新版本无效。
代理链中的 Xray
代理链可以混用 sing-box 和 Xray 配置档,但有两项限制:
- 所有 Xray 跳点必须相邻。流量只能从 sing-box 切换到 Xray 再切换回来一次:先是 sing-box 跳点,然后是 Xray 跳点,最后是 sing-box 跳点。否则配置档无法启动,日志中显示“Too many core transitions”(核心切换次数过多)。
自定义 (Xray 配置)配置档必须是最上面的跳点,并且不能与其他 Xray 跳点位于同一条代理链中,因为一条代理链只能使用一个 Xray 实例。
分组的前置代理和落地代理以及 WARP 也算作跳点。参见代理链与自定义配置。
Xray geo 文件
自定义 (Xray 配置) 配置档可以带有自己的 routing 规则,并在其中使用 geoip: 或 geosite: 值。为此,Xray 需要 geoip.dat 和 geosite.dat 这两个文件。其他配置档以及 Throne 的路由配置档不使用这些文件,而是使用规则集。
缺少这些文件时,Throne 会显示“需要 Geo 资源文件”(Geo asset files required)并提供下载。点击 是(Yes),等待出现“Geo 资源已安装”(Geo assets installed),然后重新启动该配置档。
下载地址位于 设置 → 基本设置 → 杂项(Miscellaneous)→ Xray Geo 资源(Xray Geo Assets)中的 GeoIP 资源 URL(GeoIP Asset URL)和 GeoSite 资源的 URL(GeoSite Asset URL)字段。它们的列表提供四个来源的地址:Loyalsoldier(全球和中国,默认)、Chocolate4U(伊朗)、runetfreedom(俄罗斯)和 v2fly。两个文件请从同一来源获取。每个 下载(Download)按钮都会重新下载对应的文件并替换旧文件。
如果某条规则引用了文件中不存在的类别,Throne 会显示“Geo 资源缺失类别”(Geo asset missing category)。请选择包含该类别的来源,然后点击该文件对应的 下载。
Android 版
- 同样的设置位于
设置(Settings)→Core→Xray VLESS preference,选项为XHTTP only、XHTTP and Reality(默认)和All VLESS。它同样只在导入时生效,因此更改后请更新订阅。 - 配置档类型同样为
VLESS和VLESS (Xray),代理链中使用 Xray 的限制也相同。