tcpdumpの使い方
tcpdump で、パケットキャプチャできる。
インストール
yum install tcpdump
基本
そのまま実行すると、通信のパケットのヘッダが延々と出力される。
# tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 10:12:35.299981 IP xxx.example.jp.50022 > example.ne.jp.64123: P 169366725:169366921(196) ack 4014725361 win 221 10:12:35.300415 IP xxx.example.jp.36244 > dns5.sakura.ad.jp.domain: 37991+ PTR? 40.50.60.70.in-addr.arpa. (43) 10:12:35.303521 IP dns5.sakura.ad.jp.domain > xxx.example.jp.36244: 37991 1/0/0 (91) 10:12:35.303674 IP xxx.example.jp.35979 > dns5.sakura.ad.jp.domain: 48133+ PTR? 30.40.50.60.in-addr.arpa. (45) 10:12:35.304749 IP dns5.sakura.ad.jp.domain > xxx.example.jp.35979: 48133 1/0/0 (80) 10:12:35.304837 IP xxx.example.jp.50022 > example.ne.jp.64123: P 196:376(180) ack 1 win 221 10:12:35.305011 IP xxx.example.jp.40779 > dns5.sakura.ad.jp.domain: 40018+ PTR? 10.20.30.40.in-addr.arpa. (45) 10:12:35.305518 IP dns5.sakura.ad.jp.domain > xxx.example.jp.40779: 40018 1/0/0 (76) 10:12:35.324247 IP example.ne.jp.64123 > xxx.example.jp.50022: . ack 0 win 256 10:12:35.324277 IP xxx.example.jp.50022 > example.ne.jp.64123: P 376:1428(1052) ack 1 win 221
オプション -n
を指定すると、ポート番号とサービス名の変換や、IPアドレスとホスト名の変換などの無駄な処理を省ける。
# tcpdump -n
フィルタリング
うまくフィルタリングすることで、欲しい情報を見やすくできる。
↓ 80番ポートだけ
# tcpdump -n port 80
↓ 22番ポートを除く(自分が接続しているsshの通信を除外)
# tcpdump -n not port 22
↓ arp と 22番ポートを除く(ネットワークに大量に流れているARPのパケットと、自分が接続しているsshの通信を除外)
# tcpdump -n not arp and not port 22
↓ 接続元、接続先に192.168.123.123 が関係あるものだけ
# tcpdump -n host 192.168.123.123
↓ and 条件と or 条件
# tcpdump -n host 192.168.123.123 and \( port 80 or port 443 \)
↓ バックグラウンドで実行
# tcpdump -n port 80 >> tcpdump.log &
↓ ファイルへの書き込みは -w でも可能だが、読むときに -r しないといけないので、ちょっと見たいだけの時には面倒
# tcpdump -n port 80 -w tcpdump.log & ↓ # tcpdump -r tcpdump.log > tcpdump.txt
コメント