在 CentOS 系统中部署 OpenVPN 服务,从零开始搭建安全远程访问通道

hyde1011 5 2026-05-12 09:46:57

作为一名网络工程师,我经常被客户或团队成员问到:“如何在 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.crtca.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.crt
  • cert server.crt
  • key server.key
  • dh dh.pem
  • server 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 nobody
  • group nobody
  • persist-key
  • persist-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.crtclient1.crtclient1.keyta.key(需用 openvpn --genkey --secret ta.key 生成)一起打包发送给客户端用户。

客户端使用 OpenVPN GUI(Windows)或 openvpn 命令行(Linux/macOS)连接即可。


在 CentOS 上部署 OpenVPN 是一项经典且实用的网络技能,通过以上步骤,你可以快速搭建一个企业级的、加密安全的远程访问通道,后续可结合 Fail2Ban 防暴力破解、日志监控(rsyslog)、多用户隔离等增强功能,使你的 VPN 更加健壮,作为网络工程师,掌握此类基础架构能力,是你构建可靠网络环境的重要一环。

在 CentOS 系统中部署 OpenVPN 服务,从零开始搭建安全远程访问通道

上一篇:MPLS VPN技术原理与应用实践,构建高效安全的企业网络架构
下一篇:203年VPN技术的演进与安全挑战,从Windows 2003时代看现代虚拟私有网络的根基
相关文章
返回顶部小火箭