Ubuntu系统下搭建与配置OpenVPN服务的完整指南
作为一名网络工程师,在企业或家庭环境中部署安全可靠的虚拟私人网络(VPN)服务是日常工作中常见且重要的任务,Ubuntu作为一款广泛使用的Linux发行版,因其稳定性、安全性以及丰富的社区支持,成为搭建OpenVPN服务器的理想选择,本文将详细介绍如何在Ubuntu系统上从零开始搭建并配置OpenVPN服务,涵盖安装、证书生成、配置文件设置、防火墙规则调整及客户端连接测试等关键步骤。
确保你有一台运行Ubuntu 20.04或22.04 LTS的服务器(可以是物理机、虚拟机或云服务器),并拥有root权限或sudo权限,我们以Ubuntu 22.04为例进行操作。
第一步:更新系统并安装OpenVPN和Easy-RSA
打开终端,执行以下命令更新软件包列表并安装必要的工具:
sudo apt update sudo apt install openvpn easy-rsa -y
Easy-RSA是一个用于管理SSL/TLS证书和密钥的工具,OpenVPN依赖它来建立安全的加密通信。
第二步:初始化PKI(公钥基础设施)
运行以下命令创建证书颁发机构(CA)和密钥对:
make-cadir /etc/openvpn/easy-rsa cd /etc/openvpn/easy-rsa
编辑 vars 文件(使用nano或vim)以设置你的国家、组织名称等信息,
export KEY_COUNTRY="CN" export KEY_PROVINCE="Beijing" export KEY_CITY="Beijing" export KEY_ORG="MyCompany" export KEY_EMAIL="admin@mycompany.com" export KEY_OU="IT Department"
然后执行以下命令生成CA证书和私钥:
./easyrsa init-pki ./easyrsa build-ca
接下来生成服务器证书和密钥:
./easyrsa gen-req server nopass ./easyrsa sign-req server server
再为客户端生成证书(可重复多次为不同用户生成):
./easyrsa gen-req client1 nopass ./easyrsa sign-req client client1
第三步:配置OpenVPN服务器
复制示例配置文件到 /etc/openvpn/server/ 目录,并根据需要修改:
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/ sudo nano /etc/openvpn/server/server.conf
关键配置项包括:
port 1194:指定监听端口(默认UDP)proto udp:使用UDP协议提高性能dev tun:创建TUN设备(路由模式)ca ca.crt、cert server.crt、key server.key:指向刚生成的证书和私钥dh dh.pem:生成Diffie-Hellman参数(需手动执行./easyrsa gen-dh)
保存后,启用IP转发(让服务器能转发流量):
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf sudo sysctl -p
第四步:配置防火墙(UFW)
如果使用UFW(Ubuntu防火墙),添加规则允许OpenVPN流量:
sudo ufw allow 1194/udp sudo ufw enable
第五步:启动OpenVPN服务
sudo systemctl enable openvpn-server@server sudo systemctl start openvpn-server@server
第六步:客户端配置与连接
将服务器证书(ca.crt)、客户端证书(client1.crt)、私钥(client1.key)打包发送给客户端,在客户端(如Windows、macOS或Android)安装OpenVPN客户端软件,导入配置文件(.ovpn),即可连接。
至此,一个功能完整的OpenVPN服务器已在Ubuntu上成功部署,该方案具备高安全性(基于TLS加密)、灵活性强(支持多用户)、易于扩展(可配合Radius认证)等优点,适用于远程办公、跨地域访问内网资源等多种场景。
通过本文,你可以掌握在Ubuntu环境下构建OpenVPN服务的核心技能,为后续深入学习IPSec、WireGuard或企业级SD-WAN解决方案打下坚实基础,网络工程师不仅要会用工具,更要理解其原理——这才是真正的专业价值所在。

















