在当今远程办公与网络安全日益重要的背景下,构建一个稳定、安全且易于管理的虚拟私人网络(VPN)已成为企业与个人用户的刚需,OpenVPN是一款开源、跨平台的SSL/TLS协议实现,支持多种加密算法和灵活的配置方式,在Linux系统上部署尤为常见,本文将详细介绍如何在Linux(以Ubuntu 22.04为例)环境下搭建OpenVPN服务端,并提供客户端连接方法,帮助你快速拥有自己的私有网络隧道。

第一步:准备工作
确保你有一台运行Linux的服务器(如VPS或本地物理机),并具备root权限或sudo权限,建议使用静态IP地址,避免因IP变动导致客户端连接失败,你需要提前开放UDP端口(默认1194),可通过防火墙配置命令设置:

ufw allow 1194/udp

第二步:安装OpenVPN及相关工具
更新系统包列表后,执行以下命令安装OpenVPN及Easy-RSA(用于生成证书和密钥):

apt update && apt install -y openvpn easy-rsa

安装完成后,复制Easy-RSA模板到指定目录:

make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa

第三步:配置CA证书与服务器密钥
进入easy-rsa目录后,编辑vars文件,根据需要修改国家、组织名称等信息(例如C=CN, ST=Beijing, O=MyOrg),随后执行初始化脚本:

./easyrsa init-pki
./easyrsa build-ca nopass

接下来生成服务器证书和密钥:

./easyrsa gen-req server nopass
./easyrsa sign-req server server

最后生成Diffie-Hellman参数(提升安全性):

./easyrsa gen-dh

第四步:配置OpenVPN服务端
复制生成的证书文件到OpenVPN配置目录:

cp pki/ca.crt pki/private/server.key pki/dh.pem /etc/openvpn/

创建主配置文件 /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
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
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3

第五步:启用IP转发与NAT规则
为了让客户端访问外网,需开启IP转发并配置iptables规则:

echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

第六步:启动OpenVPN服务
启用开机自启并启动服务:

systemctl enable openvpn@server
systemctl start openvpn@server

第七步:生成客户端证书与配置文件
在服务器端为每个客户端生成独立证书:

./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1

保存为客户端配置文件(如client.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
comp-lzo
verb 3

将该配置文件与客户端证书一并分发给用户即可连接。

通过以上步骤,你已经成功搭建了一个基于Linux的OpenVPN服务,不仅可保障数据传输安全,还具备良好的扩展性与可控性,对于运维人员而言,这是构建私有网络基础设施的重要技能之一。

Linux下搭建OpenVPN服务器,从零开始的完整指南  第1张

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