tcpreplayによって送信されたパケットがサーバーに表示されないのはなぜですか?


1

HTTPサーバーにpcapファイルを再生しようとしています。 その前に、tcpreplayを正しく使用していることを手動で確認しようとしています。

始めます netcat -l 12345 特定のポートでlistenする。それを「サーバー」と呼びましょう 私が走っている他のマシンで tcpdump ファイル内の特定のポートへの宛先を持つすべてのトラフィックをキャプチャする dummy.pcap。その後、私はクライアントマシン上でnetcatを実行し、 "server"に接続していくつかのメッセージを送ります。 結果のpcapを確認しました tshark パケットがキャプチャされたことを示しています。

私は再びサーバー上でnetcatを起動し、そしてクライアント上でtcpreplayを起動しました。

tcpreplay -d 5 -i eth0 -t dummy.pcap

しかし、サーバー上のnetcatコンソールには何も表示されません。 "server"上でtcpdumpを実行しようとしましたが、パケットが受信されたことがわかります。

パケットがnetcatコンソールに表示されないのはなぜですか?

回答:


2

TCPreplayはサーバでトラフィックを再生しますが、TCPプロトコルの性質上、実際にはサーバと「通信」しません。つまり、基本的にあなたのサーバはTCPパケットを受信して​​いますが、再生が適切なハンドシェイクを完了していないので実際のTCP接続を確立することはありません。これがあなたのnetcatにTCPセッションが現れない理由です。

私の経験では、この種のtcpdumpは分析にのみ役立ち、一連のコマンド/データを再現することに関心がある場合は、プロトコルに固有のツールを見つける必要があります(私の場合はカスタムクライアントの作成が含まれます)。

見る HTTPインタラクションを記録して再生する方法

tcpreplayから ウィキ

サーバーへのトラフィックの送信

問題

あなたはpcapキャプチャをしていて、そのトラフィックを別のサーバーで再生したいと思います。

溶液

まず、これはICMPトラフィックとUDPトラフィックでのみ機能します。 Tcpreplayは、TCPストリーム内のSyn / Ack番号を同期しないため、サーバーへのTCPトラフィックの送信をサポートしません。

とは言っても、ターゲットサーバーのIPアドレスとMACアドレスに合わせて、宛先IPアドレスとMACアドレスを変更する必要があります。この場合、ターゲットサーバーのIPは10.10.1.1で、MACアドレスは00:01:02:03:04:05です。

そして彼らの よくある質問

=== tcpreplayはサーバーへのトラフィック送信をサポートしていますか? === 「サーバー」とは、ポートで待機するデーモン(Unix)またはサービス(Windows)を意味します(Webサーバーまたはメールサーバーが一般的な例です)。最大の問題は、tcpreplayがTCPのような一般的なプロトコルの状態を理解できないことです。つまり、Syn / Ackと同期して有効なTCPセッションを作成することはできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.