GNU/Linux >> Linux の 問題 >  >> Linux

ネットワークのトラブルシューティングに tcpdump コマンドを使用する例

tcpdump ユーティリティを使用すると、ネットワーク内を流れるパケットをキャプチャして、ネットワークのトラブルシューティングに役立てることができます。以下は、さまざまなオプションで tcpdump を使用するいくつかの例です。トラフィックは、指定されたフィルターに基づいてキャプチャされます。次のようなさまざまなオプションがあります。

オプション 説明
-D ネットワーク インターフェイスのリストを出力します。
-i キャプチャするインターフェイスを指定します。
-c 受信するパケット数を指定します。
-v、-vv、-vvv 詳細レベルを上げます (詳細)。
-w キャプチャしたデータをファイルに書き込みます。
-r ファイルからキャプチャされたデータを読み取ります。

tcpdump ユーティリティのインストール

ほとんどの UNIX/Linux システムでは、tcpdump パッケージが既にインストールされていることはありません。最新バージョンをインストールするには、システムで適切なパッケージ マネージャーを使用します。たとえば、CentOS/RHEL サーバーの場合:

# yum install tcpdump

ネットワークのトラブルシューティングに tcpdump を使用する例

1.ネットワーク インターフェースのリストを表示

tcpdump がパケットをキャプチャできるネットワーク インターフェイスのリストを出力するには:

# tcpdump -D
1.eth0
2.nflog (Linux netfilter log (NFLOG) interface)
3.nfqueue (Linux netfilter queue (NFQUEUE) interface)
4.any (Pseudo-device that captures on all interfaces)
5.lo [Loopback]

2.特定のインターフェースでのキャプチャ

「tcpdump -D」コマンドからわかるように、ネットワーク インターフェイスごとに番号とインターフェイス名が出力されます。インターフェイス名または番号を -i に指定できます キャプチャするインターフェイスを指定するフラグ。たとえば、インターフェイス eth0 でパケットをキャプチャするには:

# tcpdump -i 1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:26:51.118038 IP ec2-54-159-106-120.compute-1.amazonaws.com.48021 > geeklab.31297: Flags [S], seq 3960153353, win 26883, options [mss 1460,sac
kOK,TS val 2229362922 ecr 0,nop,wscale 7], length 0
01:26:51.118072 IP geeklab.31297 > ec2-54-159-106-120.compute-1.amazonaws.com.48021: Flags [S.], seq 547340507, ack 3960153354, win 26847, optio
ns [mss 8961,sackOK,TS val 5714985 ecr 2229362922,nop,wscale 7], length 0

この例では、出力は Ctrl + C を押して終了するまで続きます。

3.特定の数のパケットのみをキャプチャ

特定の数のパケットを受信した後に tcpdump を終了するには、-c (カウント) を使用します オプションの後に、受信するパケット数を指定します。次の例では、2 つのパケットをキャプチャします:

# tcpdump -i 1 -c 2
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:37:08.956549 IP 182.100.67.76.38819 > geeklab.ssh: Flags [P.], seq 542149092:542149176, ack 774431931, win 271, options [nop,nop,TS val 26493
51 ecr 6332468], length 84
01:37:08.956575 IP geeklab.ssh > 182.100.67.76.38819: Flags [.], ack 84, win 230, options [nop,nop,TS val 6332824 ecr 2649351], length 0
2 packets captured
6 packets received by filter
0 packets dropped by kernel

この例に示すように、tcpdump がパケットのキャプチャを完了すると、次のように報告されます:

  • キャプチャされたパケット :これは、tcpdump が受信して処理したパケットの数です。
  • フィルタによって受信されたパケット :フィルタはコマンド ラインで指定でき、定義されたフィルタに一致するパケットのみが tcpdump によって処理され、カウントされます。
  • カーネルによってドロップされたパケット :これは、バッファ スペースの不足が原因でドロップされたパケットの数です。 -B オプションを使用してバッファ サイズを設定します。

4.出力の詳細 (詳細) を増やします

出力の詳細 (詳細) を増やすには、-v を使用します。 オプション、または -vv さらに詳細な出力、または -vvv 出力の最も詳細なレベル:

# tcpdump –i 1 –v
# tcpdump –i 1 -vv
# tcpdump –i 1 –vvv

5.データをファイルにキャプチャ

-w を指定して tcpdump ユーティリティを使用する オプションを使用すると、キャプチャしたデータをファイルに書き込むことができます。これにより、取得したデータを Wireshark などの他のネットワーク分析ツールで読み取ることができます。次の例では、capture.out という名前のファイルにデータをキャプチャします:

# tcpdump –i 1 –v –c2 –w capture.out

6.キャプチャされたデータの読み取り

–r を使用して、キャプチャされたデータをファイルから読み取ることもできます。 オプション:

# tcpdump –r capture_file

tcpdump コマンドのその他の例

tcpdump では、他の多くのオプションと引数を使用できます。以下は、tcpdump ユーティリティの能力を示す具体的な例です。

1. 2 つのホスト間のトラフィックを表示

2 つのホスト (変数 host1 と host2 で表される) 間のすべてのトラフィックを表示するには:

# tcpdump host host1 and host2

2.送信元または宛先ホストからのトラフィックのみを表示

送信元 (src) または宛先 (dst) ホストからのトラフィックのみを表示するには:

# tcpdump src host
# tcpdump dst host

3.特定のプロトコルのトラフィックを表示

特定のプロトコル (tcp、udp、icmp、arp など) のトラフィックのみを表示するには、プロトコルを引数として指定します。

# tcpdump protocol

たとえば、tcp トラフィックのトラフィックのみを表示するには:

# tcpdump tcp

4.送信元ポートまたは宛先ポートに基づくフィルタリング

送信元ポートまたは宛先ポートに基づいてフィルタリングするには:

# tcpdump src port ftp
# tcpdump dst port http

tcpdump ユーティリティは、ブール演算子 (AND、NOT、OR) および演算子のグループ化も受け入れ、ネットワーク データをキャプチャするための複雑なフィルターを作成できます。


Linux
  1. 初心者向けのDNFコマンドの例

  2. ネットワークのトラブルシューティングにSSツールを使用する

  3. scpコマンドを使用する10の実際的な例

  1. Linuxユーザー向けの12のIPコマンド例

  2. Linux での dmsetup コマンドの使用例

  3. Linux での dsniff コマンドの例

  1. LinuxでのTcpdumpコマンド

  2. 初心者向けのLinuxdirコマンド(10例)

  3. 初心者向けのLinuxrmコマンドの説明(8例)