8月 9

tcpdumpオプションメモ

[tcpdump]のオプションメモです。

オプション 効果
 -a  
 アドレスをホスト名に変換
 
 -c < num >  
 < integer >個のパケットを受信したら終了
 
 -d  
 コンパイルパケットマッチングコードを人間が読める形式で標準出力にダンプし終了
 
 -dd  
 パケットマッチングコードをC言語の一部として利用可能な形でダンプし終了
 
 -ddd  
 パケットマッチングコードを十進数でダンプし終了
 
 -e  
 各ダンプ行にリンクレベルヘッダを表示
 
 -f  
 外部のインターネットアドレスをシンボルではなく数値で表示
 
 -F < filename >  
 フィルタ条件式を指定する場合に特定のファイルに記述しているものを用いるこれより後に指示があったとしても無視される頻繁に指定するフィルタ条件を記述しておくと便利
 
 -i < interface >  
 監視するインターフェイスを指定指定しない場合はシステムのインターフェイスから小さい番号かつアクティブになっているものが選択される(ループバック以外)
 
 -l  
 標準出力をバッファリングするデータを蓄積しながら監視する場合に有効
 
 -n  
 IPアドレス、ポート番号を名前変換しない
 
 -N  
 ホストのドメイン名を表示しない
 
 -m <modulefile>  
 SMI、MIBモジュールをmodulefileから読み込む複数のモジュールファイルを読み込む場合は複数回使用
 
 -O  
 パケットマッチングコードオプティマイザーを停止
 
 -p  
 プロミスキャスモードを使用しない
 
 -q  
 限定されたプロトコル情報のみの出力となるので出力速度が向上すると同時に出力行が短くなる
 
 -r <file>  
 パケットをfileから読み込むfileに「-」を指定した場合は標準入力が利用される
 
 -s <snaplen>  
 デフォルトで68バイトのsnaplenのバイト長を変更
 
 -T  
 条件式で選択されたパケットに支持されたtypeでの翻訳を指示する
 
 -R  
 relplay preventionフィールドを表示しない
 
 -S  
 TCPシーケンス番号を絶対値で表示
 
 -t  
 ダンプ行に時間を表示しない
 
 -tt  
 ダンプ行に表示する時間を整形しない
 
 -v  
 詳細情報を出力(TTLやサービスの種類の情報など)
 
 -vv  
 「-v」よりも詳細な情報を表示(NFS応答パケットにおける付加フィールドなど)
 
 -vvv  
 「-vv」よりも詳細な情報を表示(telnetのSB…SEオプションなど -Xを指定すると16進表示される)
 
 -w < file >  
 パケットを解析、表示する代わりにfileに書き出す書き出したファイルは「-r」オプションにて表示可能fileに「-」を指定すると標準出力を用いる
 
 -C < num >  
 書き出しファイルのサイズを指定。保存されたファイルサイズが指定サイズよりも大きくなった際に別ファイルへと書き出す。ファイル名は[-w]で指定した名前に連番が付加される。指定するサイズ単位はMB
 
 -x  
 リンクレベルヘッダを除くすべてのパケットを16進表示する。
 
 -X  
 16進表示する場合にASCII文字も表示する「-x」と一緒にセットされると16進とASCII文字の両方で表示される
 

[tcpdump]では条件を指定することで特定の条件にマッチするパケットのみを
ダンプすることができますので
ついでに条件式についてもメモしておきます。
(条件を与えない場合はすべてのパケットをダンプします。)

条件式を指定する場合は修飾子というものを指定します。
修飾子には3つの種類があるのでまずはその修飾子を見ていきます。

修飾子 説明
 type  
 id名またはid番号が指すものの種類を指定利用可能なものは「host」「net」「port」指定されていない場合は「host」が指定されているとみなされる
 
 dir  
 idに向けて、またはidへのどちらか、もしくは両方の通信方向を指定利用可能なものは「src」「dst」「src or dst」「src and dst」指定されていない場合は「src or dst」が指定されているとみなされるnullリンク層においては方向を指定するため「inbound」「outbound」も利用可能
 
 proto  
 特定のプロトコルを指定利用可能なものは「ether」「fddi」「mopdl」「ip」「ip6」「arp」「rarp」「decnet」「lat」「sca」「moprc」「mopdl」「icmp」「icmp6」「tcp」「udp」指定されていない場合は「type」修飾子と矛盾しない範囲でのプロトコルが指定されているものとみなされる
 

上の表に挙げた以外にも特別なものとして
「gateway」「broadcast」「less」「greather」と数値による条件式があります。
また、「and」「or」「not」などの論理式を利用することも可能です。
前述した項目を指定して自分の取得したいパケットへマッチングさせるわけですが
数が多いのですべてを紹介するするわけにはいかないので(さぼらせてください)
いくつか例を挙げたいと思います。
host www.google.co.jp
「www.google.co.jp」との通信にマッチ
src host 192.168.1.100
「192.168.1.100」発の通信にマッチ
gateway 192.168.1.254
「192.168.1.1」をゲートウェイとしている通信にマッチ
dst net 192.168.1
「192.168.1.0/24」に向けた通信にマッチ
dst host www.yahoo.com and dst port 80
「www.yahoo.com」のポート80番に向けた通信にマッチ
less 10
パケットが10以下のときにマッチ
greater 10
パケットが10以上のときにマッチ
udp
UDP通信にマッチ
host 192.168.1.1 or host 192.168.1.100
「192.168.1.1」もしくは「192.168.1.100」に関わる通信にマッチ
not host 192.168.1.1 and host 192.168.1.100
「192.168.1.1」の関わらない通信でかつ「192.168.1.100」に関わる通信にマッチ

やはり「習うより慣れろ」なんでしょうか。
色々なパケットを引っ掛けて覗いて遊んでみてください。
ボクは
tcpdump -i eth0 -n -c 10 -x -X host www.yahoo.com and dst port 80
と実行して「www.yahoo.co.jp」にブラウザでアクセスすると何も反応しないのに「www.yahoo.com」にアクセスするとダンプが表示されたときは当たり前のことなのに感動した思い出があります(笑)


Copyright 2021. All rights reserved.

Posted 2009年8月9日 by ntsuji in category "memo", "packet