執行 vpn 伺服器時出現 tun0 錯誤?
我正在使用這些軟體執行一個簡單的 vpn 伺服器:
- 開放式VPN
- 影襪
- MTProto 代理
我的伺服器配置是:
- Ubuntu 18.04 x64
- 512記憶體,1vCPU
- UFW防火牆
- 網路數據監控
- Nginx
距離我開始執行伺服器僅幾天時間。問題是 Netdata 每隔幾個小時就會向我發送這 3 種類型的錯誤。
- “伺服器需要注意,ipv4.udperrors(udp),1m ipv4 udp接收緩衝區錯誤=12個錯誤”
- “伺服器需要注意,net_drops.tun0 (tun0),出站數據包丟棄 = 34 個數據包”
- “伺服器需要注意,net_packets.tun0(tun0),出站丟包率=0.33%”
我認為這沒什麼大不了的,所以我忽略了它們。
我不確定這是防火牆問題、系統瓶頸還是提到的 3 個 vpn 軟體之一性能不佳。
我查看了幾乎每個日誌文件,
/var/log
但在伺服器無法訪問之前我找不到任何錯誤或問題。我不確定伺服器是否凍結或崩潰。因為在某個點之後沒有日誌。直到我們確實強制重啟。
我發現了問題。它與openvpn有關。我看了看,
/var/log/syslog
顯然 openvpn 在與客戶端進行 TLS 握手時遇到了問題。它不斷記錄這些錯誤:TLS key negotiation failed to occur within 60 seconds (check your network connectivity) TLS handshake failed
原因是
reneg-sec
參數的預設值為 3600。這是來自 openvpn 官方文件的引用:–rereg-sec n
在 n 秒後重新協商數據通道密鑰(預設值 = 3600)。使用雙因素身份驗證時,請注意,此預設值可能會導致最終使用者面臨每小時重新授權一次的挑戰。
另外,請記住,此選項可以在客戶端和伺服器上使用,並且使用較低值的那個將是觸發重新協商的那個。一個常見的錯誤是在客戶端或伺服器上將 –reneg-sec 設置為更高的值,而連接的另一端仍使用預設值 3600 秒,這意味著重新協商仍將每 3600 秒發生一次。解決方案是在客戶端和伺服器上增加 –reneg-sec,或者在連接的一側將其設置為 0(禁用),在另一側設置為您選擇的值。
此參數確保客戶端必須每小時重新協商他們的密鑰。
因此,如果您長時間將 openvpn 留在(客戶端)上,並且無論出於何種原因,其中一次握手失敗,這將導致無休止的失敗談判。我猜這導致了丟棄的數據包和東西。
更何況“tun0”介面最初是由openvpn製作的,我不知道。
無論如何,解決方案是將其更改
reneg-sec
為更高的值,或者將其設置為零並禁用它。我決定只使用禁用選項並reneg-sec 0
輸入server.conf
和客戶端.opvn
配置文件。此外,如果您碰巧使用 UFW,則必須編輯
/etc/default/ufw
並更改DEFAULT_FORWARD_POLICY
以接受。如果您仍然不斷收到 udp 錯誤,您可能還需要調整您的網路設置。