在当今远程办公与分布式团队日益普及的背景下,构建一个稳定、安全且易于管理的虚拟私人网络(VPN)服务成为许多企业与个人用户的刚需,Linux因其开源、灵活和高度可定制的特性,成为部署VPN服务器的理想平台,本文将详细介绍如何在Linux系统上使用OpenVPN搭建一个功能完备的VPN服务器,适用于远程访问内网资源、保护数据传输安全等场景。

确保你拥有一个运行Linux的服务器(推荐Ubuntu或CentOS),并具备root权限或sudo权限,我们以Ubuntu 22.04为例进行演示。

第一步:安装OpenVPN及相关工具
通过包管理器安装OpenVPN和Easy-RSA(用于证书生成):

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

第二步:配置证书颁发机构(CA)
Easy-RSA提供了一套完整的PKI(公钥基础设施)工具链,初始化证书目录:

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

编辑vars文件,设置国家、组织名等信息(如C=CN, O=MyCompany),然后执行以下命令生成CA密钥对:

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

此步骤会生成ca.crtca.key,是后续所有客户端和服务端证书的基础。

第三步:生成服务器证书和密钥

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

这会生成server.crtserver.key,需复制到OpenVPN配置目录。

第四步:生成Diffie-Hellman参数和TLS密钥
为增强加密强度,生成DH参数(耗时较长,建议提前完成):

./easyrsa gen-dh
openvpn --genkey --secret ta.key

第五步:配置OpenVPN服务
创建主配置文件 /etc/openvpn/server.conf如下:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
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 openvpn-status.log
verb 3

此配置启用UDP协议、TUN模式、自动分配IP地址段(10.8.0.0/24),并推送DNS和路由策略,使客户端流量通过VPN隧道转发。

第六步:启用IP转发与防火墙规则
编辑 /etc/sysctl.conf,取消注释:

net.ipv4.ip_forward=1

应用更改:sysctl -p

配置iptables规则,允许NAT转发:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -p udp --dport 1194 -j ACCEPT

若使用UFW,可用ufw allow 1194/udp简化操作。

第七步:启动并测试服务

systemctl enable openvpn@server
systemctl start openvpn@server

服务器已就绪,为客户端生成证书:

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

ca.crtclient1.crtclient1.keyta.key打包发送给客户端,并配置OpenVPN客户端连接参数。

至此,一个基于Linux的OpenVPN服务器已成功部署,支持多用户接入、强加密通信和透明内网访问,相比商业方案,该方法成本低、可控性强,特别适合技术团队自主运维,后续还可结合Fail2Ban防止暴力破解、日志监控提升安全性,真正实现“自己的网络,自己做主”。

Linux搭建高效安全的VPN服务器,从零开始配置OpenVPN服务详解  第1张

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