Table of Contents
- [FATA] Out of retries, exiting...
- libhysteria exits too fast (exit code: 1)
- [ERRO] [error:timeout: no recent network activity]
- [ERRO] [error:Application error 0x1: protocol error]
- [ERRO] [error:Application error 0x2: auth error]
- [FATA] [file:./config.json] [error:illegal base64 data at input byte 8]
- [FATA] [file:./config.json] [error:invalid speed]
- [FATA] [file:./config.json] [error:json: cannot unmarshal object into Go value of type []uint8] Failed to parse client configuration
- [ERRO] [error:CRYPTO_ERROR (0x12a): x509: certificate signed by unknown authority]
- [ERRO] [error:CRYPTO_ERROR (0x178): tls: no application protocol]
- [ERRO] [error:CRYPTO_ERROR (0x12a): x509: certificate is valid for A, not B]
- [FATA] [error:accept tcp [::]:1081: accept4: too many open files] Client shutdown
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[FATA] Out of retries, exiting...
当「自动重试」启用时, 到达最大重试次数的情况下会显示这条日志并退出。
因此这条日志并不能指示出了什么问题, 你应该查阅这条日志之前的日志, 那才是真正的错误原因。
libhysteria exits too fast (exit code: 1)
在 SagerNet 中, 当 Hysteria 启动失败时就会在屏幕上显示这个提示。
这个提示并不能指示出了什么问题。
你应该先点击 SagerNet 的左上角, 然后在弹出的抽屉中选中 「Logs」 选项,
检查最下方以 I/libhysteria 开头的日志, 那才是真正导致错误的原因。
[ERRO] [error:timeout: no recent network activity]
这一项错误日志表示 Hysteria 客户端无法与服务端进行 QUIC 握手, 这可能是以下原因导致的:
- Hysteria 客户端配置文件中的
obfs或者protocol选项与服务端不匹配。 - Hysteria 客户端配置文件中的
server选项填写了错误的服务器地址与端口, 在使用域名的情况下也可能是该域名遭到了 DNS 劫持。 - Hysteria 客户端与服务端之间的 UDP 通信遭到了防火墙的阻断。
- Hysteria 服务端进程未启动或者异常退出。
注意能使用 curl 正常请求服务器域名并不能证明能够正常进行 UDP 通信, 可以按照这里的方法进行排查。
- 停止服务器上的 Hysteria 服务端。
- 在客户端和服务端安装 socat。
- 在服务端一侧执行命令
socat - UDP6-LISTEN:36712,reuseaddr,fork, 你需要把命令中的端口号换成你为 Hysteria 服务端设置的端口号。 - 在客户端一侧执行命令
socat - UDP:example.com:36712, 你需要把命令中的服务器和端口号换成 Hysteria 客户端配置中的server项内容。 - 如果两边的 socat 都能正常启动, 你可以尝试在两侧输入任意内容并按下回车, 如果你输入的内容出现在了另一侧, 则客户端和服务端的 UDP 能正确连通。 如果做不到这一点, 说明客户端到服务端的 UDP 连接可能被阻断。
[ERRO] [error:Application error 0x1: protocol error]
这一错误日志表示 Hysteria 的客户端使用了服务端不支持的协议, 通常是客户端版本比服务端版本新导致的。
将服务器上的 Hysteria 升级到最新版本通常可以解决此问题。
[ERRO] [error:Application error 0x2: auth error]
这一项错误日志表示 Hysteria 客户端配置中的密码是错误的, 服务端拒绝了客户端的连接请求。
请检查客户端配置中的 auth_str 选项是否填写正确。
注意: 除非你明确知道自己在做什么,
或者你使用的机场提供的连接指南明确要求你这么做,
否则你应该在客户端配置中使用 auth_str 而不是 auth。
[FATA] [file:./config.json] [error:illegal base64 data at input byte 8]
这一项错误日志通常表示你在 Hysteria 客户端配置文件中错用了 auth,
将其修改为 auth_str 通常就能解决问题。
如果你使用的机场明确要求你使用 auth, 请检查你填写的 auth 选项是否正确。
[FATA] [file:./config.json] [error:invalid speed]
这一项错误日志表示 Hysteria 客户端配置文件中缺少 up_mbps 和 down_mbps,
在客户端配置文件中, 这两个选项是必须的。
[FATA] [file:./config.json] [error:json: cannot unmarshal object into Go value of type []uint8] Failed to parse client configuration
这个错误通常是在启动客户端时指定了服务端的配置文件导致的。
请检查配置文件是否正确。
如果你打算启动服务端, 请确认服务端启动命令中没有漏掉 server 参数。
[ERRO] [error:CRYPTO_ERROR (0x12a): x509: certificate signed by unknown authority]
这一项错误日志表示 Hysteria 客户端无法验证服务端提供的证书。
如果你使用的是自签名证书, 请在 Hysteria 客户端配置文件中配置 ca 选项,
或者启用 insecure。
另外, 如果服务端配置的 cert 的证书链不完整, 客户端连接时也会产生相同的错误。
如果你使用其它 ACME 工具为 Hysteria 提供证书, 请确保使用了正确的证书文件
(正确的 .crt 或者 .pem 文件应该包含多个以
-----BEGIN CERTIFICATE----- 开始的证书块)。
[ERRO] [error:CRYPTO_ERROR (0x178): tls: no application protocol]
这一项错误日志通常表示 Hysteria 客户端配置文件中的 alpn 选项与服务端不匹配。
[ERRO] [error:CRYPTO_ERROR (0x12a): x509: certificate is valid for A, not B]
这一项错误日志表示在 Hysteria 客户端配置文件中
server 选项的域名与服务端提供的证书不匹配。
如果你希望在 server 选项中指定 IP 地址(例如用于对抗域名被 DNS 劫持的情况),
就需要在 server_name 选项中指定正确的域名。
端口对证书验证是没有影响的。
另外, 配置了错误的 server_name 选项也会导致这个问题。
[FATA] [error:accept tcp [::]:1081: accept4: too many open files] Client shutdown
如果你在使用 REDIRECT、 TPROXY 或者 tun 模式。 这一项错误日志通常表明你的 iptables 规则或者路由表的配置有问题, 从 hysteria 发出的请求又被重新送回给了 hysteria 的 inbounds, 并引发了无限循环。
这个问题的解决方案取决于具体的 iptables 或者路由表配置。 通常来说, 在使用 iptables 或者路由表进行分流时, 应当尽可能绕过 hysteria 服务端和客户端自身的 IP 地址。