小牛加速器用户中心
小牛加速器
隐私与安全

WireGuard预共享密钥客户端与服务端配合配置方法详

本文围绕WireGuard预共享密钥的两端配合配置逻辑展开,所有操作基于标准开源WireGuard实现,适合已经完成基础WireGuard公钥隧道部署的运维人员参考,通过两端参数的精准对齐,在原有非对称公钥加密的基础上叠加第二层对称加密防护,进一步缩小VPN链路的可信边界,规避单公钥场景下私钥泄露带来的未授权接入风险。

配置前的两端前提校验

在开始配置预共享密钥之前,首先要确认服务端和客户端的基础公钥隧道已经可以正常连通,服务端已经正确录入客户端的公钥,客户端也已经配置好服务端的公钥、访问端点地址和虚拟路由规则,不需要预共享密钥的基础链路可以正常完成内网互访,这是后续叠加预共享密钥配置的核心前提,避免基础链路本身的问题和预共享密钥配置错误混淆。

预共享密钥本身需要通过WireGuard官方提供的wg genpsk命令生成,得到的是32位长度的标准base64格式随机字符串,不能自行设置弱口令或者复用之前的公私钥内容。生成后的预共享密钥需要通过离线安全渠道分别同步给服务端运维人员和客户端使用者,不能直接在公网通讯渠道里明文传输,避免密钥中途被截获。

服务端侧预共享密钥参数配置

打开服务端上已经生效的WireGuard配置文件,默认路径通常为/etc/wireguard/wg0.conf,找到对应目标客户端的Peer独立段落,不要修改该段落下已经配置好的PublicKey、AllowedIPs等原有生效参数,直接在Peer段落的末尾新增一行PresharedKey配置项,后面粘贴之前生成好的完整预共享密钥字符串即可。

配置完成后不要直接重启WireGuard服务,先执行wg showconf wg0命令拉取当前运行态的配置校验,确认对应客户端的Peer条目下已经正确带出PresharedKey字段,没有拼写错误,也不要把预共享密钥配置到全局的Interface段落中,预共享密钥是针对单个对等体独立生效的参数,不支持全局统一配置。

客户端侧预共享密钥的对应配合配置

打开客户端本地的WireGuard配置文件,无论使用的是Linux、Windows还是其他支持WireGuard的系统,找到对应服务端的Peer段落,同样不要修改之前已经配置完成的服务端公钥、Endpoint地址、预定义路由等原有参数,在Peer段落中新增完全相同的PresharedKey配置项,填入和服务端完全一致的预共享密钥字符串,注意字符大小写、末尾填充的等号都要完全对齐,不能多打空格或者错漏字符。

如果使用的是图形化WireGuard客户端,不需要手动编辑配置文本的话,可以直接选中对应隧道配置点击编辑,在高级设置的对等体配置分类中找到预共享密钥的输入框,直接粘贴提前获取的预共享密钥即可,尽量不要手动逐字符输入,避免出现肉眼难以识别的字符错漏。

两端配置完成后的验证与故障排查

两端配置都保存完成后,先在服务端执行wg-quick down wg0再执行wg-quick up wg0重启WireGuard隧道服务,之后再启动客户端的隧道连接,连接完成后在服务端执行wg show命令,查看对应客户端的对等体条目下是否出现preshared key: (yes)的标识,确认预共享密钥已经被服务端正确加载。

接下来从客户端侧发起对服务端WireGuard虚拟内网IP的ping测试,正常情况下数据包可以正常往返连通,如果发现链路完全不通,可以先临时注释掉两端的PresharedKey配置项,重启隧道确认基础公钥链路仍然正常,再逐字符核对两端的预共享密钥字符串是否完全一致,排查是否出现密钥粘贴错位、填错到其他对等体配置条目的问题。

需要注意WireGuard的预共享密钥不会替代原有公钥的认证逻辑,只是叠加在非对称加密流程之后的第二层加密防护,就算预共享密钥配置错误,原有公钥的校验逻辑仍然会正常运行,不会出现公钥失效的问题,只是两端的加密密钥派生结果不一致,导致数据包解密失败,链路无法正常传输数据。

很多新手容易陷入的配置误区是误以为配置预共享密钥就可以省略公钥配置,实际上WireGuard的预共享密钥是可选的附加防护层,必须基于双向公钥已经正确配置的前提才能生效,它的作用是在公钥的非对称加密之外,再增加一层对称加密的防护边界,就算其中一端的私钥意外泄露,攻击者没有预共享密钥也无法直接接入隧道,进一步提升整个VPN链路的访问防护等级。

连接排障编辑组
连接排障编辑组
内容编辑

按设备、网络、客户端和服务端逐层检查,让故障定位更有条理。

查看更多文章
配置入门

从一个连接问题开始

遇到网关防火墙阻止目标服务相关问题,可从“只核对业务需要的授权规则”开始阅读。不要把整个防火墙关闭当作长期解决方案,需要结合具体环境判断。