很多刚接触WireGuard的用户最容易卡的环节就是公钥的配对逻辑,不像传统VPN靠账号密码做身份校验,WireGuard完全依托非对称公钥体系完成接入鉴权,一旦客户端和服务端的公钥配置错位,哪怕所有网络端口、路由规则都设置正确,也完全无法建立连通。这篇实操指南就一步步拆解两者的配合规则,从底层逻辑到校验排查,帮用户避开常见的配置坑,快速完成可用的隧道搭建。
配置前必须明确的公钥基础逻辑
首先要理清WireGuard的公钥和私钥的对应关系,每一个独立的WireGuard节点,不管是服务端还是客户端,都必须生成属于自己的一对公私钥,不存在跨节点共用同一套密钥的情况。
很多新手最开始搞混的核心点就在这里,WireGuard公钥客户端与服务端如何配合的底层逻辑是,服务端配置文件里的Peer公钥字段,填写的是“允许接入的客户端公钥”,相当于服务端把信任的客户端身份加入白名单,而客户端配置文件里的Peer公钥字段,填写的是“你要连接的远端服务端的公钥”,相当于客户端提前确认要对接的服务端身份,两者不能交叉混用,也不能把自己的私钥填到对面的公钥字段里。
公私钥生成与初始配对操作步骤
首先你要分别在服务端和客户端两个独立环境生成密钥对,不要在服务端生成所有密钥再批量分发到客户端,这种操作会暴露服务端的私钥,也会导致客户端私钥在传输过程中泄露,带来不必要的安全风险。
在Linux服务端环境,你可以先执行wg genkey | tee privatekey | wg pubkey > publickey命令,生成服务端自己的私钥和对应的公钥,私钥要妥善保存在只有管理员能读取的路径,公钥可以后续配置到所有要接入的客户端里。
然后在你自己的本地客户端设备,不管是Windows、macOS还是移动端的WireGuard客户端,都可以在生成新隧道的界面直接自动生成公私钥对,也可以手动在本地终端生成,生成后把客户端的公钥复制出来,上传到你自己的服务端做登记。
接下来就是核心的配对配置,打开服务端的WireGuard配置文件,在[Peer]段落里新增一条内容,PublicKey字段后面粘贴的就是刚才你拿到的客户端公钥,同时给这个客户端分配专属的虚拟内网IP,不要和其他客户端的虚拟IP段冲突。
再打开本地客户端的WireGuard配置文件,在[Peer]段落里的PublicKey字段,粘贴的是你之前在服务端生成的服务端公钥,同时在Endpoint字段填写服务端的公网IP加WireGuard监听的端口,这样两边的公钥配对基础就完成了。
配对完成后的连通性校验方法
配置完两边的公钥之后,先不要急着重启隧道,先在服务端执行wg show命令,查看已配置的Peer列表里,有没有你刚才新增的客户端公钥条目,对应的虚拟IP段是否填写正确。
然后在客户端侧查看隧道配置详情,确认远端Peer的公钥和你服务端的公钥字符完全一致,没有多打空格或者漏输字符的情况,很多连通失败的问题都是公钥复制的时候少了一两个字符、混入了换行符导致的。
两边都确认无误之后,先启动服务端的WireGuard进程,再启动客户端的隧道,之后再回到服务端执行wg show命令,如果看到对应客户端的Peer条目下出现了最新的握手时间,就说明公钥的双向校验已经通过,基础连通已经完成。
公钥配对环节的常见误区排查
最常见的误区就是把服务端自己的公钥填到了服务端的[Peer]段落里,这种情况相当于服务端自己授权自己接入,客户端发起的连接永远过不了校验,完全不会出现握手记录。
还有不少用户会把客户端自己的公钥填到客户端配置的[Peer]公钥字段里,相当于客户端拿着自己的公钥去和服务端握手,服务端侧登记的客户端公钥和收到的校验信息不匹配,也不会响应连接请求。
另外要注意不要在公钥字段里粘贴私钥内容,WireGuard的公钥和私钥都是固定长度的base64字符串,一旦填错类型,进程启动的时候就会直接抛出密钥格式错误,根本无法正常加载配置。
整个WireGuard公钥客户端与服务端如何配合的流程,本质上就是双向的白名单授权逻辑,服务端只信任自己配置过公钥的客户端,客户端也只连接自己登记了公钥的服务端,没有任何中心化的认证环节,只要理清两边公钥各自对应的归属主体,配置出错的概率就会非常低。
VinkVPN 
