Little Snitch が vpn.btguard.com から openvpn への着信接続を拒否したのはなぜですか?

Little Snitch が vpn.btguard.com から openvpn への着信接続を拒否したのはなぜですか?

私は BTGuard VPN を使用していますが、突然 Little Snitch から接続拒否のポップアップが表示されました。LS のエントリのメモは次のとおりです。

2019 年 5 月 29 日、vpn.btguard.com は openvpn への着信接続を確立しようとしました。この種の接続は遅延できないため、要求は自動的に拒否されました。

答え1

これはおそらく、前回接続したときに残ったパケットのようなものです。たとえば、OpenVPN クライアントは再起動しましたが、サーバーは前回のセッションで引き続きデータを送信しようとしました。

OpenVPN(デフォルトおよびBTGuardの設定)はUDP上で実行されます。UDPはステートレスなトランスポートプロトコルであり、いいえ明示的な「接続の確立」または「切断」パケット、シーケンス番号なし、ポート番号のペア以外は何もありません。

  • TCPでは、ホストとファイアウォールはSYN(ハンドシェイク)パケットを見るとすぐに接続の追跡を開始します。しかしUDPでは、接続パケットは存在せず(データパケットのみ)、ファイアウォールはSYNパケットが受信された後に「接続」の追跡を開始します。どれでも彼らが見るパケット。

  • TCP では、ホストとファイアウォールは FIN (切断) パケットを検出するとすぐに接続を忘れます。しかし、UDP では、いかなる種類の「切断」パケットも存在しないため、ファイアウォールはタイムアウトを使用して古い「接続」を期限切れにする必要があります (たとえば、60 秒、180 秒、10 分などのアイドル状態になると、エントリが削除されます)。

  • もちろん、OpenVPN などのプログラムには、アプリケーション層プロトコルに「接続」/「切断」コマンドが含まれている場合がありますが、ファイアウォールはそれについて何も知らず、内部にデータがある UDP のみを認識します。

そのため、次のようなことが時々起こります。

  1. OpenVPN が再起動/終了し、ファイアウォールが古いプロセスに関連付けられたすべてのエントリを忘れるか、VPN 接続が長時間アイドル状態になり、有効期限に達したためにファイアウォールがそれを忘れます。

  2. ただし、BTGuard サーバーは OpenVPN の「切断」パケットを受信して​​おらず、タイムアウトにより接続を忘れてもいないため、古いセッションを介してデータを送信しようとします。

  3. ファイアウォールは着信パケットを確認し、知る由もないそれが新しい「接続」なのか、それとも以前に確立されたものに属するものなのか。(また、それが元々外向きに確立されたものなのか、内向きに確立されたものなのかを知る方法もありません。)

    ファイアウォールはこのポート ペアを記憶していないため (パート 1 で忘れたため)、新しいものであると想定します。また、着信パケットであるため、ファイアウォールは「着信接続」に関する警告を表示します。

それは推測ですが、妥当な推測です。

関連情報