tcpdump

最近帰るとばたんきゅうだから研究室の日誌をコピペすることにする.
とりあえず実験で使いそうなモノの覚書.

mam pageは http://www.linux.or.jp/JM/html/tcpdump/man1/tcpdump.1.html

tcpdumpとは

要約すると,条件に合致したパケットのヘッダを表示するツール
つまり自分がみたいと思った条件を指定してやればそれにあうパケットを表示してくれるという、いざというとき頼りになるピッコロさんのような(?)ツール

逆にいえばみたいと思う条件を適切に指定してやらないとヤジロベーばりに使えないということ。というわけでオプションをひとつひとつみていく.といってもそのままやるとmanpageのコピペになりそうなのでひとつひとつ印象を書いて覚えがきとすることにしよう。

tcpdumpのオプション

まずシンプルに表示を変えるオプションから

  • n

アドレスの名前解決をしない.
 DNS使っていない環境ではどうでもいい話.処理速度の関係で好んで付ける人がいるとか.

  • i

インターフェースを指定
 今回の実験Dネットワークではもっとも御世話になるオプション。

  • i eth0 とかやって特定のインターフェースの通信を監視可能.
  • x -X

パケットの中身を表示
 当分御世話になることはなさそう.ちなみに小文字は16進 大文字はASCIIで表示

ファイル出入力関係
  • F filename

条件式をfilenameから読み込む
 イメージ的にForce のFなんだけど違うんだね.
 というかtcpdumpにforce画筆用な状況がないのか.条件式の詳細は後述。
 実験Dで何度も同じ条件使うならまとめてファイルにするとレポ書きやすいかも.

  • w filename

ファイルに出力
 これでファイルに保存すれば後で色々いじくれるしレポにも載せられるからきっと便利だ.
 現場でログとるときなんかも使いそう。

  • r filename

ファイルの中身を解析
 流れてるパケットじゃなく,-wで作成したファイルの中身を再度評価して表示するらしい。
 

フィルタリングに使える条件式

そして問題の条件式
 まず基本として
  host ホスト名もしくはIPアドレス
  port ポート名
 net ネットワークアドレス
 さらに
  src 出るパケット
 dst 入るパケット
 あとプロトコルとして
  ether, fddi, mopdl, ip, ip6, arp, rarp, decnet,
lat, sca, moprc, mopdl, icmp, icmp6, tcp, udp,
が指定可能。まあ使いそうなのは少ないけど.
 他に
  gateway host hostをゲートウェイとするパケット
  broadcast    ブロードキャスト。なお、ipとかetherとかを頭に付けて区別
  multicast    マルチキャスト 同上
  less, greater  後ろにlengthをつけてパケットサイズで制限
などがある。
 
ここまで書いて思ったけど,条件指定するためには,目的とするパケットがどんな情報を含んでいて,他と異なる(=条件指定するに値する)情報はなんなのかとかちゃんと知ってないと意味ないよね.
TCPもっとまじめに勉強しないとなぁ...

具体例

最後におまけで使いそうな例をコピペ
# FIN が立っている
tcpdump 'tcp[13] & 1 != 0'

# SYN が立っている
tcpdump 'tcp[13] & 2 != 0'

# SYN と ACK が立っている
tcpdump 'tcp[13] & 18 == 18'