为什么QuickQ的WireGuard peers失联

加速器 quickq 1

本文目录导读:

为什么QuickQ的WireGuard peers失联-第1张图片-QuickQ官网 | 高速稳定下载-官网下载

  1. 核心排查步骤
  2. 常见具体场景与解决方案
  3. 快速诊断命令(在 QuickQ 上执行)
  4. 最终建议与工作流

针对 QuickQ 的 WireGuard 对等节点(Peers)失联的问题,通常与网络环境、配置一致性、防火墙规则协议特性有关,以下是系统性的排查步骤和常见原因分析:

核心排查步骤

1 检查 WireGuard 服务状态(两端)

  • 服务是否运行:在 QuickQ 和 Peer 端检查 WireGuard 接口状态。
    • 命令:wg showsystemctl status wg-quick@<接口名>
    • 如果服务未运行,启动并设置开机自启。
  • 接口是否 UPip link show wg0,确保状态不是 DOWN

2 验证关键配置项(QuickQ 端 & Peer 端)

  • 私钥与公钥是否匹配
    • 检查每个 Peer 的配置中,PrivateKey 是否正确,PublicKey 是否确实是该 Peer 的私钥对应的公钥。最易犯的错误:将 QuickQ 自身的公钥写在了 Peer 的公钥位置。
  • Endpoint 地址与端口
    • Peer 是客户端(如手机、移动设备),QuickQ 作为服务端Peer 端的 Endpoint 必须填写 QuickQ 的公网 IP/域名和端口
    • Peer 是另一台服务器,两端的 Endpoint 都可能需要填写(取决于谁主动发起连接)。
    • 端口冲突:检查 QuickQ 的监听端口(默认 51820)是否被其他进程或防火墙占用。
  • AllowedIPs 规则
    • 这是最常见的失联原因
    • QuickQ 端的 Peer 配置中,AllowedIPs 决定了哪些流量要发往该 Peer
    • Peer 端的 AllowedIPs 决定了哪些目的 IP 的流量要通过隧道
    • 规则冲突:如果两个 Peer 的 AllowedIPs 有重叠(例如都包含 0.0.0/0),WireGuard 会优先使用第一个匹配的规则,导致第二个 Peer 的流量(包括握手包)被错误路由或丢弃。
    • 建议:对于服务端(QuickQ),每个 Peer 的 AllowedIPs 应该是该 Peer 的隧道 IP(0.0.2/32),不要写 0.0.0/0

3 检查网络连通性与防火墙

  • UDP 封锁:WireGuard 使用的是 UDP 协议(默认 51820 端口),部分网络(如企业防火墙、校园网、运营商 NAT 环境)可能禁止或限制 UDP 流量
    • 排查方法:从 Peer 端 telnet 或 nc 测试 QuickQ 的 UDP 端口是否可达(nc -uz <QuickQ_IP> 51820)。
  • 防火墙规则
    • QuickQ 所在设备(路由器/服务器)的防火墙必须放行 UDP 51820 端口(入站)。
    • 检查 iptables、nftables 或云安全组规则。
    • NAT 穿透问题:Peer 在 NAT 后(如家庭宽带、手机热点),而 QuickQ 也在 NAT 或无法直接访问的环境(如无公网 IP),需要配置 UDP 打孔 或使用 STUN/TURN 中继,QuickQ 如果作为服务端,需要有公网 IP 或端口映射。

4 查看 WireGuard 日志

  • 启用日志:在 QuickQ 上运行 wg-quick up wg0 查看启动日志,或查看系统日志:
    • journalctl -u wg-quick@wg0 (Systemd 环境)
    • dmesg | grep wireguard
  • 重点关注
    • 是否有 Noise invalid handshake (无效握手,通常是公钥错误)。
    • 是否有 Peer is not responding (对方无响应,可能是网络不通或防火墙屏蔽)。
    • 是否有 Packet dropped: no matching peer (没有匹配的对等体,通常是 AllowedIPs 配置错误)。

常见具体场景与解决方案

场景 表现 根本原因 解决方案
手机端连接正常,但 QuickQ 看不到状态 手机能上网,但 QuickQ 上 wg show 显示 Peer 一直没握手。 手机端没有向 QuickQ 发起连接请求。 检查手机端的 Endpoint 是否填写了 QuickQ 的公网 IP/域名。
双方都能 ping 通隧道 IP,但几分钟后断开 连接不稳定,周期性失联。 WireGuard 默认无保活机制,过长的静默期导致 NAT 网关关闭了端口映射。 客户端(位于 NAT 后的 Peer)配置 PersistentKeepalive = 25(每 25 秒发一个空包)。
QuickQ 作为服务端,多个客户端中只有一个能通 部分 Peer 失联,部分正常。 AllowedIPs 配置冲突,所有 Peer 都包含了 0.0.0/0 服务端每个 Peer 只分配其隧道 IP(如 0.0.2/320.0.3/32)。客户端按需配置路由。
新加入的 Peer 一直握手失败 配置无误,但日志显示握手包被丢弃或无回复。 公钥/私钥粘贴错误(如含多余空格、换行符),或 PreSharedKey(预共享密钥)不匹配。 重新生成并粘贴密钥,确保无格式错误,使用 wg genkey 在新环境中生成并复制。
QuickQ 重启后所有 Peer 失联 重启前正常,重启后长时间无法连接。 WireGuard 接口需要手动恢复,或防火墙规则重启后未加载。 确保 wg-quick@wg0 服务已启用自启。systemctl enable wg-quick@wg0

快速诊断命令(在 QuickQ 上执行)

# 1. 查看当前所有 Peer 的状态(最新握手指时间)
wg show
# 2. 查看接口详细信息(包括配置的对等体信息)
ip link show wg0
ip addr show wg0
# 3. 查看系统日志中与 wireguard 相关的错误
dmesg | grep -i wireguard | tail -20
# 4. 测试从 QuickQ 到 Peer 的 UDP 端口是否可达(假设 Peer 是公网可达的)
# Peer 也配置了 WireGuard,可以用这个测试双向 UDP
nc -uz <Peer_公网IP> <Peer_端口>
# 5. 检查防火墙是否放行 UDP 端口
iptables -L -n -v | grep 51820

最终建议与工作流

  1. 从最基本配置开始:只配置一个 Peer(如手机),使用最简单的 AllowedIPs(服务端只填 /32,客户端只填 0.0.0/0 用于全流量代理)。
  2. 逐步增加复杂性:当单个 Peer 稳定后,再添加第二个。
  3. 注意时间同步:WireGuard 依赖系统时间进行密钥协商,确保 QuickQ 和 Peer 的 NTP 时间同步(误差超过几分钟会导致握手失败)。
  4. 区分客户端与服务端角色
    • 服务端(QuickQ):需要公网 IP 或端口映射,ListenPort 固定,无需 PersistentKeepalive(因为它是被连接方)。
    • 客户端:需要配置 Endpoint(指向 QuickQ 公网 IP),建议开启 PersistentKeepalive

如果以上步骤全部检查无误但仍失联,请提供:

  1. QuickQ 上 wg show 的输出(隐藏私钥)。
  2. 客户端配置(隐藏私钥和公钥)。
  3. 网络拓扑(QuickQ 是否有公网 IP,是否在 NAT 后,客户端是手机还是服务器)。

这将有助于更精确地定位问题。

抱歉,评论功能暂时关闭!