-
使用 WireGuard(推荐)
(图片来源网络,侵删)- 优点:速度极快、协议现代、配置简单、资源占用少、安全性高,是目前最推荐的方案。
- 缺点:相对较新,但已经非常成熟稳定。
-
使用 OpenVPN
- 优点:兼容性最好,几乎所有设备和平台都支持,功能非常成熟。
- 缺点:配置相对复杂,速度通常比 WireGuard 慢一些。
准备工作
在开始之前,请确保您:
-
拥有一台 VPS(云服务器):
- 推荐使用 Ubuntu 20.04 或 22.04 LTS 版本。
- 最小配置建议:1核 CPU, 1GB 内存, 25GB 硬盘。
- 确保服务器的 80 (HTTP) 和 443 (HTTPS) 端口是开放的,这对于后续安装和客户端连接至关重要。
- 获取到服务器的 公网 IP 地址。
-
以 root 用户或具有
sudo权限的用户登录。
(图片来源网络,侵删) -
更新系统:
sudo apt update && sudo apt upgrade -y
使用 WireGuard 搭建 VPN 服务器(推荐)
WireGuard 的配置非常简洁,核心就是两个步骤:在服务器上创建配置,在客户端上使用相同的配置。
第 1 步:安装 WireGuard
# 安装 WireGuard 和必要的工具 sudo apt install wireguard resolvconf -y
第 2 步:生成服务器的密钥对
# 进入 /etc/wireguard 目录 cd /etc/wireguard # 生成服务器的私钥和公钥 # umask 077 确保生成的私钥文件权限安全 umask 077 wg genkey | tee server_private.key | wg pubkey > server_public.key
您会在 /etc/wireguard 目录下看到两个文件:
server_private.key:服务器私钥,请绝对保密!server_public.key:服务器公钥,可以分享。
第 3 步:创建服务器配置文件
创建并编辑 WireGuard 的主配置文件 wg0.conf:

sudo nano /etc/wireguard/wg0.conf
粘贴进去,并根据您的实际情况修改 Address、ListenPort 和 PostUp/PostDown 中的 eth0(如果您的主网卡名称不是 eth0,请使用 ip a 命令查看)。
[Interface] # 服务器私钥内容 PrivateKey = $(cat /etc/wireguard/server_private.key) # VPN 服务器的内网 IP 地址和子网掩码 Address = 10.0.0.1/24 # WireGuard 监听的端口 (建议使用 51820 或其他自定义端口) ListenPort = 51820 # 启动后执行的命令,用于启用 IP 转发和 NAT # 请将 eth0 替换为您服务器主网卡的名称 (如 ens3, eth0) PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 停止前执行的命令,用于清理规则 PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
保存并退出:在 nano 编辑器中,按 Ctrl + X,然后按 Y,最后按 Enter。
第 4 步:启用 IP 转发
为了让服务器能将客户端的流量转发到互联网,需要开启内核的 IP 转发功能。
# 编辑 sysctl.conf 文件 sudo nano /etc/sysctl.conf
找到下面这行,如果被 注释了,就取消注释:
#net.ipv4.ip_forward=1
改为:
net.ipv4.ip_forward=1
保存后,让配置立即生效:
sudo sysctl -p
第 5 步:启动并设置开机自启 WireGuard
# 启动 wg0 接口 sudo wg-quick up wg0 # 设置开机自启 sudo systemctl enable wg-quick@wg0
检查 WireGuard 是否正常运行:
sudo wg
如果看到类似 interface: wg0 和 listening port: 51820 的输出,说明服务器端已经成功运行。
第 6 步:为客户端生成配置
我们需要为你的设备(手机、电脑)创建一个配置文件,假设我们要为第一个客户端创建。
-
生成客户端密钥对:
# 在服务器上执行,生成客户端的密钥对 umask 077 wg genkey | tee client_private.key | wg pubkey > client_public.key
你会得到
client_private.key和client_public.key。 -
获取客户端的公钥:
cat client_public.key
复制输出的公钥内容。
-
添加客户端到服务器配置: 再次编辑服务器的
wg0.conf文件:sudo nano /etc/wireguard/wg0.conf
在文件末尾添加以下内容(将
[Peer]部分添加到文件末尾):[Peer] # 这里粘贴刚刚复制的客户端公钥 PublicKey = <粘贴客户端的公钥> # 为客户端分配一个固定的内网 IP 地址 AllowedIPs = 10.0.0.2/32
保存并退出。
-
重新加载 WireGuard 配置:
sudo wg-quick down wg0 && sudo wg-quick up wg0 # 或者使用 reload 命令 sudo wg syncconf wg0 <(wg-quick strip wg0)
第 7 步:创建客户端配置文件
你需要一个配置文件来导入到你的客户端设备上,这个文件通常包含 [Interface] 和 [Peer] 两部分。
# 创建客户端配置文件 sudo nano /etc/wireguard/client.conf
粘贴进去,并填入正确的信息:
[Interface] # 客户端私钥内容 (cat /etc/wireguard/client_private.key) PrivateKey = <客户端的私钥> # 客户端内网 IP 地址 Address = 10.0.0.2/32 # 可选:设置 DNS 服务器,防止 DNS 泄露 DNS = 8.8.8.8, 1.1.1.1 [Peer] # 服务器公钥内容 (cat /etc/wireguard/server_public.key) PublicKey = <服务器的公钥> # 服务器公网 IP 和端口 Endpoint = <你的服务器公网IP>:51820 # 客户端通过 VPN 发出的所有流量都走这个隧道 AllowedIPs = 0.0.0.0/0, ::/0 # 保持连接,避免被 NAT 超时 PersistentKeepalive = 25
保存并退出。
第 8 步:下载配置并连接
-
从服务器下载
client.conf文件到你的本地电脑或手机。# 在本地电脑上使用 scp 命令下载 scp root@<你的服务器公网IP>:/etc/wireguard/client.conf ~/Downloads/
-
在客户端设备上安装 WireGuard:
- Windows: 官方下载页
- macOS: 从 Mac App Store 下载 "WireGuard"
- Android: 从 Google Play 下载 "WireGuard"
- iOS: 从 App Store 下载 "WireGuard"
-
打开客户端应用,点击“从文件/二维码导入”,选择你下载的
client.conf文件。 -
启用该隧道,现在你的设备已经通过 VPN 安全地连接到服务器了!
使用 OpenVPN 搭建 VPN 服务器
OpenVPN 的配置比 WireGuard 复杂,因为它需要生成证书和密钥。
第 1 步:安装 OpenVPN 和 Easy-RSA
sudo apt install openvpn easy-rsa -y
第 2 步:准备 CA 和证书环境
# 创建一个目录来存放证书 make-cadir ~/openvpn-ca cd ~/openvpn-ca # 编辑 vars 文件,设置一些默认值 nano vars
在 vars 文件中,修改以下几行,设置你的国家、省份、城市、组织、邮箱等:
set EASYRSA_REQ_COUNTRY="CN" set EASYRSA_REQ_PROVINCE="Beijing" set EASYRSA_REQ_CITY="Beijing" set EASYRSA_REQ_ORG="My Company" set EASYRSA_REQ_EMAIL="admin@mycompany.com"
保存并退出。
第 3 步:构建证书颁发机构 (CA)
# 初始化 PKI (Public Key Infrastructure) ./easyrsa init-pki # 构建一个自签名的 CA ./easyrsa build-ca nopass
一路按回车,最后会生成 pki/ca.crt 和 pki/private/ca.key。
第 4 步:为服务器生成证书和密钥
# 生成服务器证书和密钥,并指定一个名字,"server" ./easyrsa gen-req server nopass # 使用 CA 签名服务器请求 ./easyrsa sign-req server server
在 Confirm request details: 时输入 yes。
第 5 步:生成 Diffie-Hellman 参数
这个步骤可能需要几分钟时间:
./easyrsa gen-dh
完成后会生成 pki/dh.pem。
第 6 步:生成 HMAC 密钥
openvpn --genkey --secret pki/ta.key
第 7 步:创建服务器配置文件
# 复制一个示例配置文件 sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gunzip /etc/openvpn/server.conf.gz # 编辑服务器配置文件 sudo nano /etc/openvpn/server.conf
找到并修改/取消注释以下行:
# 使用哪个协议和端口 port 1194 proto udp # 使用 TUN 虚拟网卡 dev tun # CA 证书路径 ca /root/openvpn-ca/pki/ca.crt # 服务器证书和密钥路径 cert /root/openvpn-ca/pki/issued/server.crt key /root/openvpn-ca/pki/private/server.key # DH 参数文件路径 dh /root/openvpn-ca/pki/dh.pem # 使用 HMAC 来增强安全性 tls-crypt /root/openvpn-ca/pki/ta.key # 网络配置 server 10.8.0.0 255.255.255.0 # 推导客户端使用网关 push "redirect-gateway def1 bypass-dhcp" # 推导客户端使用的 DNS 服务器 push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 1.1.1.1" # 允许客户端之间互相通信 client-to-client # 保持连接 keepalive 10 120 # 使用 LZO 压缩 comp-lzo # 用户和权限 user nobody group nogroup # 状态日志 status /var/log/openvpn/openvpn-status.log verb 3
保存并退出。
第 8 步:启动 OpenVPN 并设置开机自启
# 启动服务 sudo systemctl start openvpn@server # 设置开机自启 sudo systemctl enable openvpn@server
第 9 步:配置 IP 转发和防火墙
这部分与 WireGuard 相同。
# 编辑 sysctl.conf sudo nano /etc/sysctl.conf
确保 net.ipv4.ip_forward=1 已取消注释并生效:
sudo sysctl -p
配置 UFW 防火墙:
# 允许 OpenVPN 端口 (UDP 1194) sudo ufw allow 1194/udp # 允许 SSH 连接,防止你被锁在门外 sudo ufw allow OpenSSH # 启用防火墙 sudo ufw enable
第 10 步:生成客户端配置文件
这部分最复杂,需要为每个客户端生成独立的证书和配置文件,可以写一个脚本来自动化,但手动步骤如下:
-
为客户端生成证书: 回到
~/openvpn-ca目录:cd ~/openvpn-ca ./easyrsa gen-req client1 nopass ./easyrsa sign-req client client1
-
创建客户端配置文件
client1.ovpn: 你需要将以下所有内容合并到一个.ovpn文件中。- 服务器配置模板
<ca>,<cert>,<key>,<tls-crypt>四个标签内的内容(从对应的证书文件中复制)- 推荐使用
easyrsa提供的脚本./easyrsa build-client-full client1 nopass来自动生成包含所有内容的配置文件。
-
下载并连接: 将生成的
client1.ovpn文件下载到客户端设备,使用 OpenVPN 客户端导入连接。
总结与建议
| 特性 | WireGuard | OpenVPN |
|---|---|---|
| 配置难度 | 非常简单 | 较复杂 |
| 速度性能 | 极快 | 良好 |
| 协议现代性 | 非常现代 | 成熟,但略显传统 |
| 资源占用 | 极低 | 较高 |
| 兼容性 | 良好,主流系统已支持 | 极佳,所有平台都支持 |
| 安全性 | 极高 | 高 |
对于绝大多数用户,我强烈推荐使用 WireGuard。 它的配置流程清晰、快速,性能和安全性都是顶级的,只有当你需要连接到一些非常老旧的设备,或者某些特定网络环境对 OpenVPN 协议有特殊要求时,才考虑使用 OpenVPN。
搭建完成后,请务必注意安全,不要泄露服务器的私钥和客户端的配置文件。
