自建VPN全指南:从协议选择到安全部署的技术路线
一、协议选型:性能与安全的权衡
自建VPN的第一步是选择合适的隧道协议。当前主流方案包括WireGuard、OpenVPN和IPsec/IKEv2,三者在性能、安全性和易用性上各有侧重。
1.1 WireGuard:现代轻量级方案
WireGuard采用最新的密码学原语(Curve25519、ChaCha20、Poly1305),内核级实现使其在吞吐量和延迟上表现优异。其代码量仅约4000行,远低于OpenVPN的数十万行,攻击面显著缩小。配置采用简单的密钥对认证,无需证书管理,适合追求高性能和低维护成本的场景。
1.2 OpenVPN:成熟稳定的选择
OpenVPN基于TLS/SSL加密,支持TCP/UDP双模式,具备完善的证书体系(PKI)和丰富的认证方式(用户名密码、证书、双因素)。其灵活性极高,可通过配置文件精细控制路由、DNS、压缩等参数。但性能相对WireGuard有差距,且配置复杂度较高。
1.3 IPsec/IKEv2:原生支持与移动友好
IPsec/IKEv2在iOS和macOS上拥有原生客户端支持,无需安装第三方应用。IKEv2使用MOBIKE协议,能在网络切换(如WiFi到蜂窝)时保持连接不中断,非常适合移动设备。但其配置通常依赖strongSwan等工具,且NAT穿透能力较弱。
二、服务器端部署实战
2.1 环境准备
选择一台云服务器(推荐2核2GB以上配置),操作系统建议Ubuntu 22.04 LTS或Debian 12。确保防火墙放行对应端口:WireGuard使用UDP 51820,OpenVPN使用UDP 1194,IPsec使用UDP 500和4500。
2.2 WireGuard快速部署
# 安装WireGuard
sudo apt update && sudo apt install wireguard -y
# 生成密钥对
wg genkey | tee privatekey | wg pubkey > publickey
# 创建配置文件 /etc/wireguard/wg0.conf
配置文件需指定私钥、监听端口、以及客户端的公钥和允许IP段。启动服务后通过wg show验证状态。
2.3 OpenVPN部署(使用easy-rsa)
安装OpenVPN和easy-rsa,初始化PKI,生成CA、服务器证书和客户端证书。配置server.conf指定加密参数(推荐AES-256-GCM)、DH参数和路由规则。启动服务后,客户端需导入CA证书、客户端证书和私钥。
三、安全加固与性能优化
3.1 加密与认证强化
- 禁用不安全的密码套件(如OpenVPN中的BF-CBC)
- 启用前向安全性(Perfect Forward Secrecy)
- 使用ED25519或RSA 4096位证书
- 限制客户端连接数,防止资源耗尽
3.2 防火墙与访问控制
- 仅允许特定源IP连接VPN端口
- 配置iptables规则,仅转发VPN子网流量
- 启用fail2ban防止暴力破解
- 定期轮换密钥和证书
3.3 性能调优
- 启用TCP BBR拥塞控制算法
- 调整MTU值(WireGuard推荐1420,OpenVPN推荐1500)
- 使用多线程或负载均衡提升并发能力
- 监控带宽和延迟,及时扩容
四、客户端配置与测试
客户端配置因协议而异。WireGuard客户端只需导入配置文件(含私钥、端点、公钥);OpenVPN客户端需导入.ovpn文件;IPsec/IKEv2在iOS/Android上可通过描述文件或strongSwan客户端配置。
部署完成后,使用ping和traceroute测试连通性,通过iperf3测试带宽,并检查DNS泄漏和IP泄漏。建议启用Kill Switch功能,防止VPN断开时数据泄露。