手把手教你用CentOS搭建OpenVPN服务:一键脚本实现安全远程访问

在当前远程办公和跨地域协作日益普及的背景下,企业或个人用户对安全、稳定的虚拟专用网络(VPN)需求激增,CentOS作为一款稳定、可靠的Linux发行版,常被用于服务器部署,而OpenVPN是一款开源且功能强大的SSL/TLS协议实现,支持多种认证方式和加密算法,非常适合在CentOS上搭建企业级或个人级的VPN服务。

本文将详细介绍如何通过一个自动化脚本,在CentOS 7/8系统中快速搭建OpenVPN服务,并配置客户端连接,全程无需复杂手动操作,适合新手入门和运维人员快速部署。

确保你的CentOS服务器满足以下条件:

  • 公网IP地址(必须)
  • CentOS 7或8操作系统(推荐使用最小化安装)
  • root权限或sudo权限
  • 网络防火墙开放UDP端口1194(OpenVPN默认端口)

我们编写一个自动化脚本(以bash为例),该脚本将完成以下任务:

  1. 更新系统软件包;
  2. 安装EPEL源和OpenVPN依赖;
  3. 下载并运行OpenVPN Easy-RSA脚本生成证书;
  4. 配置OpenVPN服务文件;
  5. 启动服务并设置开机自启;
  6. 生成客户端配置文件(供Windows、macOS、Android等设备使用);

以下是核心脚本内容(保存为setup-openvpn.sh):

echo "正在更新系统..."
yum update -y
echo "安装必要工具..."
yum install -y epel-release wget unzip iptables-services net-tools
echo "安装OpenVPN..."
yum install -y openvpn easy-rsa
# 设置Easy-RSA目录
make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
# 编辑vars文件(可选,若需自定义CA信息)
sed -i 's/^set_var EASYRSA_KEY_SIZE.*/set_var EASYRSA_KEY_SIZE 2048/' vars
# 构建CA证书
./easyrsa init-pki
./easyrsa build-ca nopass
# 生成服务器证书和密钥
./easyrsa gen-req server nopass
./easyrsa sign-req server server
# 生成Diffie-Hellman参数
./easyrsa gen-dh
# 生成TLS密钥(用于增强安全性)
openvpn --genkey --secret ta.key
# 复制证书到OpenVPN配置目录
cp pki/ca.crt pki/private/server.key pki/issued/server.crt pki/dh.pem ta.key /etc/openvpn/
# 创建OpenVPN服务配置文件
cat > /etc/openvpn/server.conf <<EOF
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
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
tls-auth ta.key 0
cipher AES-256-CBC
auth SHA256
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
EOF
# 启用IP转发
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
# 配置iptables规则(允许流量转发)
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save
# 启动OpenVPN服务
systemctl enable openvpn@server
systemctl start openvpn@server
echo "✅ OpenVPN服务已成功启动!"
echo "👉 请使用以下命令生成客户端配置文件:"
echo "cd /etc/openvpn/easy-rsa && ./easyrsa gen-req client1 nopass"
echo "然后执行 ./easyrsa sign-req client client1"
echo "最后将client1.crt、client1.key、ca.crt、ta.key打包成.ovpn文件即可使用!"

执行脚本只需三步:

  1. 将脚本保存为setup-openvpn.sh
  2. 赋予执行权限:chmod +x setup-openvpn.sh
  3. 运行:./setup-openvpn.sh

完成后,你将获得一个完整的OpenVPN服务器,支持多设备连接,如需进一步优化(如NAT穿透、域名绑定、日志监控),可结合fail2ban、nginx反向代理等工具扩展。

此脚本极大简化了OpenVPN部署流程,是网络工程师日常运维的实用利器,建议在生产环境中配合证书管理、日志审计和定期更新策略使用,确保长期安全稳定运行。

!bin/bash  第1张

VPN加速器|半仙VPN加速器-免费VPN梯子首选半仙VPN