Linux で tcpdump コマンドを使用してデータ パケットをキャプチャおよび分析する方法の詳細な説明

Linux で tcpdump コマンドを使用してデータ パケットをキャプチャおよび分析する方法の詳細な説明

序文

tcpdump はよく知られたコマンドライン パケット分析ツールです。 tcpdump コマンドを使用してリアルタイムの TCP/IP パケットをキャプチャし、ファイルに保存することもできます。キャプチャされたパケットは、tcpdump コマンドを使用して分析できます。 tcpdump コマンドは、ネットワーク レベルでのトラブルシューティングを行うときに非常に便利です。

tcpdump はほとんどの Linux ディストリビューションで利用可能であり、Debian ベースの Linux の場合は apt コマンドを使用してインストールできます。

# apt install tcpdump -y

RPM ベースの Linux オペレーティング システムでは、次の yum コマンドを使用して tcpdump をインストールできます。

# yum tcpdumpをインストール -y

オプションなしで tcpdump コマンドを実行すると、すべてのインターフェース上のパケットがキャプチャされます。したがって、tcpdump コマンドを停止またはキャンセルするには、ctrl+c と入力します。このチュートリアルでは、さまざまな実用的な例を使用してパケットをキャプチャおよび分析する方法について説明します。

例: 1) 特定のインターフェースからパケットをキャプチャする

オプションなしで tcpdump コマンドを実行すると、すべてのインターフェース上のパケットがキャプチャされます。したがって、特定のインターフェースからのパケットをキャプチャするには、オプション -i に続けてインターフェース名を使用します。

文法:

# tcpdump -i {インターフェース名}

インターフェイス enp0s3 からパケットをキャプチャするとします。

出力は次のようになります。

tcpdump: 詳細な出力は抑制されています。完全なプロトコル デコードには -v または -vv を使用してください。
enp0s3 でリッスン、リンク タイプ EN10MB (イーサネット)、キャプチャ サイズ 262144 バイト
06:43:22.905890 IP compute-0-1.example.com.ssh > 169.144.0.1.39374: フラグ [P.]、シーケンス 21952160:21952540、ack 13537、win 291、オプション [nop、nop、TS 値 26164373 ecr 6580205]、長さ 380
06:43:22.906045 IP compute-0-1.example.com.ssh > 169.144.0.1.39374: フラグ [P.]、シーケンス 21952540:21952760、ack 13537、win 291、オプション [nop、nop、TS 値 26164373 ecr 6580205]、長さ 220
06:43:22.906150 IP compute-0-1.example.com.ssh > 169.144.0.1.39374: フラグ [P.]、シーケンス 21952760:21952980、ack 13537、win 291、オプション [nop、nop、TS 値 26164373 ecr 6580205]、長さ 220
06:43:22.906291 IP 169.144.0.1.39374 > compute-0-1.example.com.ssh: フラグ [.]、ack 21952980、win 13094、オプション [nop、nop、TS val 6580205 ecr 26164373]、長さ 0
06:43:22.906303 IP 169.144.0.1.39374 > compute-0-1.example.com.ssh: フラグ [P.]、シーケンス 13537:13609、ack 21952980、win 13094、オプション [nop、nop、TS 値 6580205 ecr 26164373]、長さ 72
06:43:22.906322 IP compute-0-1.example.com.ssh > 169.144.0.1.39374: フラグ [P.]、シーケンス 21952980:21953200、ack 13537、win 291、オプション [nop、nop、TS 値 26164373 ecr 6580205]、長さ 220
^C
109930 パケットをキャプチャしました
フィルタによって受信されたパケット数 110065
カーネルによってドロップされたパケット 133 件
[[email protected] ~]#

例:2) 特定のインターフェースから特定の数のパケットをキャプチャする

特定のインターフェース (enp0s3 など) から 12 個のパケットをキャプチャしたい場合、これはオプション -c {number} -I {interface name} を使用して簡単に実現できます。

root@compute-0-1 ~]# tcpdump -c 12 -i enp0s3

上記のコマンドは以下に示すような出力を生成します。

N 番号パケットセット tcpdump インターフェース

例:3) tcpdumpで利用可能なすべてのインターフェースを表示する

-D オプションを使用して、tcpdump コマンドで使用可能なすべてのインターフェースを表示します。

[root@compute-0-1 ~]# tcpdump -D
1.enp0s3
2.enp0s8
3.ovsシステム
4.br-int
5.br-tun
6.nflog (Linux ネットフィルター ログ (NFLOG) インターフェース)
7.nfqueue (Linux ネットフィルター キュー (NFQUEUE) インターフェース)
8.usbmon1 (USBバス番号1)
9.usbmon2 (USBバス番号2)
10.qbra692e993-28
11.qvoa692e993-28
12.qvba692e993-28
13.タパ692e993-28
14.vxlan_sys_4789
15.any (すべてのインターフェースでキャプチャする疑似デバイス)
16.lo [ループバック]
[[email protected] ~]#

私は OpenStack コンピューティング ノードの 1 つで tcpdump コマンドを実行しています。そのため、出力には数値インターフェース、ラベル付きインターフェース、ブリッジ、および vxlan インターフェースが表示されます。

例:4) 読み取り可能なタイムスタンプでパケットをキャプチャする (-tttt オプション)

デフォルトでは、人間が判読可能なタイムスタンプは tcpdump コマンドの出力には表示されません。キャプチャした各パケットに人間が判読可能なタイムスタンプを関連付ける場合は、-tttt オプションを使用します。以下に例を示します。

[[email protected] ~]# tcpdump -c 8 -tttt -i enp0s3
tcpdump: 詳細な出力は抑制されています。完全なプロトコル デコードには -v または -vv を使用してください。
enp0s3 でリッスン、リンク タイプ EN10MB (イーサネット)、キャプチャ サイズ 262144 バイト
2018-08-25 23:23:36.954883 IP compute-0-1.example.com.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 1449206247:1449206435、ack 3062020950、win 291、オプション [nop、nop、TS 値 86178422 ecr 21583714]、長さ 188
2018-08-25 23:23:36.955046 IP 169.144.0.1.39406 > compute-0-1.example.com.ssh: フラグ [.]、ack 188、win 13585、オプション [nop、nop、TS val 21583717 ecr 86178422]、長さ 0
2018-08-25 23:23:37.140097 IP controller0.example.com.amqp > compute-0-1.example.com.57818: フラグ [P.]、シーケンス 814607956:814607964、ack 2387094506、win 252、オプション [nop、nop、TS 値 86172228 ecr 86176695]、長さ 8
2018-08-25 23:23:37.140175 IP compute-0-1.example.com.57818 > controller0.example.com.amqp: フラグ [.]、ack 8、win 237、オプション [nop、nop、TS val 86178607 ecr 86172228]、長さ 0
2018-08-25 23:23:37.355238 IP compute-0-1.example.com.57836 > controller0.example.com.amqp: フラグ [P.]、シーケンス 1080415080:1080417400、ack 1690909362、win 237、オプション [nop、nop、TS 値 86178822 ecr 86163054]、長さ 2320
2018-08-25 23:23:37.357119 IP controller0.example.com.amqp > compute-0-1.example.com.57836: フラグ [.]、ack 2320、win 1432、オプション [nop、nop、TS val 86172448 ecr 86178822]、長さ 0
2018-08-25 23:23:37.357545 IP controller0.example.com.amqp > compute-0-1.example.com.57836: フラグ [P.]、シーケンス 1:22、ack 2320、win 1432、オプション [nop、nop、TS 値 86172449 ecr 86178822]、長さ 21
2018-08-25 23:23:37.357572 IP compute-0-1.example.com.57836 > controller0.example.com.amqp: フラグ [.]、ack 22、win 237、オプション [nop、nop、TS val 86178825 ecr 86172449]、長さ 0
8パケットをキャプチャ
フィルタによって受信されたパケット 134 件
カーネルによってドロップされたパケット69個
[[email protected] ~]#

例:5) パケットをキャプチャしてファイルに保存する (-w オプション)

tcpdump コマンドの -w オプションを使用して、キャプチャした TCP/IP パケットをファイルに保存し、将来さらに分析できるようにします。

文法:

# tcpdump -w ファイル名.pcap -i {インターフェース名}

注意:ファイル拡張子は .pcap である必要があります。

enp0s3 インターフェイスによってキャプチャされたパケットを enp0s3-26082018.pcap という名前のファイルに保存するとします。

[root@compute-0-1 ~]# tcpdump -w enp0s3-26082018.pcap -i enp0s3

上記のコマンドは以下に示すような出力を生成します。

[root@compute-0-1 ~]# tcpdump -w enp0s3-26082018.pcap -i enp0s3
tcpdump: enp0s3 でリッスン、リンク タイプ EN10MB (イーサネット)、キャプチャ サイズ 262144 バイト
^C841 パケットをキャプチャ
フィルタによって受信されたパケット数 845
カーネルによってドロップされたパケット数: 0
[root@compute-0-1 ~]# ls
アナコンダ-ks.cfg enp0s3-26082018.pcap
[ルート@compute-0-1 ~]#

N バイトより大きいパケットをキャプチャして保存します。

[root@compute-0-1 ~]# tcpdump -w enp0s3-26082018-2.pcap 1024より大きい

サイズが N バイト未満のパケットをキャプチャして保存します。

[root@compute-0-1 ~]# tcpdump -w enp0s3-26082018-3.pcap 1024未満

例:6) 保存されたファイルからパケットを読み取る (-r オプション)

上記の例では、キャプチャしたパケットをファイルに保存しました。これらのパケットは、オプション -r を使用してファイルから読み取ることができます。例は次のとおりです。

[root@compute-0-1 ~]# tcpdump -r enp0s3-26082018.pcap

人間が読めるタイムスタンプ付きのパケットの内容を読み取ります。

[root@compute-0-1 ~]# tcpdump -tttt -r enp0s3-26082018.pcap
ファイル enp0s3-26082018.pcap から読み取り、リンク タイプ EN10MB (イーサネット)
2018-08-25 22:03:17.249648 IP compute-0-1.example.com.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 1426167803:1426167927、ack 3061962134、win 291、オプション
[nop,nop,TS 値 81358717 ecr 20378789]、長さ 124
2018-08-25 22:03:17.249840 IP 169.144.0.1.39406 > compute-0-1.example.com.ssh: フラグ [.]、ack 124、win 564、オプション [nop、nop、TS val 20378791 ecr 81358
717]、長さ0
2018-08-25 22:03:17.454559 IP controller0.example.com.amqp > compute-0-1.example.com.57836: フラグ [.]、ack 1079416895、win 1432、オプション [nop、nop、TS v
al 81352560 ecr 81353913]、長さ 0
2018-08-25 22:03:17.454642 IP compute-0-1.example.com.57836 > controller0.example.com.amqp: フラグ [.]、ack 1、win 237、オプション [nop、nop、TS 値 8135892
2 ecr 81317504]、長さ 0
2018-08-25 22:03:17.646945 IP compute-0-1.example.com.57788 > controller0.example.com.amqp: フラグ [.]、シーケンス 106760587:106762035、ack 688390730、win 237
、オプション [nop、nop、TS val 81359114 ecr 81350901]、長さ 1448
2018-08-25 22:03:17.647043 IP compute-0-1.example.com.57788 > controller0.example.com.amqp: フラグ [P.]、シーケンス 1448:1956、ack 1、win 237、オプション [nop、no
p、TS val 81359114 ecr 81350901]、長さ 508
2018-08-25 22:03:17.647502 IP controller0.example.com.amqp > compute-0-1.example.com.57788: フラグ [.]、ack 1956、win 1432、オプション [nop、nop、TS 値 813
52753 ecr 81359114]、長さ 0
.............................................................................................................................

例:7) 特定のインターフェース上のIPアドレスパケットのみをキャプチャする (-n オプション)

tcpdump コマンドの -n オプションを使用すると、特定のインターフェース上の IP アドレス パケットのみをキャプチャできます。以下に例を示します。

[root@compute-0-1 ~]# tcpdump -n -i enp0s3

上記のコマンドの出力は次のようになります。

tcpdump: 詳細な出力は抑制されています。完全なプロトコル デコードには -v または -vv を使用してください。
enp0s3 でリッスン、リンク タイプ EN10MB (イーサネット)、キャプチャ サイズ 262144 バイト
22:22:28.537904 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 1433301395:1433301583、ack 3061976250、win 291、オプション [nop、nop、TS 値 82510005 ecr 20666610]、長さ 188
22:22:28.538173 IP 169.144.0.1.39406 > 169.144.0.20.ssh: フラグ [.]、ack 188、win 9086、オプション [nop、nop、TS val 20666613 ecr 82510005]、長さ 0
22:22:28.538573 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 188:552、ack 1、win 291、オプション [nop、nop、TS 値 82510006 ecr 20666613]、長さ 364
22:22:28.538736 IP 169.144.0.1.39406 > 169.144.0.20.ssh: フラグ [.]、ack 552、win 9086、オプション [nop、nop、TS val 20666613 ecr 82510006]、長さ 0
22:22:28.538874 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 552:892、ack 1、win 291、オプション [nop、nop、TS 値 82510006 ecr 20666613]、長さ 340
22:22:28.539042 IP 169.144.0.1.39406 > 169.144.0.20.ssh: フラグ [.]、ack 892、win 9086、オプション [nop、nop、TS val 20666613 ecr 82510006]、長さ 0
22:22:28.539178 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 892:1232、ack 1、win 291、オプション [nop、nop、TS 値 82510006 ecr 20666613]、長さ 340
22:22:28.539282 IP 169.144.0.1.39406 > 169.144.0.20.ssh: フラグ [.]、ack 1232、win 9086、オプション [nop、nop、TS val 20666614 ecr 82510006]、長さ 0
22:22:28.539479 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 1232:1572、ack 1、win 291、オプション [nop、nop、TS 値 82510006 ecr 20666614]、長さ 340
22:22:28.539595 IP 169.144.0.1.39406 > 169.144.0.20.ssh: フラグ [.]、ack 1572、win 9086、オプション [nop、nop、TS val 20666614 ecr 82510006]、長さ 0
22:22:28.539760 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 1572:1912、ack 1、win 291、オプション [nop、nop、TS 値 82510007 ecr 20666614]、長さ 340
.............................................................................

tcpdump コマンドで -c および -N オプションを使用して、N 個の IP アドレスのパケットをキャプチャすることもできます。

[root@compute-0-1 ~]# tcpdump -c 25 -n -i enp0s3

例:8) 特定のインターフェース上のTCPパケットのみをキャプチャする

tcpdump コマンドでは、tcp オプションを使用して TCP パケットのみをキャプチャできます。

[root@compute-0-1 ~]# tcpdump -i enp0s3 tcp
tcpdump: 詳細な出力は抑制されています。完全なプロトコル デコードには -v または -vv を使用してください。
enp0s3 でリッスン、リンク タイプ EN10MB (イーサネット)、キャプチャ サイズ 262144 バイト
22:36:54.521053 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 1433336467:1433336655、ack 3061986618、win 291、オプション [nop、nop、TS 値 83375988 ecr 20883106]、長さ 188
22:36:54.521474 IP 169.144.0.1.39406 > 169.144.0.20.ssh: フラグ [.]、ack 188、win 9086、オプション [nop、nop、TS val 20883109 ecr 83375988]、長さ 0
22:36:54.522214 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 188:552、ack 1、win 291、オプション [nop、nop、TS 値 83375989 ecr 20883109]、長さ 364
22:36:54.522508 IP 169.144.0.1.39406 > 169.144.0.20.ssh: フラグ [.]、ack 552、win 9086、オプション [nop、nop、TS val 20883109 ecr 83375989]、長さ 0
22:36:54.522867 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 552:892、ack 1、win 291、オプション [nop、nop、TS 値 83375990 ecr 20883109]、長さ 340
22:36:54.523006 IP 169.144.0.1.39406 > 169.144.0.20.ssh: フラグ [.]、ack 892、win 9086、オプション [nop、nop、TS val 20883109 ecr 83375990]、長さ 0
22:36:54.523304 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 892:1232、ack 1、win 291、オプション [nop、nop、TS 値 83375990 ecr 20883109]、長さ 340
22:36:54.523461 IP 169.144.0.1.39406 > 169.144.0.20.ssh: フラグ [.]、ack 1232、win 9086、オプション [nop、nop、TS val 20883110 ecr 83375990]、長さ 0
22:36:54.523604 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 1232:1572、ack 1、win 291、オプション [nop、nop、TS 値 83375991 ecr 20883110]、長さ 340
.............................................................................................................................................................

例:9) 特定のインターフェース上の特定のポートからパケットをキャプチャする

tcpdump コマンドを使用すると、特定のインターフェース enp0s3 上の特定のポート (たとえば、22) からパケットをキャプチャできます。

文法:

# tcpdump -i {インターフェース名} port {ポート番号}
[root@compute-0-1 ~]# tcpdump -i enp0s3 ポート22
tcpdump: 詳細な出力は抑制されています。完全なプロトコル デコードには -v または -vv を使用してください。
enp0s3 でリッスン、リンク タイプ EN10MB (イーサネット)、キャプチャ サイズ 262144 バイト
22:54:45.032412 IP compute-0-1.example.com.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 1435010787:1435010975、ack 3061993834、win 291、オプション [nop、nop、TS 値 84446499 ecr 21150734]、長さ 188
22:54:45.032631 IP 169.144.0.1.39406 > compute-0-1.example.com.ssh: フラグ [.]、ack 188、win 9131、オプション [nop、nop、TS val 21150737 ecr 84446499]、長さ 0
22:54:55.037926 IP compute-0-1.example.com.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 188:576、ack 1、win 291、オプション [nop、nop、TS 値 84456505 ecr 21150737]、長さ 388
22:54:55.038106 IP 169.144.0.1.39406 > compute-0-1.example.com.ssh: フラグ [.]、ack 576、win 9154、オプション [nop、nop、TS val 21153238 ecr 84456505]、長さ 0
22:54:55.038286 IP compute-0-1.example.com.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 576:940、ack 1、win 291、オプション [nop、nop、TS 値 84456505 ecr 21153238]、長さ 364
22:54:55.038564 IP 169.144.0.1.39406 > compute-0-1.example.com.ssh: フラグ [.]、ack 940、win 9177、オプション [nop、nop、TS val 21153238 ecr 84456505]、長さ 0
22:54:55.038708 IP compute-0-1.example.com.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 940:1304、ack 1、win 291、オプション [nop、nop、TS 値 84456506 ecr 21153238]、長さ 364
..............................................................................................................................

例:10) 特定のインターフェース上の特定の送信元IPからのパケットをキャプチャする

tcpdump コマンドでは、src キーワードに続いて IP アドレスを使用すると、特定の送信元 IP からのパケットをキャプチャできます。

文法:

# tcpdump -n -i {インターフェース名} src {IPアドレス}

以下に例を示します。

[root@compute-0-1 ~]# tcpdump -n -i enp0s3 src 169.144.0.10
tcpdump: 詳細な出力は抑制されています。完全なプロトコル デコードには -v または -vv を使用してください。
enp0s3 でリッスン、リンク タイプ EN10MB (イーサネット)、キャプチャ サイズ 262144 バイト
23:03:45.912733 IP 169.144.0.10.amqp > 169.144.0.20.57800: フラグ [.]、ack 526623844、win 243、オプション [nop、nop、TS val 84981008 ecr 84982372]、長さ 0
23:03:46.136757 IP 169.144.0.10.amqp > 169.144.0.20.57796: フラグ [.]、ack 2535995970、win 252、オプション [nop、nop、TS val 84981232 ecr 84982596]、長さ 0
23:03:46.153398 IP 169.144.0.10.amqp > 169.144.0.20.57798: フラグ [.]、ack 3623063621、win 243、オプション [nop、nop、TS val 84981248 ecr 84982612]、長さ 0
23:03:46.361160 IP 169.144.0.10.amqp > 169.144.0.20.57802: フラグ [.]、ack 2140263945、win 252、オプション [nop、nop、TS val 84981456 ecr 84982821]、長さ 0
23:03:46.376926 IP 169.144.0.10.amqp > 169.144.0.20.57808: フラグ [.]、ack 175946224、win 252、オプション [nop、nop、TS val 84981472 ecr 84982836]、長さ 0
23:03:46.505242 IP 169.144.0.10.amqp > 169.144.0.20.57810: フラグ [.]、ack 1016089556、win 252、オプション [nop、nop、TS val 84981600 ecr 84982965]、長さ 0
23:03:46.616994 IP 169.144.0.10.amqp > 169.144.0.20.57812: フラグ [.]、ack 832263835、win 252、オプション [nop、nop、TS val 84981712 ecr 84983076]、長さ 0
23:03:46.809344 IP 169.144.0.10.amqp > 169.144.0.20.57814: フラグ [.]、ack 2781799939、win 252、オプション [nop、nop、TS val 84981904 ecr 84983268]、長さ 0
23:03:46.809485 IP 169.144.0.10.amqp > 169.144.0.20.57816: フラグ [.]、ack 1662816815、win 252、オプション [nop、nop、TS val 84981904 ecr 84983268]、長さ 0
23:03:47.033301 IP 169.144.0.10.amqp > 169.144.0.20.57818: フラグ [.]、ack 2387094362、win 252、オプション [nop、nop、TS val 84982128 ecr 84983492]、長さ 0
^C
10パケットをキャプチャ
フィルタによって受信されたパケット数 12
カーネルによってドロップされたパケット数: 0

例: 11) 特定のインターフェース上の特定の宛先IPからのパケットをキャプチャする

文法:

# tcpdump -n -i {インターフェース名} dst {IPアドレス}

[root@compute-0-1 ~]# tcpdump -n -i enp0s3 dst 169.144.0.1
tcpdump: 詳細な出力は抑制されています。完全なプロトコル デコードには -v または -vv を使用してください。
enp0s3 でリッスン、リンク タイプ EN10MB (イーサネット)、キャプチャ サイズ 262144 バイト
23:10:43.520967 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 1439564171:1439564359、ack 3062005550、win 291、オプション [nop、nop、TS 値 85404988 ecr 21390356]、長さ 188
23:10:43.521441 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 188:408、ack 1、win 291、オプション [nop、nop、TS 値 85404988 ecr 21390359]、長さ 220
23:10:43.521719 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 408:604、ack 1、win 291、オプション [nop、nop、TS 値 85404989 ecr 21390359]、長さ 196
23:10:43.521993 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 604:800、ack 1、win 291、オプション [nop、nop、TS 値 85404989 ecr 21390359]、長さ 196
23:10:43.522157 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 800:996、ack 1、win 291、オプション [nop、nop、TS 値 85404989 ecr 21390359]、長さ 196
23:10:43.522346 IP 169.144.0.20.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 996:1192、ack 1、win 291、オプション [nop、nop、TS 値 85404989 ecr 21390359]、長さ 196
..............................................................................................

例:12) 2つのホスト間のTCPパケット通信をキャプチャする

2つのホスト169.144.0.1と169.144.0.20間のTCPパケットをキャプチャしたいとします。例は次のとおりです。

[root@compute-0-1 ~]# tcpdump -w two-host-tcp-comm.pcap -i enp0s3 tcp および \(ホスト 169.144.0.1 またはホスト 169.144.0.20\)

tcpdump コマンドを使用して、2 つのホスト間の SSH パケット フローのみをキャプチャします。

[root@compute-0-1 ~]# tcpdump -w ssh-comm-two-hosts.pcap -i enp0s3 src 169.144.0.1 およびポート 22 および dst 169.144.0.20 およびポート 22

例:13) 2つのホスト間のUDPネットワークパケットをキャプチャする(往復)

文法:

# tcpdump -w -s -i udp および \(ホストおよびホスト \)

[root@compute-0-1 ~]# tcpdump -w two-host-comm.pcap -s 1000 -i enp0s3 udp および \(ホスト 169.144.0.10 およびホスト 169.144.0.20\)

例:14) 16進数とASCII形式でパケットをキャプチャする

tcpdump コマンドを使用すると、TCP/IP パケットを ASCII 形式と 16 進形式でキャプチャできます。

-A オプションを使用して ASCII 形式でパケットをキャプチャする例は次のとおりです。

[root@compute-0-1 ~]# tcpdump -c 10 -A -i enp0s3
tcpdump: 詳細な出力は抑制されています。完全なプロトコル デコードには -v または -vv を使用してください。
enp0s3 でリッスン、リンク タイプ EN10MB (イーサネット)、キャプチャ サイズ 262144 バイト
00:37:10.520060 IP compute-0-1.example.com.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 1452637331:1452637519、ack 3062125586、win 333、オプション [nop、nop、TS 値 90591987 ecr 22687106]、長さ 188
E...[root@compute-0-1 @.............V.|...T....MT......
.fR..Z-....b.:..Z5...{.'p....]."}...Z..9.?......."root@compute-0-1 <.....V..C.....{,...OKP.2.*...`..-sS..1S...........:.O[.....{G..%ze.Pn.T..N.... ....qB..5...n.....`...:=...[..0....k.....S.:..5!.9..G....!-..'..
00:37:10.5203​​19 IP 169.144.0.1.39406 > compute-0-1.example.com.ssh: フラグ [.]、ack 188、win 13930、オプション [nop、nop、TS val 22687109 ecr 90591987]、長さ 0
ルート@compute-0-1 @.|+..............TV}O..6j.d.....
.Z-..fR.
00:37:11.687543 IP controller0.example.com.amqp > compute-0-1.example.com.57800: フラグ [.]、ack 526624548、win 243、オプション [nop、nop、TS val 90586768 ecr 90588146]、長さ 0
root@compute-0-1@.!L...
.....(..g....c.$...........
.f>..fC.
00:37:11.687612 IP compute-0-1.example.com.57800 > controller0.example.com.amqp: フラグ [.]、ack 1、win 237、オプション [nop、nop、TS val 90593155 ecr 90551716]、長さ 0
root@compute-0-1@..........
...(.c.$g.......Se.....
.fW..e..
...............................................................................................................................................................................

16 進数と ASCII 形式の両方でパケットをキャプチャするには、-XX オプションを使用します。

[root@compute-0-1 ~]# tcpdump -c 10 -XX -i enp0s3
tcpdump: 詳細な出力は抑制されています。完全なプロトコル デコードには -v または -vv を使用してください。
enp0s3 でリッスン、リンク タイプ EN10MB (イーサネット)、キャプチャ サイズ 262144 バイト
00:39:15.124363 IP compute-0-1.example.com.ssh > 169.144.0.1.39406: フラグ [P.]、シーケンス 1452640859:1452641047、ack 3062126346、win 333、オプション [nop、nop、TS 値 90716591 ecr 22718257]、長さ 188
0x0000: 0a00 2700 0000 0800 27f4 f935 0800 4510 ..'.....'..5..E.
0x0010: 00f0 5bc6 4000 4006 8afc a990 0014 a990 ..[root@compute-0-1@.........
0x0020: 0001 0016 99ee 5695 8a5b b684 570a 8018 ......V..[..W...
0x0030: 014d 5418 0000 0101 080a 0568 39af 015a .MT......h9..Z
0x0040: a731 adb7 58b6 1a0f 2006 df67 c9b6 4479 .1..X......g..Dy
0x0050: 19fd 2c3d 2042 3313 35b9 a160 fa87 d42c ..,=.B3.5..`...,
0x0060: 89a9 3d7d dfbf 980d 2596 4f2a 99ba c92a ..=}....%.O*...*
0x0070: 3e1e 7bf7 3af2 a5cc ee4f 10bc 7dfc 630d >.{.:....O..}.c.
0x0080: 898a 0e16 6825 56c7 b683 1de4 3526 ff04 ....h%V.....5&..
0x0090: 68d1 4f7d babd 27ba 84ae c5d3 750b 01bd hO}..'.....u...
0x00a0: 9c43 e10a 33a6 8df2 a9f0 c052 c7ed 2ff5 .C..3......R../.
0x00b0: bfb1 ce84 edfc c141 6dad fa19 0702 62a7 .......Am.....b.
0x00c0: 306c db6b 2eea 824e eea5 acd7 f92e 6de3 0l.k...N......m.
0x00d0: 85d0 222d f8bf 9051 2c37 93c8 506d 5cb5 .."-...Q,7..Pm\.
0x00e0: 3b4a 2a80 d027 49f2 c996 d2d9 a9eb c1c4 ;J*..'私は.........
0x00f0: 7719 c615 8486 d84c e42d 0ba3 698c w......L.-..i.
00:39:15.124648 IP 169.144.0.1.39406 > compute-0-1.example.com.ssh: フラグ [.]、ack 188、win 13971、オプション [nop、nop、TS val 22718260 ecr 90716591]、長さ 0
0x0000: 0800 27f4 f935 0a00 2700 0000 0800 4510 ..'..5..'.....E.
0x0010: 0034 6b70 4000 4006 7c0e a990 0001 a990 ルート@compute-0-1@.|.......
0x0020: 0014 99ee 0016 b684 570a 5695 8b17 8010 ........WV....
0x0030: 3693 7c0e 0000 0101 080a 015a a734 0568 6.|......Z.4.h
0x0040: 39af
..............................................................................

この記事はこれで終わりです。tcpdump コマンドを使用して TCP/IP パケットをキャプチャおよび分析する方法を理解していただけたら幸いです。フィードバックやコメントをぜひお寄せください。

出典: https://www.linuxtechi.com/capture-analyze-packets-tcpdump-command-linux/

プラディープ・クマール

トピック: lujun9972

翻訳者: ypingcn

校正: wxy

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • Linux システムで tcpdump を使用してパケットをキャプチャする方法
  • Linux での tcpdump コマンド例の詳細な説明
  • Linux コマンドラインでパケットをキャプチャするために tcpdump を使用するいくつかの機能
  • tcpdump を使用してパケットをキャプチャする Linux の基本学習のサンプル コード
  • Linux での tcpdump コマンド例の詳細な説明
  • Linux で tcpdump を使用してパケットをキャプチャする方法
  • Linux で tcpdump コマンドを使用して特定のネットワーク データ パケットを監視する方法
  • Linux tcpdump コマンドの使用法の詳細な分析
  • Linux tcpdump操作コマンドの詳細な説明
  • Linux での tcpdump コマンドの詳細な分析と使用方法

<<:  Vue データの応答性の概要

>>:  MySQL 学習ノート: データ エンジン

推薦する

Docker 階層化パッケージを使用して Spring Boot を設定する方法

Spring Boot プロジェクトでは、Docker コンテナ、jar、war の階層化パッケージ...

React仮想リストの実装

目次1. 背景2. バーチャルリストとは何か3. 関連概念の紹介4. 仮想リストの実装4.1 ドライ...

CSS 属性を使用してマウス イベントをブロックする方法 (マウス クリックは上位の要素を貫通する可能性があります)

由来: 数日前、テスターから写真を見るという要件が送られてきました。 この要件を見たとき、私は少し混...

display:olck/none を使用してメニューバーを作成する方法

display:bolck/none によるメニューバーの完成の効果 図 1:まず、完成したエフェク...

CSSは下部のタップバー機能を実装します

現在多くの携帯電話には、下部のタブバーを切り替える機能があります。私も最近、同様の機能を見つけました...

Docker Toolboxを完全にアンインストールする方法

Docker Toolbox は、Windows 10 Professional より前のバージョン...

Linuxコマンド履歴の調整方法の詳細な説明

Linux システムの bash history コマンドは、以前に実行したコマンドを記憶し、再入力...

jQueryはシンプルなボタンの色の変更を実装します

HTML と CSS で、ボタンの色を設定したいとします。 目的の効果は得られますが、プロセスはかな...

Win10 に Tomcat サーバーをインストールし、環境変数を構成する詳細なチュートリアル (画像とテキスト)

目次JDKをダウンロードしてインストールするTomcat 圧縮パッケージをダウンロードTomcatの...

MySQL データベース開発仕様 [推奨]

最近、問題のある新しい SQL が本番データベースに入力される数を最小限に抑えるために、開発仕様を整...

Vueプラグインの書き方を説明する記事

目次プラグインとはプラグインの作成プラグインの使用要約するプラグインとはVue フレームワークでは、...

Xtrabackup を使用して MySQL をバックアップおよび復元する方法

目次1. バックアップ1.1 万全の準備1.2 追加の準備2 バックアップとリカバリ2.1 データの...

MySQL の NULL 値に関する体験談と分析チュートリアルシリーズ

目次1. テストデータ2. ヌル値による不便3. スペース、空の値、null をどのように判断すれば...

Web コンポーネントの内部イベント コールバックと問題点の分析

目次前面に書かれたWC とは何でしょうか?現在の欠陥1. コンポーネント内部イベントのコールバック2...