好的,我给你整理一份 WireGuard 安装与配置教程,从零开始,涵盖 安装、密钥生成、服务端配置、客户端配置、网络测试,适用于 Linux(Ubuntu/CentOS)环境,同时给出 Windows/手机客户端配置方法。教程尽量详细到实战级别。
WireGuard 组网神器安装与配置教程(超详细)
1️⃣ WireGuard 简介
- WireGuard 是一款轻量、快速、安全的 VPN 工具
- 核心特点:
- 基于 UDP 协议,速度快,延迟低
- 使用 现代加密算法(ChaCha20, Poly1305)
- 配置简单,不依赖复杂证书体系
- 支持 Linux、Windows、macOS、iOS、Android 等多平台
- 典型应用场景:
- 家庭或公司内网组网
- 穿透 NAT / 公网访问内网
- 安全远程办公
2️⃣ 环境准备
- 服务器端:公网 IP 的 Linux 服务器(Ubuntu 22.04 / CentOS 7/8)
- 客户端:Windows / Linux / macOS / Android / iOS
3️⃣ 安装 WireGuard
3.1 Ubuntu/Debian
# 更新软件源
sudo apt update
# 安装 WireGuard
sudo apt install wireguard -y
# 查看版本
wg --version
3.2 CentOS 7/8
# 安装 EPEL 仓库
sudo yum install epel-release -y
# 安装 WireGuard
sudo yum install wireguard-tools -y
# 查看版本
wg --version
4️⃣ 生成密钥对
WireGuard 使用 公钥/私钥机制,每台节点都需要一对密钥。
# 创建目录存放密钥
mkdir -p /etc/wireguard/keys
cd /etc/wireguard/keys
# 生成私钥
wg genkey > server_private.key
# 根据私钥生成公钥
wg pubkey < server_private.key > server_public.key
# 查看密钥
cat server_private.key
cat server_public.key
客户端也同样生成密钥对,只是换名字即可,例如
client_private.key和client_public.key
5️⃣ 服务器端配置
5.1 创建 WireGuard 配置文件
sudo nano /etc/wireguard/wg0.conf
示例内容:
[Interface]
# 服务器本机私钥
PrivateKey = <服务器私钥>
# WireGuard 监听端口
ListenPort = 51820
# VPN 网段
Address = 10.0.0.1/24
# 允许服务器将 VPN 流量转发到公网
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Address是 VPN 内网 IP,可以自由规划(如 10.0.0.0/24 或 192.168.100.0/24)ListenPort可自行指定(默认 51820)PostUp/PostDown用于 NAT 转发(必须替换eth0为服务器实际网卡名)
5.2 启动 WireGuard
# 启动 wg0 接口
sudo wg-quick up wg0
# 设置开机自启
sudo systemctl enable wg-quick@wg0
5.3 查看状态
wg show
- 可以看到公钥、端口、已连接客户端信息
6️⃣ 客户端配置
6.1 Linux / Windows / macOS 客户端配置示例
[Interface]
PrivateKey = <客户端私钥>
Address = 10.0.0.2/24
DNS = 8.8.8.8
[Peer]
# 服务器信息
PublicKey = <服务器公钥>
Endpoint = <服务器公网IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0表示所有流量走 VPNPersistentKeepalive = 25用于 NAT 穿透(客户端在 NAT 后需要)
6.2 手机客户端
- 安装 WireGuard App(iOS / Android)
- 点击 “+” → “添加隧道” → “手动输入配置”
- 配置内容与桌面客户端一致
7️⃣ 添加客户端到服务器
在服务器上,需要在 wg0.conf 中添加客户端信息:
[Peer]
# 客户端公钥
PublicKey = <客户端公钥>
# 客户端允许的 IP
AllowedIPs = 10.0.0.2/32
AllowedIPs可以单 IP(/32)或者整个子网- 保存后重启 WireGuard:
sudo wg-quick down wg0
sudo wg-quick up wg0
8️⃣ 测试 VPN 是否连通
8.1 ping 测试
# 从客户端 ping 服务器 VPN IP
ping 10.0.0.1
# 从服务器 ping 客户端
ping 10.0.0.2
8.2 检查流量
# 查看连接状态
wg show
- 会显示接收和发送的字节数
- 客户端连接成功即可通过 VPN 内网通信
9️⃣ 高级配置(可选)
- 多客户端配置:每个客户端生成自己的密钥和 IP,在服务器添加
[Peer]即可 - 内网互通:将 AllowedIPs 设置为 VPN 子网
10.0.0.0/24,所有客户端互通 - 全局路由 / 分流:
- 全局走 VPN:
AllowedIPs = 0.0.0.0/0 - 指定内网走 VPN:
AllowedIPs = 10.0.0.0/24
- 全局走 VPN:
- 防火墙注意:确保 UDP 端口开放,NAT 配置正确
10️⃣ 常见问题与解决
| 问题 | 解决方案 |
|---|---|
| 客户端无法连接 | 检查服务器 UDP 端口是否开放、防火墙配置 |
| ping 不通 | 检查 AllowedIPs 设置、PostUp/PostDown NAT 转发 |
| NAT 后无法连接 | 客户端加 PersistentKeepalive = 25 |
| 多客户端冲突 | 每个客户端 IP 不要重复 |
| Windows 客户端显示“未连接” | 检查服务器端公钥是否正确添加 Peer |
✅ 总结
- WireGuard 安装简单,配置轻量
- 生成密钥对 → 服务器配置 wg0.conf → 客户端配置 → 测试连接
- 支持多平台,多客户端,跨 NAT 穿透
- 关键点:
- 确保 UDP 端口开放
- VPN 内网 IP 不冲突
- NAT 转发配置正确
发表回复