先确认你使用的是哪种配置
从 WireGuard 官方安装页获取对应平台入口。桌面或手机客户端用界面查看隧道状态;下文命令只适用于安装了 wireguard-tools 与 iproute2 的 Linux,wglab 是示例接口名,须替换成实际名称。先记下版本、配置来源、失败目标和最近一次变更,保留能恢复的配置副本。
WireGuard 按需发送流量。空闲时握手时间较旧不一定是故障,应该先访问一个确实由隧道承载的目标,再观察状态变化。不要只盯着“启用”开关,或靠不断重启来判断服务是否可达。
| 主动测试后的现象 | 优先检查 | 本轮先不要改 |
|---|---|---|
| 没有握手记录 | 端点、密钥对应、UDP 可达性 | 内网 DNS 或浏览器缓存 |
| 有握手,目标地址不通 | AllowedIPs、路由与目标服务 | 重复生成密钥 |
| 同一服务用正确地址可达,域名失败 | 名称解析与分域 DNS | 直接替换整个客户端 |
| 空闲后失效,主动发送又恢复 | NAT 映射与端点变化 | 对所有 Peer 强制增加保活 |
第一层:核对握手前的必要条件
sudo wg show wglab latest-handshakes
sudo wg show wglab transfer
sudo wg show wglab endpoints确认 Peer 公钥对应的确实是对端当前私钥,而不是本机公钥或上一台设备的配置。多人共用同一私钥的文件会让排查变得混乱,每台设备应使用分配给自己的身份与地址。Endpoint 中的域名需要能够解析到当前服务器,端口要与服务器实际监听及防火墙规则一致。
- 固定配置和目标,换一张自己可用的网络做一次对照;记录是否出现新的握手。
- 请管理员核对服务状态、实际监听的 UDP 端口及相关入站规则。端口扫描无响应不能单独判断 WireGuard 服务停机。
- 如果变更了服务端端口,应同步修改客户端端点;只把客户端端口写成 443,不会让 WireGuard 自动变成 HTTPS 或 TCP。
原生 WireGuard 使用 UDP,也不内置流量混淆。某条网络路径不能连接不等于协议或项目“跑路”;应保留对照结果,区分服务器故障和网络路径问题。不要凭协议名称给出“永不掉线”或“绝对安全”的承诺。
第二层:握手成功后,检查实际目的路由
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 成功。