节点与线路

WireGuardEndpoint故障排查应记录的关键信


WireGuardEndpoint故障排查应记录的关键信

不少自行部署WireGuard VPN的用户都会遇到endpoint握手超时、连通性时断时续的问题,很多人排查时随手敲几条命令就重启服务,既没留存有效信息,也没法复现偶现的故障,WireGuard Endpoint:排查时应记录的信息都是经过大量实操验证的核心内容,不需要复杂的专业工具就能完成,能大幅缩短故障定位的周期,避免无效的重复操作。

网络设备:WireGuard Endpo

两端同步采集基础网络状态快照,高效定位WireGuard连通性故障

WireGuard Endpoint 两端的基础网络连通快照

首先要记录的不是直接抓包,是endpoint两端设备的公网出口地址、对应WireGuard监听端口的当前状态,比如你在家用边缘路由器上跑WireGuard服务端,手机作为远端endpoint连入的时候,快喵先分别在两端执行基础的网络探测命令,把输出结果完整留存。

这里要注意不能只记通或者不通,要把服务端侧执行ss -ulnp看到的WireGuard进程绑定地址、端口的输出,客户端侧ping服务端公网IP的连续输出,还有UDP端口探测的结果全部存下来,很多新手排查的时候只记“端口没开”,但没留当时的探测时间点,后续发现是运营商临时封端口,没有时间戳的记录根本没法佐证故障场景。

还要同步记录两端设备当前的默认路由表条目,尤其是如果服务端是多WAN接入的场景,很可能WireGuard的endpoint地址绑定到了故障的WAN口上,路由表的记录能直接排除本地路由规则错误导致的转发异常。

WireGuard 运行时的实时握手与流量统计信息

很多人排查故障的时候习惯直接重启WireGuard服务,梯子软件反而把最关键的运行时状态清掉了,正确的操作是先执行wg show命令,把完整输出复制留存之后,再做任何配置修改操作。

这份记录里要重点标注最新一次握手的时间、两端传输的字节数、当前endpoint配置的公网地址和端口,很多场景下用户的家庭宽带公网IP发生了动态变更,但远端的WireGuard配置里的endpoint地址还没更新,wg show的输出里会显示一直没有新的握手请求,对比配置的旧IP和当前服务端的新IP就能直接定位问题。

还要同步记录故障发生时的内核日志片段,也就是dmesg里和WireGuard相关的输出,部分低版本内核的WireGuard模块会出现UDP队列溢出的报错,这类信息不会出现在普通的服务日志里,只有留存当时的内核日志才能定位是系统内核层面的资源瓶颈,不是配置错误。

故障发生前后的防火墙与NAT规则变更记录

WireGuard的endpoint用UDP协议传输,很多连通性故障都和路径上的防火墙、NAT网关的超时规则有关,排查时要把两端设备本地的iptables或者nftables规则完整导出留存,尤其是涉及UDP端口放行、状态跟踪的规则条目。

如果中间路径上有运营商级的NAT设备,还要记录故障发生时客户端的NAT映射相关的配置特征,比如连续发送空包保活的间隔设置,很多时候用户之前修改过保活间隔参数之后故障才出现,对比变更前后的配置记录就能发现是保活间隔太长导致中间NAT映射被回收。

这里要注意常见误区是不要随便把防火墙全部关了测试,关防火墙之后就算连通了也找不到根因,留存原始的规则记录之后再做调整,后续就算故障复现也能对比规则差异,找到之前漏掉的端口放行或者地址伪装规则。

跨场景复现的对比测试信息

如果在本地网络里排查半天找不到问题,还要记录不同接入场景下的测试结果,比如同一个WireGuard客户端,分别用家庭WiFi、手机移动数据、快喵公司办公网三个不同的网络接入点尝试连接endpoint,把每个场景下的连通结果、握手状态记录下来。

这类对比记录能快速区分故障是出在服务端侧、客户端侧,还是中间的运营商链路侧,比如所有外部网络都连不上,大概率是服务端的端口映射或者防火墙规则出错,只有某一家运营商的网络连不上,才是中间路径的UDP传输被限制。

所有这些记录不需要用复杂的工具整理,纯文本存成日志文件就可以,后续遇到同类故障的时候直接对比历史记录,能避免很多重复的无效排查操作,也能在需要求助技术社区的时候提供足够完整的信息,不用反复回溯当时的配置状态。

手机连接编辑组
整理 Android 与 iOS 的连接权限、后台运行和网络切换注意事项。
查看更多文章
连接指南

找到适合当前设备的指南

遇到手机通知延迟与VPN相关问题,可从“用同一应用做短时对照,记录推送到达时间”开始阅读。一次及时通知不能证明所有应用推送都正常,需要结合具体环境判断。