在CentOS系统中搭建VPN服务,可以为企业或个人提供安全的远程访问解决方案,以下是详细的步骤指南,帮助您完成搭建过程。

系统准备与更新
在开始搭建VPN之前,确保您的CentOS系统已经更新到最新版本,打开终端,执行以下命令更新系统软件包:
sudo yum update -y
确保系统时间同步,避免证书验证问题:
sudo yum install ntp -y
sudo ntpdate pool.ntp.org
安装必要的软件包
搭建VPN服务需要安装一些基础软件包,如OpenVPN、Easy-RSA等,执行以下命令进行安装:
sudo yum install epel-release -y
sudo yum install openvpn easy-rsa -y
安装完成后,创建一个目录用于存放Easy-RSA的密钥文件:
mkdir ~/easy-rsa
cp -rf /usr/share/easy-rsa/* ~/easy-rsa/
cd ~/easy-rsa/
生成CA证书和服务器证书
使用Easy-RSA生成证书Authority(CA)证书和服务器证书,编辑vars文件以配置证书参数:
nano vars
在文件中设置以下变量:
export KEY_COUNTRY="CN"
export KEY_PROVINCE="Beijing"
export KEY_CITY="Beijing"
export KEY_ORG="MyCompany"
export KEY_EMAIL="admin@mycompany.com"
保存文件后,执行以下命令初始化PKI:
source vars
./clean-all
./build-ca
根据提示输入证书信息,生成CA证书,生成服务器证书:

./build-key-server server
同样输入相关信息,并确保将两个“Sign the certificate?”选项设置为“yes”。
生成Diffie-Hellman参数
Diffie-Hellman参数用于增强VPN连接的安全性,生成过程可能需要一些时间:
./build-dh
完成后,生成的文件将位于~/easy-rsa/keys目录中。
创建OpenVPN配置文件
复制OpenVPN的示例配置文件到/etc/openvpn目录:
sudo cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/
编辑配置文件:
sudo nano /etc/openvpn/server.conf
根据需要修改以下参数:
port 1194
proto udp
dev tun
ca /root/easy-rsa/keys/ca.crt
cert /root/easy-rsa/keys/server.crt
key /root/easy-rsa/keys/server.key
dh /root/easy-rsa/keys/dh2048.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
保存文件后,启动OpenVPN服务:
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
配置防火墙和SELinux
确保防火墙允许VPN流量,执行以下命令:

sudo firewall-cmd --permanent --add-port=1194/udp
sudo firewall-cmd --reload
sudo firewall-cmd --add-masquerade
如果启用了SELinux,需要调整其策略:
sudo setsebool -P openvpn_can_network_connect on
生成客户端配置文件
为客户端生成配置文件,可以使用以下模板:
client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
comp-lzo
verb 3
key-direction 1
将生成的客户端证书和密钥文件(client.crt、client.key)与配置文件一起打包,分发给客户端。
测试VPN连接
将客户端配置文件导入OpenVPN客户端软件,连接到服务器,检查是否能够成功分配IP地址并访问互联网。
常见问题与解决方案
- 连接失败:检查服务器防火墙和SELinux设置,确保1194端口已开放。
- 无法访问互联网:确认客户端配置文件中的DNS设置正确,并检查服务器的IP转发功能是否启用。
相关问答FAQs
问题1:如何确保VPN连接的安全性?
答:可以通过使用强密码、启用双因素认证、定期更新证书和密钥,以及选择加密强度较高的算法(如AES-256)来增强VPN的安全性。
问题2:如果VPN连接速度较慢,如何优化?
答:可以尝试更换更高效的加密算法(如AES-128-GCM),减少日志记录级别,或选择更低延迟的服务器位置,检查网络带宽和服务器负载情况也有助于提升速度。