坚果加速器
坚果加速器 Logo
节点与线路

WireGuardPeer配置客户端与服务端协同配合设置

WireGuardPeer配置客户端与服务端协同配合设置

很多刚接触WireGuard的用户容易把Peer配置当成两端各自独立填写参数的操作,忽略节点之间的协同联动逻辑,最终出现握手失败、隧道连通后无法传数据等各类问题。本文围绕WireGuard Peer配置:客户端与服务端如何配合的核心问题,从家用软路由作为服务端、手机/办公PC作为客户端的常见落地场景出发,拆解配置前的准备前提、核心参数对应规则、分步校验方法和常见踩坑点,帮用户理清两端配置的联动逻辑,避开无意义的调试弯路。

配置前的协同前提确认

首先要明确WireGuard的Peer本身是对等节点标识,没有严格的主从属性,只是日常使用中我们把拥有固定公网IP、长期在线的节点定义为服务端,随身移动的终端作为客户端,协同配置的第一步就是先在两个节点各自生成独立的公钥私钥对,不能两端共用同一套密钥。

这里要注意生成密钥的操作不能搞混,服务端的私钥只能留在服务端本地存储,客户端的私钥也只能保存在对应客户端设备里,互相交换的只有对方的公钥,很多新手一开始就把服务端私钥填到客户端配置里,从根源上就会导致后续所有身份校验都失败。

核心参数的一一对应规则

这部分是WireGuard Peer配置:客户端与服务端如何配合的核心逻辑,两端的Peer字段其实就是对端的身份信息占位,服务端的配置文件里,[Interface]段写的是服务端自己的运行参数,后续新增的每一条[Peer]段都对应一个客户端的身份和准入规则。

对应到单台客户端这边,自己的[Interface]段写客户端的私钥、本地VPN内网IP和自身的监听端口,唯一的[Peer]段就全部填写服务端的公钥、服务端的公网地址加WireGuard监听端口,如果要启用预共享密钥增强安全性,也必须是两端在各自的Peer段里填写完全一致的同一串字符,不能有任何偏差。

很多用户容易搞错的AllowedIPs字段的协同逻辑,服务端Peer段里的AllowedIPs填的是允许这个客户端接入后使用的VPN内网IP,比如客户端分配的VPN网段是10.0.0.2/32,服务端这边就只能填这个单IP,不能填大段网段,不然会和其他客户端的路由规则冲突。而客户端Peer段的AllowedIPs是定义哪些流量走VPN隧道,比如填10.0.0.0/24就代表只有访问VPN内网段的流量走隧道,填0.0.0.0/0就代表所有流量都走隧道,这个参数两端的作用完全不一样,不能要求两边填相同内容。

分步协同校验的操作方法

配置完所有参数之后不要直接启动两端服务,先做第一步校验,在服务端执行wg show命令,先看本地的私钥对应的公钥是不是和之前发给客户端的公钥完全一致,再确认服务端的监听端口有没有被系统防火墙放行,公网的入站规则要允许UDP协议访问WireGuard的指定端口。

接下来在客户端侧做连通性预校验,用对应平台的UDP端口检测工具,确认客户端当前网络下可以正常访问服务端的公网UDP端口,部分运营商会封禁高位UDP端口,提前排查这个问题可以避免后续调试找不到方向。

两端先后启动WireGuard服务之后,先在服务端的wg show输出里看对应客户端Peer的最近接收数据包计数,如果数值一直在涨,说明客户端的握手包已经成功发到了服务端,要是计数一直是0,大概率是客户端的公钥填错,或者端口不通。

常见协同配置误区排查

很多用户遇到握手成功但是传输数据不通的情况,大多是两端Peer配置的路由规则没有协同,比如服务端没有打开IP转发功能,或者客户端的AllowedIPs填的网段和服务端VPN内网段不匹配,这时候可以先尝试两端互相ping对方的VPN内网虚拟IP,先打通底层隧道连通性,再调试跨网转发规则。

还要注意NAT场景下的客户端Peer配置适配,如果客户端是在多层内网后面,不需要做任何端口映射,因为WireGuard默认支持漫游,只要服务端的Peer段没有设置PersistentKeepalive,移动客户端可以自行配置这个参数,保持隧道在NAT网关里的映射条目长期有效,不会被运营商网关主动断开。

整个WireGuard Peer的协同逻辑本质上是身份和路由的双向匹配,不需要复杂的第三方认证服务器介入,只要把两端的对端身份信息、准入规则对应准确,就能快速搭建稳定的加密隧道,过程中不需要额外修改系统底层的网络协议参数,适配绝大多数常见的家用和小型办公网络场景。

VPN 基础编辑组
VPN 基础编辑组
内容编辑

解释加密隧道、连接协议与出口地址,帮助理解 VPN 的工作方式。

查看更多文章
配置入门

找到适合当前设备的指南

遇到规则保存后旧会话未切换相关问题,可从“建立新连接或重启受影响应用做验证”开始阅读。旧检测页面显示的结果可能并非实时请求,需要结合具体环境判断。