🧭 一、整体结构(先理解)
服务器(wg0)
↓
多个客户端(Peer)
↓
每个客户端 = 独立密钥 + 独立IP
🚀 二、首次搭建流程(完整)
1️⃣ 安装 WireGuard(服务器)
sudo apt update
sudo apt install wireguard qrencode -y
2️⃣ 生成服务器密钥
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
查看:
cat /etc/wireguard/server_public.key
3️⃣ 创建服务器配置
sudo nano /etc/wireguard/wg0.conf
写入👇(替换私钥):
[Interface]
PrivateKey = 服务器私钥
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
4️⃣ 启动服务器
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
查看状态:
sudo wg
📱 三、添加客户端(标准流程)
1️⃣ 客户端生成密钥(推荐)
👉 手机 / 电脑用 WireGuard 自动生成
或:
wg genkey | tee client_private.key | wg pubkey > client_public.key
2️⃣ 在服务器添加客户端
编辑:
sudo nano /etc/wireguard/wg0.conf
追加:
[Peer]
PublicKey = 客户端公钥
AllowedIPs = 10.0.0.2/32
应用(不用重启):
sudo wg syncconf wg0 <(wg-quick strip wg0)
3️⃣ 客户端配置
[Interface]
PrivateKey = 客户端私钥
Address = 10.0.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = 服务器公钥
Endpoint = 服务器IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
4️⃣ (可选)生成二维码
qrencode -t ansiutf8 < client.conf
🔐 四、换 Key(重点!!!)
🧨 场景:服务器私钥泄露 / 想更换
1️⃣ 生成新服务器密钥
wg genkey | tee /etc/wireguard/new_server_private.key | wg pubkey > /etc/wireguard/new_server_public.key
2️⃣ 替换 wg0.conf
sudo nano /etc/wireguard/wg0.conf
改:
PrivateKey = 新私钥
3️⃣ 重启服务(必须)
sudo wg-quick down wg0
sudo wg-quick up wg0
4️⃣ 确认新公钥生效
sudo wg show wg0 public-key
👉 必须等于:
cat /etc/wireguard/new_server_public.key
5️⃣ 更新所有客户端(关键)
每个客户端改:
[Peer]
PublicKey = 新服务器公钥
6️⃣ 客户端重新连接
打开 VPN 即可
🔁 五、完全重置(更安全)
👉 如果怀疑泄露严重:
服务器
wg genkey | tee server_private.key | wg pubkey > server_public.key
每个客户端(全部重建)
wg genkey | tee client_private.key | wg pubkey > client_public.key
更新服务器
[Peer]
PublicKey = 新客户端公钥
AllowedIPs = 新IP
🧪 六、验证是否成功
服务器查看
sudo wg
重点看:
latest handshake: 刚刚
测试网络
客户端:
ping 10.0.0.1
⚡ 七、常用命令速查
查看状态
sudo wg
查看公钥
sudo wg show wg0 public-key
启动/停止
sudo wg-quick up wg0
sudo wg-quick down wg0
热更新配置
sudo wg syncconf wg0 <(wg-quick strip wg0)
🧠 八、关键记忆(超重要)
👉 WireGuard 核心就是:
私钥(身份) + 公钥(认证) + IP(唯一标识)