1

TUN/TAP インターフェイスを使用して TCP スタックをテストすることは可能ですか? 次のような仕組みを考えています。

  +--------------------------------+
  |   TCP Client / Server          |
  |  socket(AF_INET, SOCK_STREAM)  |
  | e.g. HTTP Server / Client      |
  +----------+---------------------+
             |
             |  +---------------------+
             |  |  TUN Device         |
             |  | ( kernel does TCP ) |
             |  +---------------------+
             |                       
  +------------+----------------------+
  | Linux Kernel + Forwarding Magic   |
  +-----------------------------------+
            |
            | +---------------------+
            | |TAP Device           |
            | |Raw ethernet frames  |
            | +---------------------+
            |
 +----------+----------------------+
 |  Raw  Socket API                |
 | socket(AF_PACKET, SOCK_RAW)     |
 | User mode TCP Stack over raw API|
 | a HTTP client/server over it    |
 +---------------------------------+

一番上のボックスは、(たとえば) 標準の変更されていない HTTP サーバーであり、TUN デバイスにルーティングされた IP アドレスをリッスンします。一番下のボックスは、生のイーサネット フレームで動作するカスタム TCP/IP スタックです。

質問:

  1. このように 2 つの TAP/TUN デバイスを背中合わせに接続することは可能ですか?
  2. ここで「ブリッジ」が必要ですか?彼らは他にどのように背中合わせに話しますか?
  3. そして最後に:これを行うためのより良い方法はありますか?

事前にサンクス。

PS: すべてを同じマシンで実行します。「ボックス」は、ここではプロセスまたはセットまたはプロセスに似ています。

4

1 に答える 1

1

これが合理的な設計かどうかはわかりません。それは、正確に何を達成しようとしているかによって異なります。

確かにトラフィックをトップ ボックスの TUN デバイスに送信できますが、その場合、TUN デバイスを通過するトラフィックを収集するために、そのボックスで実行されるある種のプロセスが必要です。そのプロセスは、実際のカスタム TCP/IP スタックである場合もあれば、パケットをボトム ボックスにトンネリングするものである場合もあります。カスタム TCP/IP スタックを別のマシン (一番下のボックス) で実行したいので、トンネルにしたいと思うでしょう。その場合、トップ ボックスにある問題のトンネル ソフトウェアが、OpenVPN などの既存のものであることが有利であることに気付くかもしれません。

ただし、私の推測では、上部のボックスでトンネルを使用せずに標準の TCP/IP スタックを実行し、下部のボックスを実際のイーサネット インターフェイス間でパケットをルーティングするルーターとして機能させることで、ニーズが満たされる可能性が高くなります (パケットはトップボックスから到着します) と TUN デバイス。そして、TUN デバイスのユーザー空間の最後に、カスタム TCP/IP スタックがあります。

どちらの場合でも、生のソケットを使用する必要はなく、実際にはソケットをまったく使用する必要はありません。どちらの方法でも、カスタム TCP/IP スタックは TUN デバイスからフレームを受信し (トップホストからトンネリングされる可能性があり、ボトムホストに直接送信される可能性があります)、元のフレームを同じ TUN デバイスに戻します。

于 2013-04-16T20:40:30.743 に答える