私は、TUNインターフェースを使用するLinuxVPNの内部でネットワークがどのように機能するかを概念化しようとしています。
私の現在の最良の推測は次のとおりです(私を訂正してください):
しかし、リモートクライアント/サーバー宛てのパケットは最終的にTUNインターフェイスに入り、ある種のループを形成するのではないでしょうか。 VPNシステムはこれをどのように解決しますか?私の理解のギャップは何ですか?
純粋に宛先ベースのルーティングでは、トンネルを介して到達する宛先がトンネルの確立などに必要なルーティングと重複する場合、これが問題になることは正しいです。
私が通常これを行っているのを見て、さまざまなルーターで自分で行っている方法は、ポリシールーティングを使用することです。
1つの物理アダプターenp2s0を備えたシステムを想像してみてください。
すべてのトラフィックがenp2s0から送信されると、ルーティングテーブルが開始される可能性があります。
システムがVPNに接続すると、TUNインターフェイス(tun0)が初期化され、VPNがルーティングテーブルを更新します。ポートXのVPNサーバーアドレス宛てのすべてのトラフィック(VPNサーバーアドレスとポート)はenp2s0から送信されます。他のすべてのトラフィックはtun0を通過します。
もちろん、VPNはすべてのトラフィックをルーティングする必要はありません。たとえば、特定のプライベートサブネットに向かうトラフィックのみがVPNを通過する前に、VPNを設定したので、通常のインターネットトラフィックは変更されません。これを行う方法は、VPNプログラムに基づいて変更されます。
宛先ベースのルーティングでは、それも難しくありません。
私が通常目にする方法は、既存のゲートウェイとインターフェース、および距離(実際にはルーティングの優先度)を1に設定してVPNサーバーにルートをロードすることです。VPNのデフォルトルートの距離は常に少なくとも2になります。