web-dev-qa-db-ja.com

VPNサーバー/クライアントは、自分自身を介して独自のリモート接続パケットをルーティングすることをどのように回避しますか?

私は、TUNインターフェースを使用するLinuxVPNの内部でネットワークがどのように機能するかを概念化しようとしています。

私の現在の最良の推測は次のとおりです(私を訂正してください):

  1. リモートクライアント/サーバーへの接続が確立されました。
  2. TUNインターフェースが作成され、起動されました
  3. TUNインターフェースへのデフォルトゲートウェイを設定するためにルーティングテーブルが更新されました

しかし、リモートクライアント/サーバー宛てのパケットは最終的にTUNインターフェイスに入り、ある種のループを形成するのではないでしょうか。 VPNシステムはこれをどのように解決しますか?私の理解のギャップは何ですか?

5

純粋に宛先ベースのルーティングでは、トンネルを介して到達する宛先がトンネルの確立などに必要なルーティングと重複する場合、これが問題になることは正しいです。

私が通常これを行っているのを見て、さまざまなルーターで自分で行っている方法は、ポリシールーティングを使用することです。

  • VPNエンドポイントとして機能するルーターは、ISPリンクを介してインターネットを指すデフォルトルートを維持します
  • また、ソースベースのルールを使用したポリシールートがあり、その背後にあるサブネットからのトラフィックは、宛先に関係なく、トンネルを介して送信する必要があります。
4
Jeremy Gibbons

1つの物理アダプターenp2s0を備えたシステムを想像してみてください。

すべてのトラフィックがenp2s0から送信されると、ルーティングテーブルが開始される可能性があります。

システムがVPNに接続すると、TUNインターフェイス(tun0)が初期化され、VPNがルーティングテーブルを更新します。ポートXのVPNサーバーアドレス宛てのすべてのトラフィック(VPNサーバーアドレスとポート)はenp2s0から送信されます。他のすべてのトラフィックはtun0を通過します。

もちろん、VPNはすべてのトラフィックをルーティングする必要はありません。たとえば、特定のプライベートサブネットに向かうトラフィックのみがVPNを通過する前に、VPNを設定したので、通常のインターネットトラフィックは変更されません。これを行う方法は、VPNプログラムに基づいて変更されます。

1
Erroneous

宛先ベースのルーティングでは、それも難しくありません。

私が通常目にする方法は、既存のゲートウェイとインターフェース、および距離(実際にはルーティングの優先度)を1に設定してVPNサーバーにルートをロードすることです。VPNのデフォルトルートの距離は常に少なくとも2になります。

1
joshudson