随着远程办公、数据加密和网络隐私需求的日益增长,越来越多用户选择在自己的VPS(虚拟专用服务器)上部署私有VPN服务,这不仅提升了网络访问的安全性,还能绕过地理限制、优化跨国访问速度,作为网络工程师,本文将详细介绍如何在Linux系统(以Ubuntu 22.04为例)上搭建一个稳定、安全且易于管理的OpenVPN服务,帮助你快速拥有属于自己的私人网络隧道。

确保你已拥有一台运行Linux的VPS(如DigitalOcean、Linode或阿里云),并具备root权限,登录到服务器后,建议先更新系统包列表:

sudo apt update && sudo apt upgrade -y

接下来安装OpenVPN及相关工具,我们使用openvpn包和easy-rsa来生成证书和密钥:

sudo apt install openvpn easy-rsa -y

安装完成后,复制EasyRSA模板到默认目录:

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

编辑vars文件,设置你的组织信息(如国家、省份、组织名称等),这是生成SSL证书的关键参数,保存后,初始化PKI(公钥基础设施):

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

创建服务器证书和密钥:

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

接着生成客户端证书(可为多个设备生成不同证书):

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

生成Diffie-Hellman参数以增强加密强度:

./easyrsa gen-dh

准备OpenVPN配置文件,创建服务器主配置文件 /etc/openvpn/server.conf如下:

port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/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转发功能,使VPS能充当网关:

echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p

配置iptables规则,允许流量转发并启用NAT:

iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

启动OpenVPN服务并设置开机自启:

systemctl start openvpn@server
systemctl enable openvpn@server

至此,服务器端配置完成,客户端需下载服务器证书、CA证书、客户端密钥(由上述步骤生成),并创建.ovpn配置文件,在Windows或Android上使用OpenVPN Connect应用时,只需导入该文件即可连接。

小贴士:为了提升安全性,建议定期轮换证书、使用强密码保护密钥,并结合fail2ban防止暴力破解尝试,可考虑部署WireGuard替代方案,其性能更优、配置更简洁。

通过以上步骤,你已在Linux VPS上成功搭建了一个企业级级别的OpenVPN服务,既满足个人隐私保护需求,又具备良好的扩展性和稳定性,无论你是远程工作者、开发者还是网络爱好者,这套方案都值得收藏与实践。

在Linux VPS上高效架设VPN服务,从零开始的完整指南  第1张

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