凌峰创科服务平台

CentOS VPS如何快速搭建VPN服务器?

  1. 使用 wireguard(强烈推荐) 性能极高、配置极其简单、安全性强、资源占用少,是目前的首选方案。
  2. 使用 OpenVPN:功能非常成熟、兼容性极好(几乎所有设备都支持),但配置相对复杂一些。

本文将详细介绍这两种方法的完整步骤,您可以根据自己的需求选择其中一种。

CentOS VPS如何快速搭建VPN服务器?-图1
(图片来源网络,侵删)

前置准备

在开始之前,请确保您已完成以下步骤:

  1. 拥有一台 VPS:操作系统为 CentOS 7CentOS 8/9 (Stream),本教程以 CentOS 7 为例,CentOS 8/9 的命令基本通用。
  2. 拥有 VPS 的 root 权限:或者一个有 sudo 权限的用户。
  3. 获取 VPS 的公网 IP 地址
  4. 关闭防火墙和 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 步:生成服务端和客户端密钥

我们需要为服务器和每个客户端生成一对公钥和私钥。

CentOS VPS如何快速搭建VPN服务器?-图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

配置说明:

CentOS VPS如何快速搭建VPN服务器?-图3
(图片来源网络,侵删)
  • [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
分享:
扫描分享到社交APP
上一篇
下一篇