乐闻世界logo
搜索文章和话题

如何在AWS或自托管基础设施上部署和配置VPN服务器?

2月21日 14:07

VPN 服务器部署需要根据使用场景选择合适的平台和配置。以下是主流部署方案的详细指南:

云平台部署

1. AWS(Amazon Web Services)

部署步骤

  1. 创建 EC2 实例(推荐 t3.medium 或更高)
  2. 选择安全组,开放 UDP 1194(OpenVPN)或 51820(WireGuard)
  3. 分配弹性 IP(Elastic IP)
  4. 安装 VPN 软件

OpenVPN 安装示例

bash
# 更新系统 sudo apt update && sudo apt upgrade -y # 安装 OpenVPN sudo apt install openvpn easy-rsa -y # 生成证书和密钥 make-cadir ~/openvpn-ca cd ~/openvpn-ca source vars ./clean-all ./build-ca ./build-key-server server ./build-dh openvpn --genkey --secret keys/ta.key # 配置服务器 sudo cp keys/ca.crt keys/server.crt keys/server.key keys/ta.key keys/dh2048.pem /etc/openvpn/

WireGuard 安装示例

bash
# 添加 WireGuard 仓库 sudo apt install wireguard -y # 生成密钥对 wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey # 配置接口 sudo nano /etc/wireguard/wg0.conf

2. Google Cloud Platform (GCP)

部署步骤

  1. 创建 Compute Engine 实例
  2. 配置防火墙规则(VPC Firewall)
  3. 设置静态外部 IP
  4. 安装和配置 VPN

防火墙配置

bash
gcloud compute firewall-rules create allow-vpn \ --allow udp:1194,tcp:1194,udp:51820 \ --source-ranges 0.0.0.0/0 \ --description "Allow VPN traffic"

3. Azure

部署步骤

  1. 创建虚拟机
  2. 配置网络安全组(NSG)
  3. 设置公共 IP
  4. 部署 VPN 网关或手动安装

自建服务器部署

1. 硬件要求

最低配置

  • CPU:双核 2.0GHz+
  • 内存:2GB RAM
  • 带宽:100Mbps+
  • 存储:20GB SSD

推荐配置

  • CPU:四核 3.0GHz+(支持 AES-NI)
  • 内存:4GB+ RAM
  • 带宽:1Gbps+
  • 存储:50GB NVMe SSD

2. 操作系统选择

Linux 发行版

  • Ubuntu Server:社区支持好,文档丰富
  • Debian:稳定,适合生产环境
  • CentOS/Rocky Linux:企业级支持
  • Alpine Linux:轻量级,资源占用少

3. 网络配置

端口转发(路由器)

shell
OpenVPN: UDP 1194 → 服务器内网 IP WireGuard: UDP 51820 → 服务器内网 IP

防火墙配置(UFW)

bash
sudo ufw allow 1194/udp sudo ufw allow 51820/udp sudo ufw enable

Docker 部署

1. OpenVPN Docker

使用 kylemanna/openvpn

bash
# 拉取镜像 docker pull kylemanna/openvpn # 创建配置目录 mkdir -p ~/openvpn-data cd ~/openvpn-data # 初始化配置 docker run -v $PWD:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://VPN.SERVER.COM # 生成证书 docker run -v $PWD:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki # 启动服务器 docker run -v $PWD:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn

2. WireGuard Docker

使用 linuxserver/wireguard

bash
docker run -d \ --name=wireguard \ --cap-add=NET_ADMIN \ --cap-add=SYS_MODULE \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Asia/Shanghai \ -e SERVERURL=your-domain.com \ -e SERVERPORT=51820 \ -e PEERS=1,2,3 \ -e PEERDNS=auto \ -v /path/to/config:/config \ -p 51820:51820/udp \ linuxserver/wireguard

性能优化

1. 内核参数调优

bash
# 编辑 sysctl.conf sudo nano /etc/sysctl.conf # 添加以下配置 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_congestion_control = bbr # 应用配置 sudo sysctl -p

2. MTU 优化

bash
# 测试最佳 MTU ping -c 4 -M do -s 1472 8.8.8.8 # 在 VPN 配置中设置 MTU # OpenVPN: mtu 1400 # WireGuard: MTU = 1420

3. 加密优化

bash
# 使用 AES-NI 硬件加速 # OpenVPN 配置 cipher AES-256-GCM auth SHA256 ncp-ciphers AES-256-GCM:AES-128-GCM # WireGuard 默认使用 ChaCha20-Poly1305

安全加固

1. 证书管理

bash
# 设置证书有效期 export CA_EXPIRE=3650 export KEY_EXPIRE=3650 # 定期轮换证书 # 每 90-180 天更新一次

2. 访问控制

bash
# 限制管理访问 sudo ufw allow from YOUR_IP to any port 22 sudo ufw deny 22 # 使用密钥认证 # 禁用密码登录

3. 日志监控

bash
# 配置日志轮转 sudo nano /etc/logrotate.d/openvpn

监控和维护

1. 性能监控

bash
# 监控连接数 netstat -an | grep :1194 | wc -l # 监控带宽 iftop -i eth0 # 监控 CPU htop

2. 自动化脚本

bash
# 备份配置 #!/bin/bash DATE=$(date +%Y%m%d) tar -czf /backup/vpn-$DATE.tar.gz /etc/openvpn

故障排除

常见问题

  1. 连接失败:检查防火墙和端口
  2. 速度慢:优化 MTU 和加密设置
  3. DNS 问题:配置正确的 DNS 服务器
  4. 证书错误:检查证书有效期和匹配

调试命令

bash
# OpenVPN 日志 sudo tail -f /var/log/openvpn.log # WireGuard 状态 sudo wg show # 网络诊断 traceroute vpn-server-ip tcpdump -i eth0 port 1194

最佳实践

  1. 定期备份:配置文件和证书
  2. 更新软件:保持系统和 VPN 软件最新
  3. 监控性能:设置告警机制
  4. 文档化:记录配置和变更
  5. 测试恢复:定期测试灾难恢复
  6. 安全审计:定期进行安全评估
标签:VPN