Appearance
WireGuard 快速入门
WireGuard 是一种高性能、低延迟的现代 VPN 协议,以其极简的配置和内核级集成著称。本教程将指导你完成一个典型的星型拓扑组网:一台 Linux 服务端 + 一台 Linux 客户端 + 一台 Windows 客户端。
📌 网络规划示例
| 角色 | 公网地址 | 内网 IP | 备注 |
|---|---|---|---|
| 服务端 | 203.0.113.10:51820 | 10.0.0.1/24 | 中转与汇聚节点 |
| Linux 客户端 | NAT / 动态IP | 10.0.0.2/32 | 远程服务器/设备 |
| Windows 客户端 | NAT / 动态IP | 10.0.0.3/32 | 本地办公/管理终端 |
🖥️ 一、Linux 服务端部署
1. 安装 WireGuard
bash
# Ubuntu / Debian
sudo apt update && sudo apt install wireguard -y
# CentOS / RHEL
sudo yum install epel-release -y && sudo yum install wireguard-tools -y2. 生成密钥对
bash
wg genkey | tee /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key
sudo chmod 600 /etc/wireguard/private.key⚠️ 注意:请妥善记录并保管生成的私钥和公钥,后续配置需要用到。私钥泄露等同于隧道被完全接管。
3. 编写服务端配置
bash
sudo nano /etc/wireguard/wg0.confini
[Interface]
PrivateKey = <服务端私钥>
Address = 10.0.0.1/24
ListenPort = 51820
# 如需为客户端提供 NAT 上网,取消下面两行注释(假设出口网卡为 eth0)
# PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Linux 客户端 Peer
[Peer]
PublicKey = <Linux客户端公钥>
AllowedIPs = 10.0.0.2/32
# Windows 客户端 Peer
[Peer]
PublicKey = <Windows客户端公钥>
AllowedIPs = 10.0.0.3/324. 开启内核转发 & 启动服务
bash
# 永久开启 IP 转发
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 启动并设置开机自启
sudo systemctl enable --now wg-quick@wg0.service5. 放行防火墙端口
bash
# ufw
sudo ufw allow 51820/udp
# firewalld
sudo firewall-cmd --permanent --add-port=51820/udp && sudo firewall-cmd --reload⚠️ 云服务器用户必读 除了系统防火墙,务必同时在云服务商控制台的安全组中放行 UDP 51820 端口,否则外网无法建立连接。
🐧 二、Linux 客户端部署
1. 安装与生成密钥
与服务端步骤 1、2 完全相同,生成该客户端独立的密钥对。
2. 编写客户端配置
bash
sudo nano /etc/wireguard/wg0.confini
[Interface]
PrivateKey = <Linux客户端私钥>
Address = 10.0.0.2/32
MTU = 1360
[Peer]
PublicKey = <服务端公钥>
Endpoint = 203.0.113.10:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25💡 提示
PersistentKeepalive = 25表示每 25 秒发送一次心跳包,可有效防止 NAT 网关因超时断开隧道映射。建议所有处于 NAT 环境后的客户端都加上此参数。
3. 启动连接
bash
sudo systemctl enable --now wg-quick@wg0.service4. 验证连通性
bash
sudo wg show # 确认 latest handshake 时间不为 "never"
ping 10.0.0.1 # 测试与服务端连通
ping 10.0.0.3 # 测试与 Windows 客户端互通(需服务端已开启 IP 转发)🪟 三、Windows 客户端部署
1. 安装官方客户端
从 wireguard.com/install 下载 Windows 版安装包并完成安装。
2. 生成密钥
打开 WireGuard GUI → 点击左下角 「添加隧道」 → 选择 「添加空隧道」,软件会自动生成一对密钥。
3. 填写配置
在弹出的编辑窗口中填入以下内容(替换对应密钥):
ini
[Interface]
PrivateKey = <Windows自动生成的私钥>
Address = 10.0.0.3/32
MTU = 1360
[Peer]
PublicKey = <服务端公钥>
Endpoint = 203.0.113.10:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25点击 「保存」。
4. 激活隧道
点击 「激活」 按钮,状态指示灯变为绿色即表示连接成功。
5. 验证连通性
打开 CMD 或 PowerShell:
powershell
ping 10.0.0.1 # 测试服务端
ping 10.0.0.2 # 测试 Linux 客户端🔧 常用运维速查
bash
# 查看隧道实时状态(含流量、握手时间等)
sudo wg show
# 查看服务日志排查问题
journalctl -u wg-quick@wg0 -f
# 修改配置文件后热重载(无需中断现有连接)
sudo wg syncconf wg0 <(wg-quick strip wg0)