不少用户在部署WireGuard站点到站点或者远程接入VPN的时候,梯子代理经常遇到Peer端配置完成后始终无法握手、隧道不通、指定流量无法走隧道的问题,翻遍配置文件也找不到错误根源。本文完全从故障排查的实操视角,把WireGuard Peer配置:字段含义逐一拆解,从异常现象、可能原因到逐项校验的方法给出明确指引,帮你避开绝大多数配置误区。

运维人员逐项校验WireGuard Peer配置参数,定位VPN隧道不通的故障根源
Peer配置生效的前置排查前提
很多用户上来就逐行修改Peer段字段,完全忽略了配置生效的前置条件,最后折腾很久都找不到问题根源。你首先要确认主配置文件里的Interface段已经完全校验通过,执行wg show命令能正常输出本地的私钥、监听端口、虚拟网卡地址段,系统防火墙也已经放通WireGuard使用的UDP端口。如果启动wg-quick的时候直接抛出配置格式错误的提示,不要先纠结Peer段的字段,先排查Interface段的参数有没有冲突,避免后续的校验步骤全部做无用功。
Peer核心标识字段的含义与校验方法
Peer段的第一个核心字段是PublicKey,这个字段填写的是对端Peer的公钥,很多新手最容易犯的错误就是把自己本地的私钥填到这个位置,异常现象就是两端永远无法完成握手,用tcpdump抓包能看到本地持续向外发送握手包,但对端没有任何回应。检查的时候要把两端生成的公钥私钥分别导出核对,确认你本地Peer段填写的公钥,正好和对端Interface段的私钥对应的公钥完全匹配,预期结果是wg show输出的Peer列表里的公钥标识和对端生成的公钥完全一致,常见误区是复制公钥的时候多带了空格或者换行符,WireGuard会直接判定公钥无效。
第二个可选的标识字段是PresharedKey也就是预共享密钥,梯子软件很多用户以为只要单边配置这个字段就能生效,异常现象就是一端填了预共享密钥另一端没有配置,握手流程走到加密校验环节直接中断。如果要启用这个字段,必须两端对应的Peer段都填写完全相同的预共享密钥,不能只单边配置,预期结果是握手成功后,wg show的输出里会显示preshared key present的标识,常见误区是把预共享密钥和公钥搞混,直接用公钥的内容填到这个字段里,会直接导致加密校验完全失败。
Peer地址类字段的故障排查逻辑
AllowedIPs是WireGuard Peer配置里最容易出错的字段,很多人误以为这个字段是对端设备的单独IP地址,实际上WireGuard Peer配置字段含义里明确说明,这个字段定义的是本地路由表里哪些网段的流量会走WireGuard隧道发往对应的Peer。异常现象就是你想访问对端的内网网段,结果流量直接从本地物理网卡发出,完全没有进入隧道。检查的时候要确认你填写的AllowedIPs网段和对端Interface段配置的Address网段完全匹配,如果要走多个不同的内网网段,梯子代理就用逗号分隔多个CIDR格式的网段地址,预期结果是配置完成后,系统路由表能看到对应网段的路由下一跳指向WireGuard虚拟网卡。
很多用户配置AllowedIPs的时候想实现全局流量走隧道同时保留本地网络访问,就拆分0.0.0.0/1和128.0.0.0/1,这种写法本身是合法的,但要额外确认WireGuard对端的公网IP对应的网段没有被包含在AllowedIPs的范围内,不然WireGuard本身的隧道流量会被重新路由进隧道,直接形成路由死循环导致本地网络完全中断,这种场景下需要额外添加一条静态路由,把对端的公网IP指向本地物理网卡的默认网关。
接下来的Endpoint字段填写的是对端Peer的公网可访问地址加UDP端口,很多用户配置完之后对端公网IP变动了就忘了更新这个字段,异常现象就是本地作为客户端的时候完全发不出握手包。检查的时候可以先在本地用nc命令测试对端的UDP端口是否连通,确认域名解析出来的IP和对端当前的公网IP完全一致,预期结果是配置正确的情况下,只要对端的WireGuard服务正常运行,本地就能主动发起握手请求,常见误区是服务端的Peer段也填写了客户端的Endpoint,但客户端没有固定公网IP,导致服务端完全找不到客户端的接入地址。
Peer保活与校验字段的配置规则
PersistentKeepalives字段是用来在NAT网关后面保持端口映射活跃的,很多用户不管部署场景随便填一个很小的数值,异常现象就是内网客户端经过多层NAT之后,长时间没有流量就被NAT网关删掉了端口映射,对端主动发起的所有流量都无法到达客户端。检查的时候如果你的Peer在公网有固定公网IP,这个字段完全可以留空不需要配置,只有当Peer位于内网NAT后面的时候,才需要配置这个字段定期主动发送心跳包维持端口映射,预期结果是配置合理的数值之后,NAT网关的端口映射不会意外过期,两端随时可以发起通信,常见误区是把这个数值设置得太小,导致大量无效心跳占用不必要的带宽资源。
最后你可以通过wg show输出的最近握手时间,校验所有WireGuard Peer配置字段含义的落地是否正确,这个不属于配置项但是是所有字段配置正确的最终验证结果。当你把所有字段都核对完成之后,只要两端网络连通,就能看到握手时间在最近几分钟之内更新,如果一直显示没有最近握手记录,就可以按照之前的字段顺序逐一倒查,先核对公钥,再核对Endpoint连通性,再核对AllowedIPs有没有冲突,最后检查预共享密钥是否匹配,绝大多数Peer配置的故障都能通过这个排查流程定位到问题。



