tcpdumpを使う

パケットモニタの定番「tcpdump」を使ってみた。

tcpdumpをインストール

まずは、tcpdumpをインストール。
debianなので、aptitudeでインストールします。

# aptitude install tcpdump

tcpdumpの使い方

コマンド

# tcpdump 条件式


例1)udpプロトコルをモニタ

# tcpdump -n -vvv udp
-n アドレスやポート番号がそのまま表示されます
-vvv 詳細出力


例2)tcpプロトコルをキャプチャ
tcpプロトコルをファイルに出力。
出力したファイルを表示。

# tcpdump -n -vvv tcp -w packet.txt
# tcpdump -r packet.txt
-w ファイル出力
-r 読み込むファイル

その他にもいろんなオプションがあるようです。

rubyudp送信

ホストBから、tcpdumpを実行しているホストAへudp通信をしてみます。
irbを起動して、以下のようなテストを実行してみました。

ホストA
tcpdumpを実行。

# tcpdump -n -vvv udp

ホストB
irbを起動して以下を実行。

require "socket"
s = UDPSocket.new
addr = Socket.sockaddr_in("echo", "tcpdumpを実行しているホストのIPアドレス")
s.sent("test", 0, addr)

ホストA

17:26:35.878940 IP (tos 0x0, ttl 60, id 0, offset 0, flags [DF], proto UDP (17), length 32) <ホストBのIP> > <ホストAのIP>: [udp sum ok] UDP, length 4

無事にホストAでudpが確認できました。