単一のポートで大量の着信TCPトラフィックを受け入れる自作サーバーをテストする必要があります。プロトコルも自作です。
テストの目的で、このトラフィックを次の両方に送信したいと思います:-本番サーバー(たとえば、ポート12345でリッスン)-テストサーバー(たとえば、ポート23456でリッスン)
私のクライアントアプリは「ダム」です。データを読み戻すことはなく、サーバーはとにかく応答することはありません。サーバーは接続のみを受け入れ、統計計算を行い、生データと計算データの両方を保存/転送/サービスします。
実際、クライアントアプリとハードウェアは非常に単純なので、両方のサーバーでストリームを送信するようにクライアントに指示する方法はありません...そして「偽の」クライアントを使用するだけでは十分ではありません。
最も簡単な解決策は何でしょうか?もちろん、受信データをコピーして、クライアントになりすましてテストサーバーに送り返す中間アプリを作成することもできます。
私はSqueezeを実行している単一のサーバーを持っており、それを完全に制御しています。
返信ありがとうございます。
何も書きたくない場合は、netcatが1つのポートでリッスンし、teeにパイプし、teeが2つの名前付きパイプに行き、次にnetcatがprodおよびtestサーバーポートに行きますか?
何かのようなもの:
mkfifo /tmp/prodpipe
mkfifo /tmp/testpipe
nc -l 9999 -k | tee /tmp/prodpipe | tee /tmp/testpipe
そして、別々の端末で:
cat /tmp/prodpipe | nc 127.0.0.1 12345
そして
cat /tmp/testpipe | nc 127.0.0.1 23456
そして、クライアントはポート9999で吐き出します。
トラフィックがUDPの場合、これはiptablesで非常に簡単に実行できるはずです。
IptablesのTEE
ターゲットが利用可能であり、基本的にパケットのコピーを別の宛先に送信できます。
デフォルトではカーネルに組み込まれていませんが、ソースとツールは xtables-addons-source パッケージで入手できます。