本文可能包含联盟链接。若您通过本站链接注册,我们可能获得佣金,但不会增加您的任何费用。详见 披露政策。
VPS指南 — 网络安全

如何在VPS上安装WireGuard VPN — 完整教程 [2026]

作者:CloudPicked 编辑团队 · 最后更新:2026年9月
在VPS上安装WireGuard VPN

目录

  1. WireGuard是什么?
  2. WireGuard vs OpenVPN vs IPsec
  3. 准备工作
  4. 服务器安装(Ubuntu 24.04)
  5. 生成密钥对
  6. 编写服务器配置
  7. 开启IP转发和防火墙
  8. 配置Windows客户端
  9. 配置macOS客户端
  10. 配置iOS / Android客户端
  11. 测试连接
  12. 设置开机自启(systemd)
  13. 常见问题排查
  14. 常见问答

如果您已经拥有一台VPS,并希望搭建一个快速、安全且易于配置的私人VPN,那么WireGuard是2026年的最佳选择。无论是在公共Wi-Fi上保护流量、突破地区限制,还是安全地连接多台私有服务器,本教程都将带您从零开始完成整个配置过程。

WireGuard是什么?

WireGuard是一种现代VPN协议,旨在比OpenVPN和IPsec等旧协议更快、更简单、更安全。主要特点如下:

WireGuard于2020年4月随Linux内核5.6版本正式合并入主线。任何现代Linux VPS都可以直接支持,无需安装额外的内核模块。

总结:为什么选择WireGuard?

对于拥有VPS、希望快速搭建私人VPN的用户来说,WireGuard是理想选择。部署简单、性能出色、经过安全审计。唯一的成本是VPS费用——无需每月支付VPN订阅费。

WireGuard vs OpenVPN vs IPsec/IKEv2

基于官方文档的客观对比(数据截至2026年9月,请以各项目官方网站为准):

特性WireGuardOpenVPNIPsec/IKEv2
传输协议仅UDPUDP或TCPUDP / ESP
默认端口UDP 51820UDP/TCP 1194UDP 500 / 4500
代码规模约4,000行约10万+行非常复杂
性能极快(内核空间)中等(用户空间)较快
配置难度非常简单中等复杂
内核集成是(Linux ≥5.6)否(用户空间)部分
加密算法ChaCha20AES-256 / ChaCha20AES-256
费用免费(开源)免费(开源)免费(开源)

WireGuard的主要局限是仅支持UDP。如果网络完全屏蔽UDP流量,WireGuard将无法连接。这种极端情况下,OpenVPN over TCP 443是备选方案。

准备工作

服务器端(VPS)

客户端(需要连接的设备)

还没有VPS? 推荐 DigitalOcean(新加坡节点,每月6美元起)或 Bangmod Cloud(泰国本地服务器)。

第一步:在服务器上安装WireGuard

通过SSH登录VPS,运行以下命令:

# 更新软件包列表
sudo apt update && sudo apt upgrade -y

# 安装WireGuard
sudo apt install -y wireguard wireguard-tools

# 验证安装是否成功
wg --version

如果看到类似 wireguard-tools v1.0.xx 的输出,说明安装成功。在Ubuntu 22.04/24.04上,WireGuard已内置于内核,无需安装额外模块。

第二步:生成服务器密钥对

WireGuard使用公私钥密码学(类似SSH)。每个节点(服务器和每个客户端)都需要自己的密钥对。

# 生成服务器私钥
sudo wg genkey | sudo tee /etc/wireguard/server_private.key

# 从私钥生成公钥
sudo cat /etc/wireguard/server_private.key | sudo wg pubkey | sudo tee /etc/wireguard/server_public.key

# 设置安全权限
sudo chmod 600 /etc/wireguard/server_private.key

# 显示密钥(请保存服务器公钥,配置客户端时会用到)
echo "=== 服务器私钥 ===" && sudo cat /etc/wireguard/server_private.key
echo "=== 服务器公钥 ===" && sudo cat /etc/wireguard/server_public.key

请妥善保存服务器公钥,每个客户端配置文件中都需要用到它。

第三步:生成客户端密钥对

为每台需要连接的设备各生成一套密钥对:

sudo wg genkey | sudo tee /etc/wireguard/client1_private.key
sudo cat /etc/wireguard/client1_private.key | sudo wg pubkey | sudo tee /etc/wireguard/client1_public.key
sudo chmod 600 /etc/wireguard/client1_private.key

echo "=== 客户端1私钥 ===" && sudo cat /etc/wireguard/client1_private.key
echo "=== 客户端1公钥 ===" && sudo cat /etc/wireguard/client1_public.key

第四步:编写服务器配置文件

sudo nano /etc/wireguard/wg0.conf

粘贴以下内容(将占位符替换为您实际的密钥):

[Interface]
# WireGuard网络中服务器的IP
Address = 10.0.0.1/24

# WireGuard监听端口
ListenPort = 51820

# 粘贴第二步生成的服务器私钥
PrivateKey = <SERVER_PRIVATE_KEY>

# 全隧道NAT规则 — 将客户端流量路由到互联网
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# ===== Peer:客户端1 =====
[Peer]
# 粘贴第三步生成的客户端1公钥
PublicKey = <CLIENT1_PUBLIC_KEY>

# 分配给此客户端的VPN IP
AllowedIPs = 10.0.0.2/32

注意: eth0 是大多数VPS上主网络接口的名称。部分VPS使用 ens3、ens18 等不同名称。运行 ip link show 确认正确的接口名称,并在PostUp/PostDown行中替换 eth0。

第五步:开启IP转发和配置防火墙

开启IP转发

# 立即启用
sudo sysctl -w net.ipv4.ip_forward=1

# 重启后持久生效
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sudo sysctl -p

配置UFW防火墙

# 允许SSH — 非常重要!先执行此步,否则会把自己锁在外面
sudo ufw allow OpenSSH

# 允许WireGuard UDP端口
sudo ufw allow 51820/udp

# 启用UFW
sudo ufw --force enable

# 验证状态
sudo ufw status verbose

启动WireGuard

sudo wg-quick up wg0
sudo wg show

第六步:配置Windows客户端

  1. 从 wireguard.com/install 下载Windows安装程序并安装。
  2. 打开WireGuard → 点击 "Add Tunnel" → "Add empty tunnel"。
  3. 应用程序会自动生成密钥对 — 复制显示的公钥,需要将其添加到服务器配置的 [Peer] 部分。
  4. 输入以下配置:
[Interface]
# 应用自动生成的私钥
PrivateKey = <客户端私钥(由应用生成)>

# 客户端VPN IP
Address = 10.0.0.2/32

# VPN连接期间使用的DNS
DNS = 1.1.1.1, 8.8.8.8

[Peer]
# 第二步生成的服务器公钥
PublicKey = <SERVER_PUBLIC_KEY>

# VPS公网IP和WireGuard端口
Endpoint = 您的VPS公网IP:51820

# 全隧道 — 所有流量通过VPN路由
AllowedIPs = 0.0.0.0/0, ::/0

# 保活,维持NAT穿透连接
PersistentKeepalive = 25

点击 保存,然后切换 激活 开关进行连接。

第七步:配置macOS客户端

方法A — Mac App Store(推荐):

  1. 打开App Store,搜索"WireGuard",安装官方应用。
  2. 点击 "+" → "Add Empty Tunnel"。
  3. 使用与Windows相同的配置结构,分配唯一IP(如10.0.0.3/32)。
  4. 保存并切换开关连接。

方法B — Homebrew(命令行):

brew install wireguard-tools
sudo mkdir -p /etc/wireguard
sudo nano /etc/wireguard/wg0.conf
# 粘贴客户端配置,然后:
sudo wg-quick up wg0

第八步:配置iOS和Android客户端

iOS

  1. 从App Store安装"WireGuard"官方应用。
  2. 点击 "+" → 选择 "从头创建" 或 "从二维码创建"。
  3. 分配IP 10.0.0.4/32(或下一个可用地址)。

Android

  1. 从Google Play安装"WireGuard"官方应用。
  2. 点击 "+" → "从头创建"。
  3. 使用IP 10.0.0.4/32填写配置。

二维码方式(手机配置更便捷)

# 在服务器上安装qrencode
sudo apt install -y qrencode

# 创建手机客户端配置文件
cat > /tmp/mobile_client.conf << EOF
[Interface]
PrivateKey = <手机客户端私钥>
Address = 10.0.0.4/32
DNS = 1.1.1.1

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = 您的VPS公网IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
EOF

# 在终端显示二维码
qrencode -t ansiutf8 < /tmp/mobile_client.conf

用手机上的WireGuard应用扫描终端中显示的二维码,即可一键导入配置。

第九步:测试连接

检查IP地址

VPN连接后,访问 whatismyipaddress.com — 显示的IP应该是您VPS的公网IP,而非本地网络IP。

在服务器上验证

sudo wg show
# 查找各Peer下的"latest handshake: X seconds ago"
# 看到此信息表示客户端已成功连接并完成密钥交换

Ping测试

# 从客户端ping服务器WireGuard IP
ping 10.0.0.1

# 从服务器ping客户端
ping 10.0.0.2

第十步:设置开机自动启动

# 使用systemd启用WireGuard服务
sudo systemctl enable wg-quick@wg0

# 立即启动
sudo systemctl start wg-quick@wg0

# 检查状态
sudo systemctl status wg-quick@wg0

完成后,每次VPS重启时WireGuard都会自动启动,无需手动操作。

常见问题排查

连接超时 / 无法握手

VPN连接后无法上网(全隧道模式)

DNS泄漏

不重启添加新Peer

# 实时添加 — 不影响现有连接
sudo wg set wg0 peer <新客户端公钥> allowed-ips 10.0.0.5/32

# 保存到配置文件
sudo wg-quick save wg0

需要VPS来运行WireGuard?以下是推荐选择:

DigitalOcean VPS   Bangmod Cloud(泰国)

常见问答

WireGuard使用哪个端口?
WireGuard默认使用UDP 51820端口。可通过修改服务器配置文件中的 ListenPort 更改为任意端口。只需开放UDP,无需任何TCP端口。
运行WireGuard需要什么VPS规格?
WireGuard极为轻量,1 vCPU + 512MB RAM的最小规格VPS即可流畅运行WireGuard服务器,同时支持多个客户端连接。
WireGuard比OpenVPN更安全吗?
WireGuard使用更现代的密码学原语(ChaCha20、Poly1305、Curve25519、BLAKE2),代码库约4000行,而OpenVPN超过10万行。更小的攻击面使大多数安全研究人员认为WireGuard是当前最佳选择。
WireGuard支持手机吗?
支持。iOS(App Store)和Android(Google Play)均有官方应用。可手动输入配置或扫描服务器生成的二维码快速导入。
WireGuard完全免费吗?
是的,WireGuard完全免费开源。唯一费用是VPS服务器费,每月低至3-6美元,无需支付月度VPN订阅费。
如何设置分流(Split Tunneling)?
在客户端配置中,将 AllowedIPs = 0.0.0.0/0(全隧道)改为只需要路由的子网。例如 AllowedIPs = 10.0.0.0/24 表示只有发往WireGuard网络的流量走VPN,其他流量直连互联网。