很多用户在 Clash Verge、Clash Meta、Mihomo 或 OpenClash 中导入订阅时,会遇到下面这类提示:
Parse config error: invalid REALITY short ID
有时客户端会直接显示:
Invalid Reality Short ID
出现这个错误后,可能不只是某一个节点无法连接,部分客户端还会因为配置文件解析失败,导致整份订阅无法加载、全部节点消失,或者 Clash 内核无法正常启动。
这类问题通常不是本地网络断开,也不是系统代理没有开启,而是订阅中的 Reality 节点参数格式错误。最常见的情况,是节点里的 short-id 被错误写成了 null、字符数量不正确,或者包含了不允许出现的字符。
Clash 节点连接失败?先获取可用订阅
如果 Clash 导入订阅后提示 Invalid Reality Short ID、配置文件解析失败,或者 Reality 节点全部无法连接,通常说明当前订阅中的节点参数存在错误。除了按照本文方法检查配置,也可以更换一条兼容 Clash Verge、Mihomo 和手机端客户端的订阅线路。
支持 Windows、Android、iPhone、Clash Verge、Mihomo Party 和 Shadowrocket 等常用客户端。新用户建议先使用普通套餐测试本地网络和常用网站,再根据设备数量选择合适套餐。
Invalid Reality Short ID 是什么意思?
Reality 是 VLESS、Trojan 等协议可以使用的一种传输安全方式。在 Mihomo 配置中,Reality 节点一般会包含下面几个关键参数:
reality-opts:
public-key: xxxxxxxxxxxxxxxxx
short-id: "0123456789abcdef"
其中:
public-key是 Reality 服务端对应的公钥;short-id是服务端设置的短 ID;- 客户端填写的
short-id必须符合格式要求,并且需要与服务端允许的值对应。
Mihomo 官方配置文档中也明确将 reality-opts.short-id 定义为服务端 Short ID 中的一个值。
因此,Invalid Reality Short ID 的直接含义就是:Clash 内核在读取配置时,发现 Reality 节点的 short-id 格式不合法,无法继续解析该节点。
Reality Short ID 的正确格式
按照 Xray REALITY 官方文档,shortId 最长为8字节,也就是最多16个十六进制字符,只能使用 0-9 和 a-f,并且字符数量必须是偶数。较短的值可以使用,但同样需要保持偶数位。
例如,下面这些格式通常是正确的:
aa
aa12
aa1234
0123456789abcdef
下面这些格式则会导致报错:
0
1234567
abcdefgh
null
0123456789abcdef00
具体原因如下:
| Short ID 示例 | 是否正确 | 原因 |
|---|---|---|
aa1234 |
正确 | 6位十六进制字符 |
0123456789abcdef |
正确 | 16位十六进制字符 |
1234567 |
错误 | 字符数量为奇数 |
abcdxyz1 |
错误 | 包含十六进制范围以外的字符 |
null |
错误 | n、u、l 不是十六进制字符 |
1234567890abcdef12 |
错误 | 超过16个字符 |
官方文档给出的例子中,aa1234 可以正常使用,而类似 aaa1234 这样的奇数位 Short ID 会直接产生错误。
为什么订阅里会出现 short-id: 'null'?
目前比较常见的一种情况,是机场面板、订阅转换程序或者客户端转换脚本没有正确读取 Reality 节点的 Short ID,最后生成了下面这样的配置:
reality-opts:
public-key: xxxxxxxxxxxxxxxxx
short-id: "null"
这里的 "null" 并不代表“没有填写”,而是一个由四个英文字母组成的字符串。由于这几个字母不属于合法的十六进制字符,Mihomo 会直接判断为无效 Short ID。
Mihomo 项目中已经出现过包含 short-id: 'null' 的实际报错案例,并触发了 Parse config error: invalid REALITY short ID。
因此,如果配置文件里明确显示:
short-id: "null"
一般说明订阅生成环节存在错误,不建议用户随便填写一个数字代替。
方法一:重新更新 Clash 订阅
首先退出 Clash 客户端,然后重新打开客户端并更新订阅。
建议按照下面的顺序操作:
- 打开机场官网并登录账号;
- 重新复制最新的 Clash 或 Mihomo 订阅地址;
- 删除客户端中原来的订阅配置;
- 使用最新地址重新导入;
- 更新订阅后重新启动 Clash 内核。
如果只是机场后来修复了订阅转换规则,重新导入订阅通常就能恢复正常。
不要只反复点击“更新订阅”。如果本地保存的订阅地址已经失效,或者订阅缓存没有被覆盖,最好先删除旧配置,再重新添加一次。
方法二:更新 Clash Verge 或 Mihomo 内核
较旧的 Clash 客户端可能无法正确识别部分 Reality 配置字段,特别是仍然使用旧版 Clash 内核的客户端。
建议检查客户端使用的是否为 Mihomo 内核,并升级到当前稳定版本。
常见需要更新的客户端包括:
- Clash Verge Rev;
- Mihomo Party;
- OpenClash;
- 使用 Mihomo 内核的其他 Clash 客户端。
更新后重新导入订阅,而不是直接继续使用旧配置文件。
不过需要注意,更新客户端只能解决内核过旧或字段不兼容的问题。如果订阅中的 short-id 本身就是 "null"、奇数位或者包含错误字符,升级客户端后仍然可能报错。
方法三:删除配置中的错误 Reality 节点
如果只有一两个 Reality 节点配置错误,而其他节点可以正常使用,可以临时删除错误节点,让 Clash 先加载剩余配置。
例如找到下面的节点内容:
- name: Reality错误节点
type: vless
server: example.com
port: 443
uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
tls: true
reality-opts:
public-key: xxxxxxxxxxxxxxxxx
short-id: "null"
将整个错误节点段落删除,然后重新验证配置。
需要特别注意 YAML 的缩进格式。删除节点时,应当从节点开头的 - name: 一直删除到该节点配置结束,不能只删除其中一行,否则可能出现新的 YAML 解析错误。
这种方法只能临时恢复配置文件加载,被删除的 Reality 节点仍然无法继续使用。
方法四:手动修改 Short ID
只有在已经知道服务端正确 Short ID 的情况下,才可以手动修改。
例如服务商提供的正确 Short ID 是:
0123456789abcdef
对应配置可以写成:
reality-opts:
public-key: xxxxxxxxxxxxxxxxx
short-id: "0123456789abcdef"
建议使用引号包裹 Short ID,尤其是内容以 0 开头时,可以避免 YAML 将其错误识别成其他数据类型。
不要把错误的 "null" 随便改成:
short-id: "0000000000000000"
也不要随机生成一个 Short ID。即使修改后的格式能够通过 Clash 配置检查,只要它与服务端设置不一致,Reality 握手仍然会失败,节点依旧无法连接。
Short ID 可以留空吗?
Reality Short ID 并不是在所有情况下都必须填写具体字符。
如果服务端的 shortIds 列表中明确包含空字符串,那么客户端的 shortId 也可以为空。官方文档说明,空字符串的长度为0,同样属于偶数位,因此在服务端允许的情况下可以使用。
对应配置可能是:
reality-opts:
public-key: xxxxxxxxxxxxxxxxx
short-id: ""
但这不代表看到 "null" 后可以直接删除内容。
服务端是否允许空 Short ID,取决于机场或服务器的实际配置。普通订阅用户无法仅凭客户端判断,最好由节点提供方重新生成正确订阅。
Short ID 格式正确,为什么还是连接失败?
如果 Short ID 已经符合以下要求:
- 只包含
0-9和a-f; - 字符数量为偶数;
- 没有超过16个字符;
- 与服务端配置一致;
但节点依然无法连接,还需要继续检查:
1. Public Key 是否错误
Reality 的 public-key 必须与服务端私钥对应。复制不完整、订阅转换错误或者服务端重置密钥,都会导致握手失败。
2. Server Name 是否不匹配
配置中的 servername 或 sni 需要符合服务端 Reality 设置。随意修改成其他域名,可能导致连接失败。
3. 客户端指纹是否缺失
Reality 节点一般还会配置:
client-fingerprint: chrome
如果客户端或订阅转换程序删除了相关字段,也可能影响 Reality 节点连接。
4. 服务端与客户端内核不兼容
Mihomo 官方文档目前对部分新版 Xray-core Reality 行为给出了兼容性提示。如果 Short ID 格式确认正确,但同一批 Reality 节点仍然全部无法使用,可能需要由服务端更换实现、调整内核版本,或者改用其他协议,而不是继续反复修改 Short ID。
5. 节点端口或服务器已经失效
配置能够成功加载,只能说明格式正确,并不能证明服务器当前在线。节点服务器关闭、端口被阻断或者线路维护,也会表现为超时或连接失败。
Invalid Reality Short ID 和节点超时有什么区别?
这两类错误的排查方向完全不同。
Invalid Reality Short ID
通常发生在配置加载阶段,常见表现包括:
- 订阅导入失败;
- Clash 内核无法启动;
- 配置文件验证失败;
- 全部节点无法显示;
- 日志提示
Parse config error。
重点检查订阅格式和 short-id 参数。
Timeout 或 Connection Failed
通常发生在节点连接阶段,常见表现包括:
- 配置可以正常加载;
- 节点能够显示;
- 延迟测试超时;
- 打开网页失败;
- 日志提示连接服务器超时。
重点检查节点服务器、端口、本地网络和线路状态。
因此,看到 Invalid Reality Short ID 时,不需要先修改 DNS、系统代理或防火墙,因为客户端可能还没有进入真正的网络连接阶段。
普通用户应该怎么处理?
普通订阅用户没有服务器端 Reality 参数,最稳妥的处理顺序是:
- 更新 Clash 或 Mihomo 客户端;
- 删除旧订阅并重新导入;
- 查看配置中是否出现
short-id: "null"; - 临时删除错误的 Reality 节点;
- 联系服务商重新生成 Clash/Mihomo 订阅;
- 不要自行编造 Short ID。
如果多个设备、多个客户端导入同一条订阅都提示相同错误,基本可以判断问题来自订阅或节点配置,而不是某一台设备的网络设置。
总结
Clash 报错 Invalid Reality Short ID,本质上是 Reality 节点的 short-id 格式错误或与服务端配置不一致。
合法的 Short ID 最多为16位,只能包含 0-9 和 a-f,并且字符数量必须为偶数。null、奇数位字符、超长内容以及包含其他字母的 Short ID,都会导致配置解析失败。
遇到这个问题后,建议先重新导入订阅并升级 Mihomo 内核。如果配置中出现 short-id: "null",通常需要机场修复订阅生成规则。普通用户不要随意填写随机 Short ID,否则即使配置能够成功加载,Reality 节点仍然无法完成连接。
继续阅读
遇到其他 Clash 配置、订阅或节点连接问题,可以继续查看:
