小火箭加速器
小火箭加速器 Logo
WireGuard公钥客户端与服务端配合配置实操完整教程
VPN 基础

WireGuard公钥客户端与服务端配合配置实操完整教程

很多新手自行部署WireGuard VPN时,最容易卡壳的环节就是公钥配对流程,明明两边都填了密钥却始终无法完成握手,本质上是没搞懂WireGuard公钥客户端与服务端如何配合的核心逻辑。这篇实操教程从密钥生成规则、双向配对逻辑到分步配置、故障排查全覆盖,帮你避开绝大多数新手常见的配置误区,顺利完成两端的公钥适配。

网络设备:WireGuard公钥:客户端

实操演示WireGuard客户端与服务端的公钥配对配置流程

配置前的核心前提:公钥的生成规则与权限边界

WireGuard的公钥和私钥是通过非对称加密算法成对生成的,服务端和每一个接入的客户端都需要拥有完全独立的公私钥对,绝对不能混用同一套密钥,不少新手图省事把同一组公私钥同时复制给两端,直接就会导致认证失败。

这套机制的权限边界非常清晰:服务端的配置文件里只会存储它信任的客户端公钥,客户端的配置文件里也只会填入目标连接服务端的公钥,不存在全局统一的公钥共享池,这种最小权限设计可以避免单个客户端密钥泄露之后,影响整个虚拟网络的其他节点安全。

第一步:两端独立生成合规公私钥对

先在部署WireGuard的服务端设备上,执行wg genkey | tee privatekey | wg pubkey > publickey指令,自动生成服务端专属的私钥和对应的公钥,小火箭私钥文件要放在只有root管理员能读取的目录下,公钥可以临时复制出来后续备用。

之后在你需要接入的客户端设备上,不管是Windows、macOS还是移动端的WireGuard官方客户端,都可以直接在操作界面点击生成密钥对,不需要跨设备跑到服务端生成客户端密钥,每个客户端的密钥对都是独立的,不要从其他设备复制密钥文件复用。

这里要注意的常见误区是,绝对不能把服务端的私钥泄露给任何客户端,也不要把客户端的私钥填到服务端的配置里,私钥只能属于生成它的那一端,公钥是可以公开传输的部分,哪怕配置过程中被第三方截获也不会影响连接的认证安全性。

核心配对操作:两端公钥的交叉写入规则

打开服务端的WireGuard配置文件,在[Interface]段下方的[Peer]区块里,把刚才生成的对应客户端公钥,精准填写到PublicKey参数的后面,同时给这个客户端分配一个唯一的虚拟内网IP,小火箭不要和其他已经接入的客户端IP产生冲突。

接着打开客户端的WireGuard配置文件,在[Peer]段里,把之前生成的服务端公钥精准填写到对应的PublicKey参数后面,同时填入服务端的公网访问地址、WireGuard监听端口,再在客户端自身的[Interface]段里填入之前生成的客户端专属私钥。

搞反配对逻辑是配置失败的最常见原因,不少用户误把服务端的私钥填到客户端的PublicKey参数里,或是把客户端的私钥填到服务端的Peer公钥位置,这类低级错误占了配置失败案例的七成以上,填写的时候要注意核对,WireGuard的公钥都是固定44位的base64编码字符串,少一位多一位都会直接失效。

配对完成后的校验与故障定位

两端配置修改完成、启动WireGuard服务之后,先在服务端执行wg show指令,查看对应的Peer条目里有没有显示你刚才配置的客户端公钥,再打开客户端的WireGuard运行界面,科学上网核对对等体显示的公钥是不是和服务端的公钥完全一致。

如果两端公钥都完全匹配但还是无法完成握手,先检查服务端的防火墙有没有放通WireGuard对应的UDP监听端口,科学上网再确认客户端的本地网络没有拦截WireGuard的出站UDP流量,不要一上来就判定是公钥配对出错,很多时候是网络层面的拦截导致握手包无法传输到对端。

后续如果需要替换某一端的密钥对,必须同步把对端配置里对应的公钥也同步更新,只修改其中一端的配置,双向认证肯定无法通过,不需要重启整个WireGuard服务,执行wg syncconf重载配置就能让新的公钥配对规则生效。

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

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

查看更多文章
连接指南

从一个连接问题开始

遇到Windows系统代理与VPN并用相关问题,可从“逐层确认负责范围,保持一次只调整一处”开始阅读。支持系统代理的程序与不支持的程序表现可能不同,需要结合具体环境判断。