ソースサーバーがターゲットサーバーにアクセスする際に、パケット損失やレイテンシなどの例外が発生した場合、パケットをキャプチャして元のインタラクションデータを取得し、トラブルシューティングと分析を行うことができます。このトピックでは、Linux と Windows でパケットキャプチャツールを使用してネットワークパケットをキャプチャする方法について説明します。
パケットキャプチャプロセス
ネットワークの例外が発生した場合、データパケットのキャプチャは、問題を特定するための重要な方法の 1 つです。次の図は、パケットキャプチャプロセスを示しています。
上記のプロセスについて、以下の点に注意してください。
番号 | 手順 | 説明 |
1 | 問題の症状を特定する | この手順では、ping や traceroute などのツールを使用して、以下の現象が発生しているかどうかを分析および判断できます。
|
2 | 適切なパケットキャプチャツールを選択する | ビジネス要件、ハードウェア、およびソフトウェア環境に基づいて、適切なパケットキャプチャツールを選択します。
|
3 | パケットキャプチャツールをインストールして構成する | ネットワークパケットをキャプチャする前に、効率を向上させるために、必要に応じてパケットキャプチャツールのフィルタ条件を構成することをお勧めします。 |
4 | ネットワークパケットをキャプチャする | ネットワークパケットをキャプチャする前に、以下の情報を明確にしてください。
|
5 | キャプチャされたデータを分析する | キャプチャされたデータを以下の方法で分析します。
|
6 | 問題を解決し、結果を確認する | キャプチャされたデータに基づいて問題を特定できない場合は、他のツールまたは方法を使用してさらにトラブルシューティングを行います。
|
Linux インスタンスで tcpdump ツールを使用する
Linux インスタンスでは、tcpdump ツールを使用してネットワークパケットをキャプチャおよび分析できます。ほとんどの Linux ディストリビューションには、tcpdump ツールがプリインストールされています。 tcpdump ツールがインストールされていない場合は、Advanced Package Tool (APT) や Yellowdog Updater Modified (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 ツールのその他のパラメータと使用方法の詳細については、「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), capture size 65535 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 アドレス間の Internet Control Message Protocol (ICMP) ping パケットをキャプチャし、キャプチャされたパケットの詳細情報をコンソールに表示します。
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 bytesキャプチャプロセスを停止するには、
Ctrl+Cを押します。 キャプチャプロセスが停止すると、キャプチャされたデータの概要が表示されます。^C97 packets captured 127 packets received by filter 0 packets dropped by kernel生成されたパケットキャプチャファイルの内容を表示する。
次のコマンドを実行して、tcpdump によって生成されたパケットキャプチャファイルの内容を表示します。
tcpdump -r test.cap
Windows インスタンスで Wireshark ツールを使用する
このセクションでは、Windows インスタンスで Wireshark ツールを使用してネットワークパケットをキャプチャおよび分析する方法について説明します。
手順
Wireshark ツールをインストールして起動します。
Wireshark 公式 Web サイトにアクセスし、Wireshark インストールパッケージを入手して、Wireshark ツールをインストールします。
[キャプチャ]> [オプション] を選択します。
[Wireshark キャプチャオプション] ページで、インターフェース名または IP アドレスに基づいてパケットキャプチャ用のネットワークインターフェースを選択し、[開始] をクリックします。

十分なデータパケットがキャプチャされたら、[キャプチャ] > [停止] を選択します。
[ファイル] > [保存] を選択して、キャプチャされたパケットをファイルに保存します。
(オプション) パケットキャプチャファイルを表示するには、Wireshark インターフェースのメニューバーで [ファイル] > [開く] を選択し、表示するパケットキャプチャファイルを選択します。
Wireshark ツールの使用方法とデータの分析方法の詳細については、Wireshark 公式 Web サイトをご参照ください。
参照
インスタンスには ping できるが、インスタンスのポートには ping できないという問題のトラブルシューティング方法については、「クライアントがインスタンスに ping できるが、インスタンスのポートに ping できない場合はどうすればよいですか?」をご参照ください。
ネットワークパス分析のための My Traceroute (MTR) ツールの使用方法については、「MTR を使用してネットワークパスを分析する」をご参照ください。