编辑vars文件,设置国家、组织等信息(如C=CN,ST=Beijing,O=MyOrg)
Ubuntu系统搭建高效安全的VPN服务完整指南(支持OpenVPN与WireGuard)
在当今远程办公、跨地域访问和隐私保护需求日益增长的背景下,搭建一个稳定可靠的个人或企业级VPN服务已成为网络工程师的必备技能,Ubuntu作为最受欢迎的Linux发行版之一,因其开源特性、强大的社区支持以及丰富的软件包管理能力,成为部署VPN服务的理想平台,本文将详细介绍如何在Ubuntu服务器上搭建两种主流的VPN协议:OpenVPN与WireGuard,帮助你快速构建一个安全、高效且易于维护的私有网络通道。
前期准备
-
硬件与操作系统要求
确保你有一台运行Ubuntu 20.04 LTS或更高版本的服务器(物理机、云主机均可),推荐配置:至少2GB内存,1核CPU,50GB磁盘空间,若用于多用户并发连接,建议升级至4GB内存以上。 -
获取公网IP与域名(可选但推荐)
若你使用的是家庭宽带,需确认是否分配了静态公网IP,否则,可通过DDNS服务(如No-IP、DynDNS)绑定动态域名,便于后续客户端连接时无需记忆IP地址。 -
更新系统并安装必要工具
sudo apt update && sudo apt upgrade -y sudo apt install -y ufw iptables net-tools wget curl
方案一:使用OpenVPN搭建传统可靠型VPN
OpenVPN是业界广泛使用的开源SSL/TLS加密协议,兼容性强,适合对稳定性要求高的场景。
-
安装OpenVPN及相关工具
sudo apt install -y openvpn easy-rsa
-
配置证书颁发机构(CA)
make-cadir /etc/openvpn/easy-rsa cd /etc/openvpn/easy-rsa sudo cp vars.example varssudo ./easyrsa init-pki sudo ./easyrsa build-ca nopass # 不需要密码的CA证书 sudo ./easyrsa gen-req server nopass sudo ./easyrsa sign-req server server sudo ./easyrsa gen-dh
-
启用IP转发与防火墙规则
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p sudo ufw allow OpenSSH sudo ufw allow 1194/udp
-
创建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 openvpn-status.log verb 3 -
启动服务并设置开机自启
sudo systemctl enable openvpn@server sudo systemctl start openvpn@server
方案二:使用WireGuard实现高性能轻量级VPN
WireGuard是新一代现代加密隧道协议,以极简代码、高吞吐量和低延迟著称,适合移动设备和高速网络场景。
-
安装WireGuard
sudo apt install -y wireguard
-
生成密钥对
wg genkey | sudo tee /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
-
创建配置文件
/etc/wireguard/wg0.conf[Interface] Address = 10.0.0.1/24 ListenPort = 51820 PrivateKey = <你的私钥>
[Peer] PublicKey = <客户端公钥> AllowedIPs = 10.0.0.2/32
4. 启用内核模块与服务
```bash
sudo modprobe wireguard
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
- 客户端配置(示例为Windows客户端)
下载WireGuard客户端后,创建配置文件,填入服务器IP、端口、公钥及客户端私钥即可连接。
总结与建议
- OpenVPN适合已有基础、追求兼容性和长期稳定的用户,尤其适合老旧设备或企业环境。
- WireGuard更适合现代网络、追求性能和简洁性的用户,尤其适合移动终端和IoT设备。
- 建议定期备份证书、更新固件,并结合fail2ban防止暴力破解攻击。
- 若用于生产环境,务必启用日志监控(如rsyslog)和定期审计策略。
通过本文步骤,你可以在Ubuntu上快速搭建出符合安全规范的个人或小型团队级VPN服务,掌握这两种技术,不仅提升你的网络架构能力,也为未来拓展零信任网络(ZTNA)打下坚实基础。




