tcpdumpとは
-
ネットワーク通信の生データを収集し結果を出力(=パケットキャプチャ)してくれるCUIの解析ツール
-
いつ、どこからどこへ、どんなフラグ(SYN,ACK,FIN等)のパケットが送られたか等が分かる。
UDP
01:49:27.734570 IP 10.121.97.2.ddi-udp-1 > 224.0.0.2.ddi-udp-1: UDP, length 20
TCP
02:33:08.725216 IP 127.0.0.1.50430 > 127.0.0.1.12345: Flags [S], seq 1798840789, win 65495, options [mss 65495,sackOK,TS val 338968857 ecr 0,nop,wscale 7], length 0
02:33:08.725238 IP 127.0.0.1.12345 > 127.0.0.1.50430: Flags [S.], seq 2503952955, ack 1798840790, win 65483, options [mss 65495,sackOK,TS val 338968857 ecr 338968857,nop,wscale 7], length 0
02:33:08.725254 IP 127.0.0.1.50430 > 127.0.0.1.12345: Flags [.], ack 1, win 512, options [nop,nop,TS val 338968857 ecr 338968857], length 0 -
他解析ツールと比べてリソース消費が少ない。
使い方
- 用途によってフィルタをかける
- フィルタ無しだと集計結果が膨大すぎるので必ずフィルタを掛けます。
- フィルタリングの方法は以下
- ホストで絞る
tcpdump host xxx.xxx.xxx.xxx #特定IPでフィルタ
tcpdump host 1.1.1.1 or 2.2.2.2 #複数IPでフィルタ
tcpdump src host xxx #特定IP(送信元のみ)でフィルタ
tcpdump dst host xxx #特定IP(送信先のみ)でフィルタ - ネットワークで絞る
tcpdump net 192.168.2.0/24 #特定ネットワークでフィルタ(送信元、送信先両方が対応)
tcpdump src net 192.168.2.0 mask 255.255.255.0 #送信元ネットワークでフィルタ
tcpdump dst net 192.168.2.0 mask 255.255.255.0 #送信先ネットワークでフィルタ - ポートで絞る
tcpdump port 80 #単一ポート
tcpdump port 80 or port 443 #複数ポート
tcpdump dst port 80 #送信先ポート - インターフェースで絞る
tcpdump -i eth0 #eth0の通信のみ対象
- TCPフラグで絞る
tcpdump "tcp[tcpflags] & (tcp-syn|tcp-fin)!=0" #SYNorFINパケットにマッチするものが対象
- ホストで絞る
- よく使うオプション
- -n
アドレス変換(192.168.1.123=>examplehost)やポート番号変換(80=>http)をしない。 - -w 書き出すファイル名
収集結果をファイルに書き出す - -r 読み込むファイル名
指定したファイルからパケット収集結果を読み込む
- -n
参考
- 超絶初心者むけtcpdumpの使い方 - Qiita
- tcpdumpやwiresharkでTCP制御フラグを指定してパケットを収集する方法