在当今远程办公和跨地域协作日益普遍的背景下,构建一个稳定、安全且易于管理的虚拟私人网络(VPN)服务器变得尤为重要,对于具备一定Linux基础的网络工程师而言,使用开源工具在Linux系统上搭建VPN服务器不仅成本低廉,而且灵活性高、安全性强,本文将详细介绍如何在Ubuntu或CentOS等主流Linux发行版中,基于OpenVPN搭建一套完整的本地化VPN服务。

准备工作必不可少,你需要一台运行Linux的服务器(物理机或云主机均可),确保其拥有公网IP地址,并开放UDP端口(默认1194),建议选择支持IPv4和IPv6双栈的服务器,以增强兼容性,确保防火墙配置正确——在Ubuntu中使用ufw命令开启端口,或在CentOS中配置firewalld规则。

接下来安装OpenVPN软件包,以Ubuntu为例,执行以下命令:

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

安装完成后,需生成证书颁发机构(CA)、服务器证书和客户端证书,进入/etc/openvpn/easy-rsa目录,运行:

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

编辑vars文件,设置国家、组织名等信息,然后执行:

./clean-all
./build-ca
./build-key-server server
./build-key client1  # 可为多个客户端创建不同证书
./build-dh

配置服务器端文件,复制模板到配置目录:

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
gunzip /etc/openvpn/server.conf.gz

修改关键参数,如:

  • port 1194:指定监听端口;
  • proto udp:推荐使用UDP协议提升性能;
  • dev tun:使用隧道模式;
  • ca, cert, key, dh路径指向刚才生成的证书文件;
  • server 10.8.0.0 255.255.255.0:分配给客户端的IP网段;
  • push "redirect-gateway def1":强制客户端流量走VPN;
  • push "dhcp-option DNS 8.8.8.8":推送DNS服务器。

启用IP转发功能,让服务器能作为网关转发数据包:

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

最后配置iptables规则,实现NAT和流量转发:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -j ACCEPT

若使用systemd,还需启动OpenVPN服务:

systemctl enable openvpn@server
systemctl start openvpn@server

至此,服务器已成功部署,客户端可通过OpenVPN GUI或命令行连接,导入生成的.ovpn配置文件即可接入内网资源,整个过程兼顾安全性(证书认证+加密传输)与实用性(自动DHCP、路由控制),非常适合中小型企业或个人开发者用于远程访问私有网络环境,后续可根据需求扩展至WireGuard或结合Fail2ban加强防护,进一步优化运维体验。

Linux环境下搭建高效安全的VPN服务器完整指南  第1张

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