Linux系統中,OpenVPN是一款性能良好的開源VPN,因而受到廣泛的使用,不過最近有許多用戶發現OpenVPN服務多次異常退出,這個問題該怎麼解決呢?今天小編就教大家如何解決這個問題。
問題原因分析:
1. openvpn 服務器(虛擬機)的 內存不夠了 因為只有 2G 內存
2. I/O過高,因為日志開啟了 DEBUG 的原因,大量寫日志操作,
3. 打開文件描述符不夠,系統默認 1024
4. 有人惡意攻擊openvpn 服務
根據猜測的4點,開始應對:
1. 首選把openpvn服務器(虛擬機)內存調整到了4G,重啟後發現openvpn 服務在啟動後的 幾分鐘還是異常掉,
2. 把日志調整為 error ,openvpn 在啟動後 幾分鐘還是異常退出了。查看日志發現是
Feb 18 17:17:42 localhost openvpn[1219]: qn_anqiu/xxx.xxx.xxx.xx:27351 CRL: cannot read: /usr/local/cine/etc/keys/crl.pem: Too many open files (errno=24)
3. 有上面的錯誤日志提示,說明猜想的 第三點是對的。 執行命令:
shell $》 ulimit -SHn 65535
在啟動 openvpn 進程後,正常了沒有再次退出了。
4. 查看日志 發現有一個 IP 每分鐘都在非正常請求 openvpn 服務器,直接在 iptables 過濾掉此IP
Feb 16 13:06:16 localhost openvpn[1219]: 58.244.191.51:47374 WARNING: Bad encapsulated packet length from peer (18245), which must be 》 0 and 《 = 1544 -- please ensure that --tun-mtu or --link-mtu is equal on both peers -- this condition could also indicate a possible active attack on the TCP link -- [Attemping restart.。。]
Feb 16 13:07:21 localhost openvpn[1219]: 58.244.191.51:6043 WARNING: Bad encapsulated packet length from peer (18245), which must be 》 0 and 《 = 1544 -- please ensure that --tun-mtu or --link-mtu is equal on both peers -- this condition could also indicate a possible active attack on the TCP link -- [Attemping restart.。。]
經過上面的修改,經過兩天後 openvpn 還是異常掉了一次,經過查看日志還是老問題:
Feb 18 17:17:42 localhost openvpn[1219]: qn_anqiu/xxx.xxx.xxx.xx:27351 CRL: cannot read: /usr/local/cine/etc/keys/crl.pem: Too many open files (errno=24)
就算打開文件描述符進程也不應該掉啊,這說明是openvpn 的 BUG, crl.pem 該文件裡存的是注銷的證書,如果是注銷的證書驗證是不能通過,openvpn服務就會拒絕連接,我目前有 800多個客戶端來連接,難道是每個連接都要請求該文件沒有釋放嗎?就算沒有釋放65535 個文件描述符還是不夠麼?
為了解決問題只好修改配置文件把這個驗證注銷證書的參數去掉,在重啟 openvpn 進程,就正常了再也沒有出現過問題。具體如何產生還需要進一步觀察和研究。
這就是解決OpenVPN服務出現多次異常退出的方法了,有遇到這種問題的用戶,不妨試試小編的這種解決方法吧。