1.
环境与基础配置示例
• 服务器型号与规格:香港节点 Ubuntu 20.04,4 vCPU,8GB RAM,160GB NVMe,公网带宽 100Mbps(峰值),延迟 40ms。
• VPN 软件:WireGuard 主节点 wg0,MTU=1420,PersistentKeepalive=25s;备用 OpenVPN tcp/1194。
• 网络与转发:sysctl -w net.ipv4.ip_forward=1;iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE。
• 测量数据:内网互通吞吐 200Mbps,公网出口稳定 90Mbps,丢包率 0.2%,平均 RTT 45ms。
• 日志与监控:安装 node_exporter + Prometheus,Grafana 面板,关键告警:CPU>75% 5min、conntrack>200k。
2.
常见故障类型与排查步骤
• 无法连通:检查服务状态 systemctl status wg-quick@wg0 或 openvpn;查看端口 ss -tunelp | grep 51820。
• NAT/转发问题:确认 ip_forward 与 iptables NAT 规则存在,tcpdump -i eth0 udp port 51820 抓包验证。
• 性能瓶颈:用 top/htop、iotop、iftop 定位 CPU、磁盘I/O、网口带宽瓶颈;示例:iowait 高达 25% 导致丢包。
• 连接频繁重建:检查 MTU 导致的分片,试调 mtu=1400;查看内核日志 dmesg /var/log/syslog。
• DDoS 攻击:流量突增到 800Mbps 时应触发上游防护或黑洞,使用云厂商流量清洗或 Cloudflare Spectrum。
3.
稳定性提升具体措施
• 内核与网络调参:net.core.somaxconn=1024、net.netfilter.nf_conntrack_max=262144、tcp_tw_reuse=1。
• conntrack 与防火墙优化:增加 nf_conntrack_max 至 300k,使用 iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT。
• 流量整形与限速:tc qdisc add dev eth0 root tbf rate 50mbit burst 32k latency 400ms,用于防止突发占满链路。
• 服务高可用:主备 VPN 节点 + keepalive 脚本,使用虚拟IP或云厂商浮动IP做切换。
• 监控与告警自动化:Prometheus 报警规则 CPU/conntrack/iface throughput,出现阈值自动触发运维脚本。
4.
真实案例:夜间备份导致VPN中断的排查与解决
• 背景:客户香港 VPS 每夜 02:00 进行全量 rsync 备份,VPN 客户端间歇性断线。
• 排查:查看 syslog、iotop,发现备份时磁盘 I/O 打满,iowait 上升到 40%,导致 wireguard 包处理延迟。
• 解决:对备份任务加 ionice 与 rsync --bwlimit=5000(单位 KB/s),并对 eth0 做流量整形 tc,限制备份流量至 5Mbps。
• 结果:RTO 从 30s 降到 <5s,VPN 丢包率降至 0.05%,用户体验恢复稳定。
• 学到的教训:资源密集型任务应做限流与隔离,关键服务需优先级保障。
5.
防护与高可用建议(含表格数据对比)
• CDN 与清洗服务:建议使用 Cloudflare Spectrum 或阿里云/腾讯云高防包做 TCP 层清洗。
• 多点部署:在香港、新加坡设立备用节点,采用 DNS 轮询或 Anycast 提升可用性。
• 自动伸缩:在流量突增时自动扩容 VPN 节点并加入负载均衡。
• 日常运维清单:定期检查 conntrack、内核更新、备份策略、证书有效期。
• 成本-性能对比表(示例):
| 节点 | 规格 | 带宽峰值 | 平均延迟 |
| HK-1 | 4vCPU/8GB/160GB | 100Mbps | 40ms |
| SG-1 | 2vCPU/4GB/80GB | 50Mbps | 60ms |
| HK-HA(备) | 4vCPU/16GB/200GB | 200Mbps | 42ms |
来源:运维视角分享香港云服务器架设vpn 的故障排查与稳定性提升技巧