WireGuard采用AES-256-GCM提供加密,使用ChaCha20-Poly1305作为备选流密码,身份验证基于公钥。它不依赖传统的预共享密钥交换流程,而是通过静态的公私钥对来确认对等端身份。
密钥派生与身份绑定
每个端点生成Curve25519密钥对。公网地址在控制层面用于定位对端,蜂窝加速器而数据平面的通信密钥由双方的公私钥结合时间戳通过HKDF派生。这意味着即使IP地址发生变化,只要密钥未泄露,身份验证依然有效。这种设计避免了IP欺骗带来的身份混淆,但要求密钥管理严格。
网络场景中的握手过程
假设客户端连接服务器,客户端首先向服务器监听端口发送初始化数据包,其中包含自己的公钥和临时密钥材料。服务器验证该公钥是否在其配置列表中,若匹配则生成共享密钥并返回响应。随后双方使用对称加密通道传输数据。这个过程是主动的,服务器不会主动发起连接,除非配置了监听。
AllowedIPs的双重作用
AllowedIPs字段不仅决定路由指向哪个对等端,还用于校验接收到的数据包源地址。如果数据包源IP不在对端的AllowedIPs列表中,该包会被丢弃。因此,不能简单认为配置0.0.0.0/0就会接收所有来源的流量,连接设置必须确保源地址符合策略。这一机制增强了安全性,防止非法源IP伪装。

基于静态密钥对的信任机制,让连接不再依赖易变的IP地址。
UDP监听与端口复用限制
WireGuard仅使用UDP协议,连接设置监听端口由ListenPort指定。同一UDP端口不能同时被TCP服务复用,因为传输层协议不同。虽然底层操作系统可能允许同端口号的多协议监听,但WireGuard实例本身只绑定UDP。若需TCP访问,需通过代理或其他转换手段,这会增加延迟并改变流量特征,不属于WireGuard原生能力。




