在 CentOS 系统中部署 OpenVPN 服务,从零开始搭建安全远程访问通道
作为一名网络工程师,我经常被客户或团队成员问到:“如何在 CentOS 服务器上搭建一个安全、稳定的 VPN?”尤其是在远程办公普及的今天,企业对私有网络接入的需求日益增长,OpenVPN 是一个开源、跨平台、功能强大的虚拟专用网络(VPN)解决方案,特别适合在 CentOS 这类稳定的企业级 Linux 发行版上部署。
本文将详细介绍如何在 CentOS 7 或 CentOS 8(以 CentOS Stream 为例)系统中安装和配置 OpenVPN 服务,包括证书生成、服务端配置、客户端分发以及防火墙设置等关键步骤,整个过程不依赖第三方软件包管理器(如 EPEL),而是使用系统原生工具,确保兼容性和安全性。
第一步:准备工作
确保你有一台 CentOS 主机(建议最小化安装),并拥有 root 权限,执行以下命令更新系统:
sudo yum update -y
然后安装必要工具:
sudo yum install -y openssl openssl-devel lzo-devel pam-devel easy-rsa
注意:easy-rsa 是用于生成 PKI(公钥基础设施)证书的工具,是 OpenVPN 必不可少的组件。
第二步:安装 OpenVPN 服务
使用官方仓库安装 OpenVPN:
sudo yum install -y openvpn
如果需要更稳定版本,可从源码编译安装,但通常官方仓库版本已足够满足大多数场景。
第三步:配置证书系统(PKI)
进入 /usr/share/easy-rsa/ 目录(若不存在则创建):
cd /etc/openvpn/ mkdir pki cp -r /usr/share/easy-rsa/* .
编辑 vars 文件,设置国家、组织等信息(:
export KEY_COUNTRY="CN" export KEY_PROVINCE="Beijing" export KEY_CITY="Beijing" export KEY_ORG="MyCompany" export KEY_EMAIL="admin@mycompany.com" export KEY_CN=server export KEY_NAME=server export KEY_OU=OpenVPN
初始化 PKI 并生成 CA 证书:
./clean-all ./build-ca
这会生成 ca.crt 和 ca.key。
接着生成服务器证书和密钥:
./build-key-server server
生成客户端证书(每个用户一张):
./build-key client1
生成 Diffie-Hellman 密钥交换参数(提升安全性):
./build-dh
第四步:配置 OpenVPN 服务端
复制模板配置文件:
cp /usr/share/doc/openvpn-*/sample-config-files/server.conf /etc/openvpn/
编辑 /etc/openvpn/server.conf,主要修改项如下:
port 1194:指定监听端口(可改为其他)proto udp:推荐使用 UDP 协议(性能更高)dev tun:使用 TUN 模式(三层隧道)ca ca.crtcert server.crtkey server.keydh dh.pemserver 10.8.0.0 255.255.255.0:分配给客户端的 IP 段push "redirect-gateway def1 bypass-dhcp":让客户端流量通过服务器转发(实现内网访问)push "dhcp-option DNS 8.8.8.8":推送 DNS 服务器user nobodygroup nobodypersist-keypersist-tun
第五步:启动并启用服务
systemctl enable openvpn@server systemctl start openvpn@server
第六步:防火墙配置(重要!)
CentOS 默认使用 firewalld,需开放 UDP 1194 端口:
firewall-cmd --add-port=1194/udp --permanent firewall-cmd --reload
第七步:客户端配置与分发 保存为客户端配置文件(如 client1.ovpn):
client
dev tun
proto udp
remote your-server-ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
auth-user-pass
将 ca.crt、client1.crt、client1.key、ta.key(需用 openvpn --genkey --secret ta.key 生成)一起打包发送给客户端用户。
客户端使用 OpenVPN GUI(Windows)或 openvpn 命令行(Linux/macOS)连接即可。
在 CentOS 上部署 OpenVPN 是一项经典且实用的网络技能,通过以上步骤,你可以快速搭建一个企业级的、加密安全的远程访问通道,后续可结合 Fail2Ban 防暴力破解、日志监控(rsyslog)、多用户隔离等增强功能,使你的 VPN 更加健壮,作为网络工程师,掌握此类基础架构能力,是你构建可靠网络环境的重要一环。




