这篇文章在 2016 年 08 月 16 日 19:28:49 更新了哦~
自从搭建好 UDP 53 OpenVPN 服务器之后,一直发现一个很奇怪的问题:
- CPU 满载,vpnserver 程序占用接近 100% 的 CPU
- 客户端的 Bytes in 会以 1Mbps 的速度涨流量(服务器出网 1Mbps)
- 重启 vpnserver,情况可能会缓解(大部分情况下是缓解了),也可能不会。
- eth0 的 RX(下载)、TX(上传)存在大量流量,即使我并没使用服务器
我一直以为是 SoftEther VPN Server 设计上的 bug,更新了最新版本的也依旧存在;开始考虑到 OpenVPN 性能问题,好像也没有这么严重的…
直到今天实在忍不了,问了万能的 Google,看了官方论坛的讨论、troubleshooting
最后,在一个歪果仁的博客中找到了这么一句话
DO NOT enable both local bridge and SecureNAT at the same time. Packets will loop infinitly and make your server 100% CPU usage.
同时在官网的 TroubleShooting 中的 11.1.6、11.1.7 得到了 High CPU load 的解释,
3.7.4 也有 Virtual NAT 的使用要点
所以问题就是,丫的别把本地桥和 SecureNAT 一起开启了。 客户端程序的记录里一直以 1Mbps 的带宽涨流量、ifconfig 的网卡有流量计数也同样得到了解释。
删了本地桥就好了。就是这么简单的办法...
原先错误的教程《SoftEther VPN Server 安装手记 + 福利》已经修改了,对某些读者可能造成的困惑或者是损失,深表歉意。
注:本地桥性能上要略好于 SecureNAT
在没找到真正原因之前,我甚至写了个脚本来监测 15 分钟平均负载来重启 vpn 服务,简直啦!不能浪费,贴出来,或许以后会用到呢!
- #!/bin/bash
- #15m average load
- aload=0
- aload=`uptime | awk '{print $11}'`
- echo 15m load is $aload
- if [ `expr 1 \> $aload` -eq 0 ]
- then
- echo !!!!!! >> /home/vpnload.log
- echo `date` high load,restarting now >> /home/vpnload.log
- /root/vpnserver/vpnserver stop >> /home/vpnload.log
- /root/vpnserver/vpnserver start >> /home/vpnload.log
- echo !!!!!! >> /home/vpnload.log
- else
- echo `date` 15m average load is $aload, keep it up
- fi