高墙之外❤️

PassWall2 TLS 握手失败怎么办?按日志逐步排查

更新于 2026-11-02 · passwall.lol

简答:先不要直接开启“允许不安全连接”。在 PassWall2 中复制完整运行日志,先判断失败发生在订阅更新、单个节点连接,还是代理建立后的目标网站访问;然后依次检查路由器时间、证书链、SNI/servername、端口、ALPN、Reality 参数和核心分配。

定义:PassWall2 TLS 握手失败,是代理核心在建立加密连接时未能完成证书验证、参数协商或底层 TCP 连接的错误。

先试这一步:用日志判断故障发生在哪一跳

本文是第三方使用指南,不代表 PassWall2 或任何节点服务的官方页面。进入 LuCI 的“服务 → PassWall2”,先确认当前节点、核心和运行状态;随后打开运行日志或通过 SSH 查看日志。PassWall2 项目文档列出的常见入口包括“Services → PassWall2”“Node List → Add Node”和“Save & Apply”,项目仓库也给出了通过 logread | grep passwall2 查看服务日志的方法。PassWall2 项目仓库

先复制完整错误,订阅链接、UUID、密码、域名和公网地址应打码。不要只复制最后一行,因为前面的 server、port、核心名称和具体节点名往往决定排查方向。

日志或现象优先检查首次处理动作
certificate verify failed、x509时间、SNI、证书名称、CA校准时间,核对 servername 是否与证书 SAN 匹配
handshake failure、no mutually supported protocol协议、TLS、ALPN、核心确认节点协议与 Xray 或 sing-box 核心匹配,再核对 ALPN
connection reset、EOF端口、SNI、节点端口、服务端状态用同一节点测试 TCP 连通性,并与其他节点对照
timeout、context deadline exceededDNS、路由、MTU、网络出口先测试域名解析和 TCP 连接,再切换网络复测
订阅更新时报 TLS 错误订阅域名、路由器 DNS、系统时间把订阅下载失败与节点连接失败分开处理

按“时间→证书→节点参数→核心→网络”顺序排查

  1. 检查路由器时间和时区。在 LuCI 的“系统 → 系统”中查看时间、时区和 NTP 设置;也可通过 SSH 执行 date 查看当前时间。OpenWrt 文档说明,许多设备没有硬件时钟,系统时间通常需要通过 NTP 同步。时间明显错误时,先修正 NTP,再重新启动 PassWall2 并复测。OpenWrt NTP 文档
  2. 区分证书错误与节点参数错误。在“服务 → PassWall2 → 节点列表”打开出错节点,核对服务器地址、端口、协议、传输方式、TLS 开关和 SNI/servername。Xray 文档说明,serverName 会用于证书主机名验证;域名形式的 serverName 也会作为 SNI 发送,而直接填 IP 时不会发送 SNI。Xray TLS 配置文档
  3. 检查 ALPN 是否与传输方式匹配。如果日志出现协议协商失败,先恢复节点提供方给出的 ALPN,不要自行添加多个值。Xray 文档说明 ALPN 是握手时协商的应用层协议列表;某些 WebSocket 或 HTTPUpgrade 场景通常需要 http/1.1,而并非所有服务都接受 h2。如果节点是 gRPC、WebSocket、HTTPUpgrade 或其他传输方式,传输方式、路径、Host 和 ALPN 应成套核对。
  4. 如果使用 Reality,成套核对参数。Reality 节点不能只改一个字段。检查 servername、fingerprint、public key、short ID、握手服务器和端口是否来自同一份配置。Xray 文档列出的客户端字段包括 serverName、fingerprint、shortId 等;sing-box 文档也将 public_key、short_id 和 handshake 作为 Reality 配置字段。Xray Reality 文档 sing-box TLS 文档
  5. 确认核心分配正确。在节点或核心设置中确认该节点实际由 Xray 还是 sing-box 运行。协议字段能显示,不代表当前核心一定支持全部参数;如果切换核心后日志从“字段解析失败”变成“连接超时”,说明配置解析问题可能已经解决,但网络或节点本身仍需继续排查。
  6. 检查 CA 证书和固件包。如果多个域名都出现证书链错误,检查系统是否安装了 ca-certificates 或 ca-bundle,并确认软件源与固件版本匹配。OpenWrt 将系统 CA 证书作为基础系统包提供;具体包名和版本应以当前固件的软件源查询结果为准。OpenWrt 基础系统软件包索引

PassWall2 界面中的可执行复测流程

  1. 在“服务 → PassWall2 → 节点列表”只保留一个待测节点,暂时不要同时修改 DNS、分流和 TUN 设置。
  2. 点击保存并应用,然后查看 PassWall2 运行日志。记录测试时间、节点名称、核心名称和第一条明确错误。
  3. 若界面提供节点连通性或 TCPing 检测,先测服务器地址和端口。TCP 能连通只说明端口可达,不代表 TLS、协议认证或代理转发已经成功。
  4. 使用第二个同协议节点对照。如果只有一个节点失败,优先核对该节点的端口、SNI、证书、Reality 参数或服务端状态;如果多个节点同时失败,优先检查路由器时间、DNS、核心、CA、透明代理和防火墙规则。
  5. 再用另一条上网网络复测,例如临时使用手机热点。若不同网络结果明显不同,应继续检查 DNS、MTU、IPv4/IPv6、出口路由或网络侧连接限制,而不是先关闭证书验证。
  6. 确认代理连接后,不要只用出口 IP 判断成功。还要检查 PassWall2 日志、DNS 请求、IPv6 是否绕过、目标应用是否使用自定义 DNS,以及单个域名和普通 HTTPS 请求是否都能复现。

复测时每次只改一个变量,并记录“修改前日志—修改内容—修改后结果”。这样才能判断问题是被修复,还是因为节点、网络或缓存变化而暂时消失。

“允许不安全连接”能不能解决?

只能作为短时诊断,不应作为长期修复。Xray 文档说明,allowInsecure 为真时不会验证远端 TLS 证书的有效性;这会降低对中间人攻击的防护,且不能修复错误的 SNI、端口、协议、Reality public key 或服务端配置。Xray 文档还将该选项标记为不推荐,建议优先使用正确的证书验证或证书指纹配置。Xray TLS 安全选项说明

如果必须用于定位,可先备份节点配置,只对一个节点短时开启,立即重新测试并记录结果:开启后成功,通常说明证书链、证书名称或本地 CA 是重点;开启后仍失败,则问题更可能在端口、SNI、协议、核心、网络或节点服务端。定位结束后应关闭该选项,恢复证书校验。

仍然失败时,按这份清单收集信息

  • OpenWrt 或定制固件版本,以及系统架构。
  • PassWall2 版本、实际运行的 Xray 或 sing-box 核心版本。
  • 节点协议、传输方式、TLS 或 Reality 是否启用。
  • 完整脱敏日志,不要只提供“TLS handshake failed”这一行。
  • 失败范围:订阅更新、单个节点、多个节点、所有设备,还是只有某个目标域名。
  • 路由器时间、时区、IPv4/IPv6 状态和当前 DNS 设置。
  • 是否同时启用了其他代理插件、TUN、透明代理或自定义 DNS 接管。
  • 同一节点在另一网络、另一核心或另一设备上的复测结果。

不要公开订阅完整链接、UUID、密码、私钥、Reality public key 组合、内网地址或带认证信息的日志。若日志包含证书内容,也应先确认是否需要脱敏。

常见误区与回滚方法

不要同时升级插件、替换核心、修改 DNS、开启 TUN、关闭证书验证并更换节点。这样即使恢复连接,也无法知道真正原因。建议先导出或复制当前节点配置,再按单节点、单设备、单变量方式测试。

如果修改后全网无法访问,先在 PassWall2 中停止服务或关闭透明代理,恢复原来的默认节点、DNS 和分流设置,再点击保存并应用。若仍异常,检查是否还有其他代理插件接管防火墙或 DNS;最后根据此前备份恢复配置。具体菜单名称可能随版本变化,字段以当前界面为准。

常见问题

PassWall2 出现 TLS handshake failed,第一步应该改什么?

第一步不要改证书校验。先复制完整运行日志,确认错误发生在订阅下载、节点 TLS 握手,还是代理连接后的目标网站访问;随后检查路由器时间和节点的 server、port、SNI/servername。

关闭 allowInsecure 或“允许不安全连接”后能连,是否说明节点正常?

只能说明关闭证书验证后握手可能继续,并不能证明节点参数完全正确。还要核对证书名称、SNI、CA 和服务端证书链;测试完成后应恢复证书验证,避免长期跳过证书检查。

Reality 节点 TLS 握手失败,应该重点看哪些字段?

重点核对 servername、fingerprint、public key、short ID、握手服务器和握手端口,并确认这些字段来自同一份配置、由匹配的 Xray 或 sing-box 核心运行。不要只替换其中一个字段。

只有一个节点失败,其他节点正常,问题在路由器吗?

不一定。单节点失败时,应优先核对该节点的端口、SNI、证书、Reality 参数、协议和服务端状态;再用另一网络或另一核心复测。多个节点同时失败时,才更应优先检查时间、DNS、CA、核心和防火墙。

TCPing 能通,为什么 PassWall2 仍然 TLS 失败?

TCPing 只能说明目标端口在测试时可建立 TCP 连接,不能证明 TLS 证书、SNI、ALPN、协议认证或后续代理转发成功。还需要结合 PassWall2 核心日志和单节点实际请求复测。

相关阅读

参考资料

  1. PassWall2 项目仓库:LuCI 入口、节点配置与日志排查
  2. Xray TLS 配置文档:serverName、ALPN、allowInsecure 与 CA
  3. Xray Reality 配置文档:serverName、shortId 与客户端参数
  4. sing-box TLS 文档:Reality public_key、short_id 与握手字段
  5. OpenWrt NTP 文档:系统时间与网络校时(openwrt.org)
  6. OpenWrt 基础系统软件包索引:CA 证书包(openwrt.org)