- 使用
wireguard:(强烈推荐) 性能极高、配置极其简单、安全性强、资源占用少,是目前的首选方案。 - 使用
OpenVPN:功能非常成熟、兼容性极好(几乎所有设备都支持),但配置相对复杂一些。
本文将详细介绍这两种方法的完整步骤,您可以根据自己的需求选择其中一种。

前置准备
在开始之前,请确保您已完成以下步骤:
- 拥有一台 VPS:操作系统为 CentOS 7 或 CentOS 8/9 (Stream),本教程以 CentOS 7 为例,CentOS 8/9 的命令基本通用。
- 拥有 VPS 的 root 权限:或者一个有
sudo权限的用户。 - 获取 VPS 的公网 IP 地址。
- 关闭防火墙和 SELinux(为了简化安装,安装完成后我们会重新配置安全规则)。
- 关闭防火墙:
systemctl stop firewalld && systemctl disable firewalld - 关闭 SELinux:
setenforce 0
- 关闭防火墙:
使用 WireGuard(推荐)
WireGuard 是新一代的 VPN 协议,以其简洁、快速和安全而闻名。
第 1 步:安装 WireGuard
CentOS 官方仓库已经包含了 WireGuard,可以直接安装。
# 更新系统软件包 yum update -y # 安装 EPEL 仓库(如果需要,CentOS 8/9 通常已包含) yum install -y epel-release # 安装 WireGuard 和相关工具 yum install -y wireguard-tools dkms
第 2 步:生成服务端和客户端密钥
我们需要为服务器和每个客户端生成一对公钥和私钥。

# 进入一个方便工作的目录 cd /etc/wireguard/ # 生成服务器的密钥对 umask 077 wg genkey | tee server_private.key | wg pubkey > server_public.key # 生成第一个客户端的密钥对 (可以命名为 client1) wg genkey | tee client1_private.key | wg pubkey > client1_public.key # (可选)生成更多客户端的密钥对 # wg genkey | tee client2_private.key | wg pubkey > client2_public.key
执行后,你会得到四个文件:
server_private.key:服务器私钥,务必保密。server_public.key:服务器公钥。client1_private.key:客户端1私钥,发给客户端,务必保密。client1_public.key:客户端1公钥。
第 3 步:配置服务器
创建 WireGuard 的配置文件 wg0.conf。
# 创建配置文件 nano /etc/wireguard/wg0.conf
粘贴到文件中,并根据你的实际情况进行修改:
[Interface] # 服务器私钥 PrivateKey = <在这里粘贴 server_private.key 的内容> # 服务器 VPN 网段,客户端将从这个网段获取 IP 地址 Address = 10.0.0.1/24 # 设置一个 DNS 服务器,Google DNS 或 Cloudflare DNS DNS = 8.8.8.8, 1.1.1.1 # 端口号,默认是 51820,可以修改成你喜欢的端口(8888) # 确保在 VPS 控制面板的防火墙中开放这个端口 ListenPort = 51820 # 启用 IP 转发功能,这是让 VPS 能够转发流量的关键 PostUp = echo 1 > /proc/sys/net/ipv4/ip_forward # 停止时恢复 IP 转发设置 PostDown = echo 0 > /proc/sys/net/ipv4/ip_forward # 客户端配置部分 [Peer] # 客户端1的公钥 PublicKey = <在这里粘贴 client1_public.key 的内容> # 为客户端1分配一个固定的 VPN 内网 IP AllowedIPs = 10.0.0.2/32 # (可选)添加第二个客户端 # [Peer] # PublicKey = <在这里粘贴 client2_public.key 的内容> # AllowedIPs = 10.0.0.3/32
配置说明:

[Interface]:服务器自身的配置。[Peer]:客户端的配置,每增加一个客户端,就添加一个[Peer]部分。AllowedIPs:这个字段定义了哪些流量可以通过这个客户端。0.0.2/32表示只有来自0.0.2的数据包才被允许,如果你希望客户端的所有流量都通过 VPN,可以设置为0.0.0/0。
第 4 步:配置 NAT 和启动服务
为了让客户端能够访问互联网,我们需要配置 NAT (网络地址转换)。
# 安装 iptables yum install -y iptables-services # 配置 NAT 规则 # 将从 wg0 接口出去的流量进行源地址转换 (SNAT),使用 VPS 的公网 IP iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 保存 iptables 规则 service iptables save # 启动并设置开机自启 systemctl start iptables systemctl enable iptables # 启动 WireGuard 服务并设置开机自启 systemctl enable wg-quick@wg0 systemctl start wg-quick@wg0
第 5 步:创建客户端配置文件
客户端需要配置文件才能连接,我们将为 client1 创建一个。
# 创建客户端配置文件 nano /etc/wireguard/client1.conf
粘贴到文件中:
[Interface] # 客户端1的私钥 PrivateKey = <在这里粘贴 client1_private.key 的内容> # 客户端1的 VPN 内网 IP Address = 10.0.0.2/24 # 设置 DNS DNS = 8.8.8.8, 1.1.1.1 # (可选)在断开连接前尝试保持连接 # PersistentKeepalive = 25 [Peer] # 服务器的公钥 PublicKey = <在这里粘贴 server_public.key 的内容> # 服务器 VPS 的公网 IP 和端口 Endpoint = <你的 VPS 公网 IP>:51820 # 允许客户端访问哪些流量,设置为 0.0.0.0/0 表示所有流量都走 VPN AllowedIPs = 0.0.0.0/0 # 客户端信任哪些服务器的 IP 地址,设置为 0.0.0.0/0 表示所有流量都通过 VPN 路回服务器 # 如果只想访问特定资源,可以只填服务器的 IP PersistentKeepalive = 25
获取客户端配置:
你可以直接下载 /etc/wireguard/client1.conf 文件到本地电脑或手机上。
第 6 步:在客户端连接
- Windows: 下载 WireGuard 客户端,导入
client1.conf文件即可。 - macOS: 同样在 App Store 下载 WireGuard 客户端。
- Android: 在 Google Play 下载 WireGuard 应用,导入配置。
- iOS: 在 App Store 下载 WireGuard 应用,导入配置。
导入后,点击 "Activate" 即可连接。
使用 OpenVPN
OpenVPN 是一个功能非常强大且成熟的 VPN 解决方案。
第 1 步:安装 EPEL 仓库和 OpenVPN
# 安装 EPEL 仓库 yum install -y epel-release # 安装 OpenVPN 和 easy-rsa(用于管理证书) yum install -y openvpn easy-rsa
第 2 步:准备 CA 和证书
这部分比 WireGuard 复杂,需要创建一个证书颁发机构,并为服务器和客户端生成证书和密钥。
# 创建一个目录来存放证书文件 mkdir -p /etc/openvpn/server/easy-rsa/keys cp -rf /usr/share/easy-rsa/3/* /etc/openvpn/server/easy-rsa/ # 进入 easy-rsa 目录 cd /etc/openvpn/server/easy-rsa/ # 编辑 vars 文件,设置一些默认值 nano vars
在 vars 文件中,找到以下几行并修改(取消注释并设置你的值):
set_var EASYRSA_REQ_COUNTRY "CN" set_var EASYRSA_REQ_PROVINCE "Beijing" set_var EASYRSA_REQ_CITY "Beijing" set_var EASYRSA_REQ_ORG "My Company Name
