Ubuntu

執行 vpn 伺服器時出現 tun0 錯誤?

  • September 12, 2019

我正在使用這些軟體執行一個簡單的 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 錯誤,您可能還需要調整您的網路設置。

引用自:https://serverfault.com/questions/982166