在CentOS系统下搭建OpenVPN服务,可以为远程用户提供安全的网络接入服务,本文将详细介绍从环境准备到服务配置的完整流程,帮助读者快速完成OpenVPN服务器的搭建,整个过程需要具备基本的Linux操作知识,并确保以root权限或具备sudo权限的用户身份执行操作。

环境准备与系统更新
首先需要准备一台运行CentOS 7或更高版本的服务器,确保系统已更新至最新状态,执行以下命令更新系统软件包:
sudo yum update -y
sudo yum install epel-release -y 安装必要的开发工具和依赖包:
sudo yum install -y gcc make rpm-build openssl-devel lzo-devel pam-devel 安装防火墙管理工具并配置防火墙规则,允许VPN流量通过:
sudo firewall-cmd --permanent --add-service=openvpn
sudo firewall-cmd --permanent --add-port=1194/udp
sudo firewall-cmd --reload 安装OpenVPN与EasyRSA
OpenVPN的安装可以通过编译源码或使用预编译包完成,推荐使用官方源码安装以获得最新版本,首先下载OpenVPN源码:
wget https://swupdate.openvpn.net/community/releases/openvpn-2.5.7.tar.gz
tar xzf openvpn-2.5.7.tar.gz
cd openvpn-2.5.7
./configure --prefix=/usr/local --sysconfdir=/etc/openvpn
make && make install 安装EasyRSA用于管理证书:
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
tar xzf EasyRSA-3.0.8.tgz
sudo mv EasyRSA-3.0.8 /etc/openvpn/easy-rsa 配置证书颁发机构
切换到证书目录并初始化PKI:
cd /etc/openvpn/easy-rsa
./easyrsa init-pki
./easyrsa build-ca nopass 创建服务器证书和私钥:
./easyrsa gen-req server nopass
./easyrsa sign-req server server 生成Diffie-Hellman参数:
./easyrsa gen-dh 生成HMAC密钥:

openvpn --genkey --secret pki/ta.key 将生成的证书文件复制到OpenVPN配置目录:
sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem pki/ta.key /etc/openvpn/ 创建服务器配置文件
在/etc/openvpn目录下创建server.conf配置文件:
sudo nano /etc/openvpn/server.conf 添加以下基本配置:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
tls-crypt ta.key
cipher AES-256-CBC
auth SHA256
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1 保存文件后,启动OpenVPN服务并设置为开机自启:
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server 配置客户端证书
为每个客户端生成单独的证书,首先创建客户端证书请求:
cd /etc/openvpn/easy-rsa
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1 将客户端证书复制到客户端配置目录:
sudo mkdir -p /etc/openvpn/clients/client1
sudo cp pki/issued/client1.crt pki/private/client1.key /etc/openvpn/clients/client1/ 创建客户端配置文件
为客户端创建一个基础配置文件模板:
sudo nano /etc/openvpn/clients/client1/client.ovpn 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
auth SHA256
tls-crypt ta.key
key-direction 1
comp-lzo no
verb 3
<ca>
-----BEGIN CERTIFICATE-----
[粘贴ca.crt内容]
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
[粘贴client1.crt内容]
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
[粘贴client1.key内容]
-----END PRIVATE KEY-----
</key> 将生成的client.ovpn文件安全地传输给客户端。
启用IP转发与NAT
编辑sysctl.conf文件启用IP转发:

sudo nano /etc/sysctl.conf 取消注释或添加以下行:
net.ipv4.ip_forward = 1 应用更改:
sudo sysctl -p 配置iptables规则实现NAT:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo yum install -y iptables-services
sudo systemctl save iptables 相关问答FAQs
问题1:如何检查OpenVPN服务是否正常运行?
解答:可以使用以下命令检查服务状态:
sudo systemctl status openvpn@server 同时查看日志文件排查问题:
sudo tail -f /var/log/messages | grep openvpn 问题2:客户端连接后无法访问互联网怎么办?
解答:首先检查服务器端的iptables规则是否正确配置,确保NAT规则已生效,其次验证客户端配置文件中的DNS设置是否正确,可以尝试使用公共DNS服务器如8.8.8.8,最后检查服务器的防火墙是否放行了VPN流量。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复