知识 Wiki 总览 / VPN
WireGuard
更新于 2026-11-07条目链接
WireGuard 是一个以密钥为基础的 IP 隧道协议及其实现。每个接口持有自己的私钥,并通过对端公钥识别通信对象。配置中的 AllowedIPs 同时参与对端流量选择和系统路由配置;它不是访问控制列表的替代品,网关仍需配置转发与防火墙策略。
配置结构
以下是跨平台客户端模板。用服务端签发的地址、密钥、DNS、端口和需要访问的路由替换占位值。私钥应由客户端本机或可信管理系统生成,不得复制到公开仓库或发送给第三方。
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY_BASE64
Address = 10.8.0.2/32
DNS = 10.8.0.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY_BASE64
Endpoint = vpn.example.net:51820
AllowedIPs = 10.8.0.0/24, 10.20.0.0/16
PersistentKeepalive = 25
PersistentKeepalive 用于在需要时维持 NAT 或有状态防火墙映射。WireGuard 官方文档给出的常见间隔是 25 秒,但多数不需要接收空闲入站连接的场景无需启用此项。
Windows
在官方 WireGuard 客户端导入配置并启动隧道。以下命令使用安装目录中的服务控制程序,需要管理员权限。
& "$env:ProgramFilesWireGuardwireguard.exe" /installtunnelservice "$PWDclient.conf"
& "$env:ProgramFilesWireGuardwireguard.exe" /uninstalltunnelservice client
macOS
在官方 WireGuard 应用中导入配置文件并启用隧道。应用负责创建系统隧道接口和配置路由。
open -a WireGuard
Linux
在已安装 WireGuard 工具的 Linux 系统上,wg-quick 可依据配置创建接口、地址、DNS 和路由。运行前应限制配置文件的读取权限。
chmod 600 client.conf
sudo wg-quick up ./client.conf
sudo wg show
状态与安全
配置文件中的私钥足以冒充相应客户端身份。服务端应为每个客户端单独分配密钥和隧道地址,撤销遗失设备,并只发布必要的 AllowedIPs。握手存在不等同于应用服务可达;还应验证路由、DNS、转发和防火墙。
参考资料
WireGuard 官方快速入门;WireGuard 协议与密码学;wg-quick 手册;WireGuard for Windows 网络行为说明。
