很多用户在 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 和手机端客户端的订阅线路。

👉获取 Clash 稳定订阅入口

支持 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-9a-f,并且字符数量必须是偶数。较短的值可以使用,但同样需要保持偶数位。

例如,下面这些格式通常是正确的:

aa
aa12
aa1234
0123456789abcdef

下面这些格式则会导致报错:

0
1234567
abcdefgh
null
0123456789abcdef00

具体原因如下:

Short ID 示例 是否正确 原因
aa1234 正确 6位十六进制字符
0123456789abcdef 正确 16位十六进制字符
1234567 错误 字符数量为奇数
abcdxyz1 错误 包含十六进制范围以外的字符
null 错误 nul 不是十六进制字符
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 客户端,然后重新打开客户端并更新订阅。

建议按照下面的顺序操作:

  1. 打开机场官网并登录账号;
  2. 重新复制最新的 Clash 或 Mihomo 订阅地址;
  3. 删除客户端中原来的订阅配置;
  4. 使用最新地址重新导入;
  5. 更新订阅后重新启动 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-9a-f
  • 字符数量为偶数;
  • 没有超过16个字符;
  • 与服务端配置一致;

但节点依然无法连接,还需要继续检查:

1. Public Key 是否错误

Reality 的 public-key 必须与服务端私钥对应。复制不完整、订阅转换错误或者服务端重置密钥,都会导致握手失败。

2. Server Name 是否不匹配

配置中的 servernamesni 需要符合服务端 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 参数,最稳妥的处理顺序是:

  1. 更新 Clash 或 Mihomo 客户端;
  2. 删除旧订阅并重新导入;
  3. 查看配置中是否出现 short-id: "null"
  4. 临时删除错误的 Reality 节点;
  5. 联系服务商重新生成 Clash/Mihomo 订阅;
  6. 不要自行编造 Short ID。

如果多个设备、多个客户端导入同一条订阅都提示相同错误,基本可以判断问题来自订阅或节点配置,而不是某一台设备的网络设置。

总结

Clash 报错 Invalid Reality Short ID,本质上是 Reality 节点的 short-id 格式错误或与服务端配置不一致。

合法的 Short ID 最多为16位,只能包含 0-9a-f,并且字符数量必须为偶数。null、奇数位字符、超长内容以及包含其他字母的 Short ID,都会导致配置解析失败。

遇到这个问题后,建议先重新导入订阅并升级 Mihomo 内核。如果配置中出现 short-id: "null",通常需要机场修复订阅生成规则。普通用户不要随意填写随机 Short ID,否则即使配置能够成功加载,Reality 节点仍然无法完成连接。

继续阅读

遇到其他 Clash 配置、订阅或节点连接问题,可以继续查看: