先确认你使用的是哪种配置

从 WireGuard 官方安装页获取对应平台入口。桌面或手机客户端用界面查看隧道状态;下文命令只适用于安装了 wireguard-tools 与 iproute2 的 Linux,wglab 是示例接口名,须替换成实际名称。先记下版本、配置来源、失败目标和最近一次变更,保留能恢复的配置副本。

WireGuard 按需发送流量。空闲时握手时间较旧不一定是故障,应该先访问一个确实由隧道承载的目标,再观察状态变化。不要只盯着“启用”开关,或靠不断重启来判断服务是否可达。

主动测试后的现象优先检查本轮先不要改
没有握手记录端点、密钥对应、UDP 可达性内网 DNS 或浏览器缓存
有握手,目标地址不通AllowedIPs、路由与目标服务重复生成密钥
同一服务用正确地址可达,域名失败名称解析与分域 DNS直接替换整个客户端
空闲后失效,主动发送又恢复NAT 映射与端点变化对所有 Peer 强制增加保活

第一层:核对握手前的必要条件

Linux;sudo 用于读取 WireGuard 状态,不修改配置
sudo wg show wglab latest-handshakes
sudo wg show wglab transfer
sudo wg show wglab endpoints

确认 Peer 公钥对应的确实是对端当前私钥,而不是本机公钥或上一台设备的配置。多人共用同一私钥的文件会让排查变得混乱,每台设备应使用分配给自己的身份与地址。Endpoint 中的域名需要能够解析到当前服务器,端口要与服务器实际监听及防火墙规则一致。

  1. 固定配置和目标,换一张自己可用的网络做一次对照;记录是否出现新的握手。
  2. 请管理员核对服务状态、实际监听的 UDP 端口及相关入站规则。端口扫描无响应不能单独判断 WireGuard 服务停机。
  3. 如果变更了服务端端口,应同步修改客户端端点;只把客户端端口写成 443,不会让 WireGuard 自动变成 HTTPS 或 TCP。

原生 WireGuard 使用 UDP,也不内置流量混淆。某条网络路径不能连接不等于协议或项目“跑路”;应保留对照结果,区分服务器故障和网络路径问题。不要凭协议名称给出“永不掉线”或“绝对安全”的承诺。

第二层:握手成功后,检查实际目的路由

Linux 只读检查;示例目标须替换为实际隧道内地址
ip -brief address show dev wglab
ip -4 route get 10.77.0.1

握手只说明两个 Peer 完成了相应通信,不证明对端后面的内网或互联网出口已配置好。确认目标落在预期 AllowedIPs 中,路由确实选择隧道,并检查对端服务是否监听正确地址。若访问的是对端之后的另一台机器,还涉及转发、返回路由和访问规则,应由该网络管理员检查。

家中、公司和容器网络若使用相同网段,目标可能被送往本地网卡。先记录冲突再规划地址或更具体的路由,避免直接删除系统路由。需要全局出口时,IPv4 与 IPv6 应分别验收;添加 ::/0 并不能让一个只有 IPv4 转发的服务端自然获得 IPv6 出口。

第三层:区分名称解析与空闲映射

同一服务的地址路径能工作但域名失败时,核对管理员要求的 DNS 和搜索域。测试 HTTPS 仍需保留正确主机名,不能用裸 IP 引发证书错误后再称 DNS 修好了。Linux wg-quick 的 DNS 字段依赖其文档所述的解析器集成;看到 resolvconf 缺失等启动错误,应按发行版的网络管理方式处理,不随手覆盖系统解析配置。

只有明确出现空闲后 NAT 映射失效,并且该端位于 NAT 后时,才考虑为相应 Peer 试用 PersistentKeepalive = 25。它的单位是秒,作用是维护映射,不负责修正公钥、端口或路由。记录原值,完成相同空闲时长的对照;没有改善时恢复原值,不能把保活当成通用加速参数。

恢复配置并整理可复现的求助材料

每次只改一个条件,记录变化前后的握手和业务结果。使用 wg-quick 管理的隧道,修改配置前还应检查是否启用了 SaveConfig:该选项可能在关闭接口时把运行配置写回文件。按实际管理方式停用、编辑并恢复,不在不同工具之间混用管理同一接口。

求助时只提供必要字段、版本、时间与脱敏错误。不要提交 wg showconf、wg show dump 或完整配置,它们可能包含私钥或预共享密钥;本篇的限定状态字段也含端点和 Peer 标识,分享前应按需要遮盖。最终验收应包含原来的失败任务和正常退出后的联网,而不是单看一次 ping 成功。