tcpdump (Linux) または Wireshark (Windows) を使用して生のネットワークトラフィックをキャプチャして分析し、パケット損失、レイテンシー、接続性の問題を診断します。
パケットキャプチャのプロセス
次の図は、パケットキャプチャのプロセスを示しています。
上記のプロセスに関する注記:
|
No. |
ステップ |
説明 |
|
1 |
問題の症状の特定 |
ping や traceroute などのツールを使用して、次の問題が存在するかどうかを確認します。
|
|
2 |
パケットキャプチャツールの選択 |
オペレーティングシステムに基づいてパケットキャプチャツールを選択します。
|
|
3 |
パケットキャプチャツールのインストールと設定 |
効率を向上させるために、キャプチャ前にフィルター条件を設定します。 |
|
4 |
ネットワークパケットのキャプチャ |
キャプチャする前に、以下を明確にします。
|
|
5 |
キャプチャしたデータの分析 |
キャプチャしたデータを分析します。
|
|
6 |
問題の解決と結果の検証 |
キャプチャしたデータが不十分な場合は、他のツールを使用してさらにトラブルシューティングを行います。
|
Linux インスタンスでの tcpdump ツールの使用
ほとんどの Linux ディストリビューションには tcpdump がプリインストールされています。インストールされていない場合は、APT や YUM などのパッケージマネージャーを使用してインストールします。詳細については、「パッケージ管理ツールを使用したソフトウェアの管理」をご参照ください。
説明
tcpdump コマンド:
tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
[ -c count ] [ --count ] [ -C file_size ]
[ -E spi@ipaddr algo:secret,... ]
[ -F file ] [ -G rotate_seconds ] [ -i interface ]
[ --immediate-mode ] [ -j tstamp_type ] [ -m module ]
[ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ]
[ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
[ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
[ -z postrotate-command ] [ -Z user ]
[ --time-stamp-precision=tstamp_precision ]
[ --micro ] [ --nano ]
[ expression ]
よく使用されるパラメーター:
|
パラメーター |
説明 |
|
-s |
キャプチャサイズ。値が 0 の場合は、システムで定義されたキャプチャサイズを使用します。 |
|
-w |
キャプチャしたパケットをコンソールに出力する代わりにファイルに保存します。 |
|
-i |
リッスンするネットワークインターフェース。 |
|
-vvv |
詳細なプロトコルデータを出力します。 |
|
expression |
フィルター式。次のプリミティブをサポートします。
|
すべてのパラメーターと使用法については、「tcpdump man ページ」をご参照ください。
例
以下の例では、一般的な tcpdump コマンドとその出力を示します。
-
特定のインターフェースとポートのパケットをキャプチャする
eth0 インターフェースでポート 22 のパケットをキャプチャし、コンソールに出力します。
tcpdump -s 0 -i eth0 port 22キャプチャ中、パケットデータがリアルタイムで表示されます。
Ctrl+Cを押して停止します。キャプチャの停止後、サマリーが表示されます。tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 20:24:59.414951 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442372:442536, ack 53, win 141, length 164 20:24:59.415002 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442536:442700, ack 53, win 141, length 164 20:24:59.415052 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442700:442864, ack 53, win 141, length 164 20:24:59.415103 IP 172.xx.xx.226.ssh > 42.xx.xx.107.43414: Flags [P.], seq 442864:443028, ack 53, win 141, length 164 -
詳細な出力でパケットをキャプチャする
eth1 インターフェースでポート 22 のパケットをキャプチャし、詳細な情報を出力します。
tcpdump -s 0 -i eth1 -vvv port 22キャプチャ中はパケットデータがリアルタイムで表示されます。
Ctrl+Cを押すと停止します。キャプチャが停止すると、サマリーが表示されます。tcpdump: listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes 15:45:54.817920 IP (tos 0x10, ttl 64, id 61958, offset 0, flags [DF], proto TCP (6), length 172) iZr1ulp9t4u4a8Z.ssh > 123.xxx.xxx.74.2057: Flags [P.], cksum 0x80cd (incorrect -> 0x2ee9), seq 890113592:890113724, ack 2345612678, win 592, length 132 15:45:54.894215 IP (tos 0x14, ttl 116, id 16850, offset 0, flags [DF], proto TCP (6), length 40) 123.139.88.74.2057 > iZr1ulp9t4u4a8Z.ssh: Flags [.], cksum 0x1e6a (correct), seq 1, ack 132, win 1021, length 0 15:45:54.913403 IP (tos 0x10, ttl 64, id 61959, offset 0, flags [DF], proto TCP (6), length 172) iZr1ulp9t4u4a8Z.ssh > 123.xxx.xxx.74.2057: Flags [P.], cksum 0x80cd (incorrect -> 0x1105), seq 132:264, ack 1, win 592, length 132 15:45:54.988025 IP (tos 0x10, ttl 64, id 61960, offset 0, flags [DF], proto TCP (6), length 236) iZr1ulp9t4u4a8Z.ssh > 123.xxx.xxx.74.2057: Flags [P.], cksum 0x810d (incorrect -> 0x98d1), seq 264:460, ack 1, win 592, length 196 -
特定の IP の特定のプロトコルのパケットをキャプチャする
eth0 インターフェースで、特定の宛先 IP の ICMP パケットをキャプチャします。
tcpdump -s 0 -i eth0 -vvv dst 123.xxx.xxx.74 and icmpキャプチャ中、パケットデータはリアルタイムで表示されます。
Ctrl+Cを押して停止します。キャプチャが停止すると、サマリーが表示されます。tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 15:43:29.116058 IP (tos 0x14, ttl 64, id 26185, offset 0, flags [none], proto ICMP (1), length 60) iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 65, length 40 15:43:30.129600 IP (tos 0x14, ttl 64, id 27043, offset 0, flags [none], proto ICMP (1), length 60) iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 66, length 40 15:43:31.141576 IP (tos 0x14, ttl 64, id 27201, offset 0, flags [none], proto ICMP (1), length 60) iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 67, length 40 15:43:32.153912 IP (tos 0x14, ttl 64, id 27802, offset 0, flags [none], proto ICMP (1), length 60) iZr1ulp9t4u4a8Z > 123.xxx.xxx.74: ICMP echo reply, id 2048, seq 68, length 40 -
パケットをキャプチャしてファイルに保存する
すべてのインターフェースでパケットをキャプチャし、ファイルに保存します。
tcpdump -i any -s 0 -w test.capキャプチャが進行中であることを示すサンプル出力:
tcpdump: data link type LINUX_SLL2 tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytesCtrl+Cを押して停止します。キャプチャが停止すると、サマリーが表示されます。^C97 packets captured 127 packets received by filter 0 packets dropped by kernel -
キャプチャファイルを表示する
tcpdump キャプチャファイルの内容を表示します。
tcpdump -r test.cap
Windows インスタンスでの Wireshark ツールの使用
Wireshark は、Windows インスタンスでネットワークパケットをキャプチャおよび分析するためのグラフィカルインターフェースを提供します。
操作手順
-
Wireshark をインストールして起動します。
「Wireshark 公式サイト」からインストールパッケージをダウンロードしてインストールします。
-
[Capture][ > ][Options] を選択します。
-
[Wireshark Capture Options] ページで、インターフェース名または IP アドレスに基づいてネットワークインターフェースを選択し、開始 をクリックします。

-
十分なパケットがキャプチャされた後、[Capture] > [Stop] を選択します。
-
[File][ > ]保存 を選択して、キャプチャしたパケットを保存します。
-
(任意) キャプチャファイルを表示するには、[File] > [Open] を選択し、ファイルを選択します。
使用ガイドとデータ分析方法については、「Wireshark の公式サイト」をご参照ください。