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」にアクセスするとダンプが表示されたときは当たり前のことなのに感動した思い出があります(笑)