tcpdump出力ファイルが空であるのはなぜですか?

tcpdump出力ファイルが空であるのはなぜですか?

このオプションを使用してキャプチャをファイルに保存すると、Red Hat Enterprise Linux Server release 6.5結果ファイルは空になります。tcpdump-w

[root@plop ~]# tcpdump -n -w tcpdump.cap
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C217 packets captured
217 packets received by filter
0 packets dropped by kernel
[root@plop ~]# cat tcpdump.cap
[root@plop ~]# ll tcpdump.cap
-rw-r-----. 1 root root 0 Aug 25 14:13 tcpdump.cap
[root@plop ~]#

>また、andを使用してコマンド出力をリダイレクトしようとしましたが、&>常に空のファイルが表示されます。

その理由は何ですか?

気づく:

  • ファイルにリダイレクトされない場合、端末は正しい出力(多数のパケット)を見ることができます。
  • 同じことをしましたが、期待thsarkどおりに動作しました(出力ファイルが正しい)。
  • バージョンtcpdumptcpdump version 4.1-PRE-CVS_2012_02_01
  • バージョンlibpcaplibpcap version 1.4.0
  • そのオプションを試しましたが、-U問題は解決されませんでした。

答え1

そのオプションを追加してみてください-U

マニュアルページから:

   -U
   --packet-buffered
          If  the  -w option is not specified, make the printed packet output ``packet-buffered''; i.e., as the description of the contents of each packet is printed, it will be written to the standard
          output, rather than, when not writing to a terminal, being written only when the output buffer fills.

      If the -w option is specified, make the saved raw packet output ``packet-buffered''; i.e., as each packet is saved, it will be written to the output file, rather than being written only  when
      the output buffer fills.

      The -U flag will not be supported if tcpdump was built with an older version of libpcap that lacks the pcap_dump_flush() function.

答え2

tcpdump出力ファイルに書き込めない場合(たとえば、権限またはディスクがいっぱいの場合)、その事実を報告しない既知の問題があります。

この場合、出力ファイルは正常に作成されますが、データは記録されず、ファイルシステムがいっぱいになる可能性があります。

straceこれはを介してやり直し、書き込み失敗を観察することで確認できます。

解決策は、問題のファイルシステムからスペースを消去するか、スペースtcpdumpが存在するファイルシステムを指すことです。

答え3

私はこのcmdを使用しました: sudo tcpdump -v -w ~/Desktop/tout_135.pcap -i eth0 host 10.211.55.*

結果ファイルにはデータがなく、chmod 700または権限を付与したいすべてのエントリのみが含まれます。 tcpdumpをもう一度実行すると、ジャジャン!データが生成されます!

答え4

tcpdump正しいネットワークインターフェースを見ていることを確認してください。または、-i anyすべてのインターフェイスで表示できます。

関連情報