3

次の問題を解決したいと思います: A と B の 2 台のコンピューターがあるとします。

マシン A はインターフェイス (「tun」インターフェイスと仮定) からすべての IP パケットを取得し、それを Java プロセス (データを変更する可能性がある) に送信し、UDP を使用してマシン B に送信します。マシン B では、コンテンツ再び抽出され、インターフェイスに送信されます。

たとえば、マシン A でping Bコマンドを入力すると、Java プロセス (IP ヘッダーを含む) で ping 要求が受信され、UDP を使用してマシン B に送信され、インターフェースに送信され、インターフェースから応答が返されます。同じトンネル。socatJavaプロセスのデータで何かをしたいので、私はただ使うことはできません。

私が試したのは(マシンAを想定):

socat -u tun:123.123.123.123/24,iff-up,iff-no-pi udp:localhost:1234 &
socat -u udp-listen:1236 interface:tun0 &

すべてのトラフィック (例: ping 要求) はポート 1234 のローカル UDP ソケットに送信されます。私の Java プロセスはそのポートから受信し、それをマシン B に送信し、マシンではローカル ポート 1236 に送信します。 ping を受信します。問題は、おそらく 2 番目のsocatコマンドがパケットを tun0 に送信し、次に最初のコマンドがそのパケットを Java などに送り返すため、2 つのマシン間のパケット ループです。

この問題を起こさずに UDP over Java で IP をトンネリングする方法を知っていますか?

4

0 に答える 0