yuu_nkjm blog
2008-08-19(Tue) 編集
[Linux][Network][Troubleshooting] TCP/UDPパケットをtshark(Wireshark)でキャプチャ
Bind9のロギング機能では,Severityをどう調整しても,「"iken.ac.jp"という問い合わせに対して"*.*.*."と答えました」という様な項目が吐けない.
仕方ないので,パケットキャプチャでもやってみっかってことで,tcpdumpを使ってみた.ざっと見た感じ,パケットのヘッダは見られるけど中身が見られない様だったので,パス.つづいて,Etherrealの後継であるwireshark(テキスト版だとtshark)を使ってみる事にした.
tcpdumpで特定のポートへのパケットを監視する - yuu_nkjm blog(2012-12-04)も使えそう.
まずはインストール.Fedora 7(?)のyumにwiresharkがあったので,
yum install wireshark
として終了.
つづいて,キャプチャ.
tshark port 53 and not host 192.168.0.1 -q -b filesize:500 -w dns.log
上記コマンドは,監視するのはポートが53番で送信元ホストが192.168.0.1以外.quietにしておく.filesizeが500KBごとにローテートしながら,dns.logと連番と日付からなるファイルに書き込む.ということ.
んで,キャプチャしたログを見る.
tshark -t ad -r dns.log
上記コマンドは,パケットのタイムスタンプを日時で表示.dns.logを読み込む.と言うこと.
1 2008-08-19 14:31:24.89 *.*.*.* -> *.*.*.* DNS Standard query A hoge.com 2 2008-08-19 14:31:24.89 *.*.*.* -> *.*.*.* DNS Standard query response A "*.*.*.1"
もうちょっと詳細まで見たい場合には,xオプションを使用する.
tshark -x -r dns.log
ちょっと詰まったのは,書き込み時に"-t ad"を使おうとしたこと.パケットは生パケットのまま保存されて,出力する時に-tで指定したフォーマットを適用するイメージなわけね.
wiresharkのマニュアルはこちら.