Linux系统中,OpenVPN是一款性能良好的开源VPN,因而受到广泛的使用,不过最近有许多用户发现OpenVPN服务多次异常退出,这个问题该怎么解决呢?今天小编就教大家如何解决这个问题。
问题原因分析:
1.openvpn服务器(虚拟机)的内存不够了因为只有2G内存
2.I/O过高,因为日志开启了DEBUG的原因,大量写日志操作,
3.打开文件描述符不够,系统默认1024
4.有人恶意攻击openvpn服务
根据猜测的4点,开始应对:
1.首选把openpvn服务器(虚拟机)内存调整到了4G,重启后发现openvpn服务在启动后的几分钟还是异常掉,
2.把日志调整为error,openvpn在启动后几分钟还是异常退出了。查看日志发现是
Feb1817:17:42localhostopenvpn[1219]:qn_anqiu/xxx.xxx.xxx.xx:27351CRL:cannotread:/usr/local/cine/etc/keys/crl.pem:Toomanyopenfiles(errno=24)
3.有上面的错误日志提示,说明猜想的第三点是对的。执行命令:
shell$》ulimit-SHn65535
在启动openvpn进程后,正常了没有再次退出了。
4.查看日志发现有一个IP每分钟都在非正常请求openvpn服务器,直接在iptables过滤掉此IP
Feb1613:06:16localhostopenvpn[1219]:58.244.191.51:47374WARNING:Badencapsulatedpacketlengthfrompeer(18245),whichmustbe》0and《=1544--pleaseensurethat--tun-mtuor--link-mtuisequalonbothpeers--thisconditioncouldalsoindicateapossibleactiveattackontheTCPlink--[Attempingrestart.。。]
Feb1613:07:21localhostopenvpn[1219]:58.244.191.51:6043WARNING:Badencapsulatedpacketlengthfrompeer(18245),whichmustbe》0and《=1544--pleaseensurethat--tun-mtuor--link-mtuisequalonbothpeers--thisconditioncouldalsoindicateapossibleactiveattackontheTCPlink--[Attempingrestart.。。]
经过上面的修改,经过两天后openvpn还是异常掉了一次,经过查看日志还是老问题:
Feb1817:17:42localhostopenvpn[1219]:qn_anqiu/xxx.xxx.xxx.xx:27351CRL:cannotread:/usr/local/cine/etc/keys/crl.pem:Toomanyopenfiles(errno=24)
就算打开文件描述符进程也不应该掉啊,这说明是openvpn的BUG,crl.pem该文件里存的是注销的证书,如果是注销的证书验证是不能通过,openvpn服务就会拒绝连接,我目前有800多个客户端来连接,难道是每个连接都要请求该文件没有释放吗?就算没有释放65535个文件描述符还是不够么?
为了解决问题只好修改配置文件把这个验证注销证书的参数去掉,在重启openvpn进程,就正常了再也没有出现过问题。具体如何产生还需要进一步观察和研究。
这就是解决OpenVPN服务出现多次异常退出的方法了,有遇到这种问题的用户,不妨试试小编的这种解决方法吧。