很多刚接触WireGuard的用户配置完隧道之后迟迟连不上,排查端口、防火墙、路由规则折腾几个小时,最后才发现故障根源是公钥填写错误,这类问题在WireGuard入门级故障里占比极高,大部分通用教程都没有把公钥填写的细节边界讲透。本文汇总日常运维场景里碰到的高频WireGuard公钥常见填写错误,梳理可落地的检查步骤,帮大家避开配置过程中的隐性坑。
客户端公钥和服务端公钥搞混的典型场景
这是所有WireGuard公钥相关错误里发生率最高的一类,很多首次配置的用户分不清两边公钥的对应关系,把服务端自身的公钥填到了服务端本地的Peer区块里,或者把客户端自己的公钥填到了客户端配置的Peer区块中。
要明确WireGuard公钥的基础配置逻辑:公钥是单向的身份标识,服务端配置文件里每个允许接入的Peer区块,需要填写的是对应接入客户端的公钥,而客户端配置文件[Peer]分类下的Public Key字段,必须填写WireGuard服务端自身的公钥,两者绝对不能互换。
验证这类问题的方法非常简单,分别在服务端终端执行wg show public-key命令拿到服务端公钥,在对应客户端的WireGuard工具里查看当前客户端的公钥,再把两个原始输出和两边配置文件里的Peer区块公钥逐一比对,就能快速定位是不是出现了填反的问题。
公钥复制过程中的字符遗漏、冗余问题
WireGuard的公钥是固定44位的Base64编码字符串,很多用户用终端选中复制内容的时候,不小心多带了末尾的换行符、多余空格,或者选框没拉全少复制了最后一两个字符,部分窄屏终端会自动把长字符串拆成两行显示,用户只复制了第一行的内容,这些操作都会导致公钥完全失效。
这类错误的隐蔽性很强,绝大多数WireGuard的可视化配置工具不会主动提示公钥长度异常,只会在用户发起连接的时候直接超时,没有任何明确的报错提示,很多用户会直接把排查方向放到端口放行、防火墙拦截这类问题上,白白浪费大量时间。
排查这类问题的时候可以先手动数一下配置文件里公钥的字符总数,确认刚好是44位,没有多余的特殊符号、空格或者换行,也可以直接把生成公钥时的终端原始输出和粘贴后的内容逐位比对,避免肉眼识别错相似字符,比如把大写字母O和数字0搞混,或者把小写字母l和数字1弄混。
多Peer场景下公钥和AllowedIPs不匹配的错误
不少用户在服务端配置多设备接入的场景时,经常把A客户端的公钥绑定给B客户端的虚拟IP地址段,把B客户端的公钥绑定给A的地址段,这种情况会导致两个客户端都拿不到预期的虚拟IP,连服务端侧的内网资源都无法正常访问。
这类错误的排查可以结合WireGuard的运行时状态输出,在服务端执行wg show命令之后,如果看到某个已经发起连接请求的Peer,对应的最近接收流量数值一直为0,就可以优先核对这个Peer的公钥和AllowedIPs的绑定关系是否正确。
这里要注意一个常见误区,很多用户觉得只要是合法生成的44位公钥就能随便填写,实际上WireGuard的身份校验和路由规则是强绑定的,公钥和地址段的对应关系错了,哪怕两边的密钥本身都合法,也不可能正常建立加密隧道。
跨设备迁移配置时的公钥误用问题
很多用户为了省事,会把手机上的WireGuard配置文件直接复制到电脑端使用,连带把手机生成的公私钥对也原封不动挪到电脑上,之后又在手机上重新生成了新的密钥,结果两边的公钥和服务端登记的信息完全对不上,出现设备随机能连上又随机断连的奇怪现象。
这类场景下的故障表现没有明确规律,用户很难直接联想到是公钥变更后没有同步更新服务端配置的问题,排查的时候要逐个核对每个接入设备当前正在使用的公钥,和服务端Peer区块里登记的内容是否完全一致。
日常配置WireGuard的时候,最好养成每添加一个Peer就立刻核对一次两边公钥的习惯,配置完成后先在服务端用wg命令查看对应Peer的握手时间,如果握手时间在持续更新,就说明公钥的身份校验已经通过,后续再排查路由或者防火墙层面的问题即可。

