好的,我给你整理一份 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.keyclient_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 表示所有流量走 VPN
  • PersistentKeepalive = 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️⃣ 高级配置(可选)

  1. 多客户端配置:每个客户端生成自己的密钥和 IP,在服务器添加 [Peer] 即可
  2. 内网互通:将 AllowedIPs 设置为 VPN 子网 10.0.0.0/24,所有客户端互通
  3. 全局路由 / 分流
    • 全局走 VPN:AllowedIPs = 0.0.0.0/0
    • 指定内网走 VPN:AllowedIPs = 10.0.0.0/24
  4. 防火墙注意:确保 UDP 端口开放,NAT 配置正确

10️⃣ 常见问题与解决

问题解决方案
客户端无法连接检查服务器 UDP 端口是否开放、防火墙配置
ping 不通检查 AllowedIPs 设置、PostUp/PostDown NAT 转发
NAT 后无法连接客户端加 PersistentKeepalive = 25
多客户端冲突每个客户端 IP 不要重复
Windows 客户端显示“未连接”检查服务器端公钥是否正确添加 Peer

✅ 总结

  1. WireGuard 安装简单,配置轻量
  2. 生成密钥对服务器配置 wg0.conf客户端配置测试连接
  3. 支持多平台,多客户端,跨 NAT 穿透
  4. 关键点
    • 确保 UDP 端口开放
    • VPN 内网 IP 不冲突
    • NAT 转发配置正确