2017-05-04 13 views
0

tcpdumpを使用して単方向tcpキャプチャのLinux動作をテストしようとしています。サーバ上で単方向tcpデータを取得しようとしています

シナリオは、サーバAがスイッチMを介して宛先Yにパケットを送信しているということです。同時に、Mはすべてのパケットをキャプチャしたい宛先Zにも同じパケットを送信します。接続A〜Yはtcp接続です。

  1. nc -l 0.0.0.8 4444

  2. telnet -b 0.0.0.10 0.0.0.8 4444

  3. tcpdump -i <interface name associated with 0.0.0.8> port 4444

上記のシナリオを合成するために、私は、次のコマンドを実行しているサーバーのZ上のオープン3つの端子を有します

0.0.0.8と0.0.0.10は、別々のスロット、この場合はスロット1とスロット6の別々のNICカードです。

telnetセッションからは、データの送信に成功しましたが、tcpdumpはパケットをキャプチャしていません。端末3からport 4444を削除すると、ネットワーク内のデータが表示されますが、telnetセッションのデータは表示されません。私はまた、私はエラーメッセージも受け取っていないことに注意する必要があります。

私はインターネットでそれを読むと、telnetがtcp接続を作成すると仮定しています。そのため、tcpdumpは動作するはずです。私はここで間違っていますか?私は別のことをしなければならないでしょうか?このサーバーでWireSharkなどを使用することはできません。

また、端末3では、tcpdump host 0.0.0.8 port 4444も利用できませんでした。ご意見ありがとうございました。

+1

OSは、送信元と送信先が同じマシン上にあるため、NICをバイパスしている可能性があります。したがって、tcpdumpはそれをキャプチャできません。 Unix.SEやSuperUser.comは、プログラミングに関するものではないので、この質問のより良い場所になります。 – Barmar

答えて

0

ノードMが本当にスイッチとしないハブの場合、ノードZは

TCPは、接続ベースのプロトコルであるノードY.宛のTCPパケットを受信することはありません。つまり、ノードAがノードYと通信しようとするとき、ノードYのMACアドレスを要求するARP要求をブロードキャストします(スイッチに接続されているすべてのノードにこのパケットが表示されます)。ノードYがMACアドレスで直接ノードAに応答すると、ノードAはノードYに直接TCP接続を開始します。

ノードMがスイッチである場合、MACアドレスF宛のパケットのみを直接ポートは、MACアドレスFを持つノードに接続されていることを認識します。パケットをすべてのポートに転送することはありませんが、宛先ノードのポートにのみ転送します。

一方、ノードMがハブである場合、宛先に関係なくすべてのパケットを常にすべてのポートに転送します。

関連する問題