0

私のアプリはtun0などのTUNを使用しています。設計では、私のアプリは完全な IP レイヤーを含む UDP を受け取ります。次に、IP レイヤーを取り出し、「ファイル書き込み」を使用してそれらを自分の tun0 デバイスに入れます。おそらく設計上、 tun0 から再度パケットを送信します。

今の状況は、パッケージがトンネルに書き込まれていることを tcpdump で確認できますが、それらを読み取ることができませんでした。

トンネル設定やルート設定がおかしくないですか?

前もって感謝します

ヤン

4

1 に答える 1

0

2 番目の tun0 は FIFO キューではありません。2 番目の tun0 デバイスを使用する方法と理由の設計に問題がある可能性があります。それを使用している理由と、どのプロセスを読み取る必要があるかを明確にします。適切なアプローチは、その明確化から流れてくるはずです。

送信したデータを読みたい場合は、いくつかのオプションがあります。

  • tun0 を開いたときに、TCP または UDP エコー サービスに接続します。これにより、詰め込んだパケットが送り返されます。
  • 接続する 2 番目の tun0 のリスナーを開きます。次にそれに接続し、その接続からパケットを送信します。リスナー側からデータを読み取ります。
  • 2 つのファイル記述子でパイプを開きます。1 つの記述子に書き込み、もう 1 つの記述子から読み取ります。パイプは、子を fork するときに IPC (プロセス間通信) によく使用されます。
  • ソケットを作成し、そこからデータを読み取ります。書き込み用にソケットのもう一方の端を開きます。ソケットは、他のプロセスがプロセスと通信できるようにするためによく使用されます。これは、呼び出しプロセスの有効期間がリッスン プロセスとは異なる場合にうまく機能します。
  • データを格納するためにメモリ内にバッファまたはキューを作成します。
于 2012-10-15T23:54:40.603 に答える