tcpdump
コマンドを使用してパケットをキャプチャする
tcpdumpコマンドとは何ですか
- Tcpdump は、ネットワーク内で送信されるデータ パケットの「ヘッダー」を完全に傍受し、分析を行うことができます。ネットワーク層、プロトコル、ホスト、ネットワーク、またはポートのフィルタリングをサポートし、不要な情報の削除に役立つ and や or、not などの論理ステートメントを提供します。
- Tcpdump は、パケットをキャプチャする機能を備えたコマンドとして理解できます。
使い方
tcpdump コマンドは他の Linux コマンドと似ており、その強力な機能を反映するにはパラメータとともに使用する必要があります。
tcpdump
: デフォルトで有効になっており、tcpdump を直接起動すると、最初のネットワーク インターフェイス上を流れるすべてのパケットが監視されます。tcpdump -i eth1
:-i
ネットワーク インターフェイスを指定できます。any
これは、すべてのネットワーク ポートを監視することを意味します。tcpdump host 210.27.48.1
: 指定したIPのデータパケットを取得しますtcpdump src host 210.27.48.1
tcpdump dst host 210.27.48.1
tcpdump tcp port 23 and host 210.27.48.1
: 指定したポートと指定した IP のデータ パケットを取得しますtcpdump udp port 123
tcpdump -i any tcp port 9080 -A -s 0
tcpdump -i any tcp port 9100 -w data.cap
指定したポートのパケットをファイルにキャプチャします
tcpdump コマンドパラメータの概要
-A
: 各データパケットを ASCII コードで表示します (データパケット内のリンク層ヘッダー情報は表示されません) Web ページデータを含むデータパケットをキャプチャする場合、データを表示するのに便利です-c count
: tcpdump は count パケットを受信した後に終了します-d
: フォーマットされたパケットのマッチ コードを人間が判読できる形式で標準出力に出力し、その後 tcpdump が停止します-dd
: パケットマッチングコードをC言語形式で出力します。-ddd
: パケット一致コードを 10 進形式で出力します。-e
: パケットのデータリンク層ヘッダー情報が各行の印刷出力に含まれます。-i interface
: tcpdump が監視する必要があるインターフェイスを指定します-s snaplen
: tcpdump のパケット キャプチャ長を snaplen に設定します。設定されていない場合、デフォルトは 68 バイトになります (ネットワーク インターフェイス タップをサポートする SunOS シリーズ オペレーティング システムのデフォルトの最小値は 96 です)。IP、ICMP、TCP、および IP の場合は 68 バイトUDP プロトコル パケットは十分ですが、ネーム サービスの場合、NFS サービス関連のデータ パケットによってパケットの切り捨てが発生します。パケットの切り捨てが発生すると、tcpdump の対応する出力行が ''[ |proto]'' と表示されます (proto は実際には次のように表示されます)。長いキャプチャ長 (nt: snaplen は比較的大きい) を使用すると、パケットの処理時間が増加し、tcpdump がキャッシュできるデータ パケットの数が減少することに注意してください。したがって、必要なパケットをキャプチャできることを前提として、キャプチャ長は短いほど良いです。snaplen を 0 に設定すると、tcpdump がパケットをキャプチャするために適切な長さを自動的に選択することになります。-v
: 分析および印刷するときに、詳細な出力を生成します。たとえば、パケットの有効期間、識別子、全長、IP パケットのオプションなどです。これにより、IP または ICMP パケット ヘッダーのチェックサムなど、追加のパケット完全性チェックも有効になります。-vv
: -v よりも詳細な出力を生成します。たとえば、NFS 応答パケットの追加フィールドが出力され、SMB パケットが完全にデコードされます。-vvv
: -vv よりも詳細な出力を生成します。たとえば、Telnet で使用される SB および SE オプションが出力され、Telnet が同時にグラフィカル インターフェイスを使用する場合、対応するグラフィカル オプションが 16 進数で出力されます。-w fileName
: 出力を解析したり印刷したりせずに、パケット データをファイルに直接書き込みます。
なぜ
パケット キャプチャは、問題のトラブルシューティングにおいて非常に重要な最終兵器です。
参考例
パケットキャプチャコマンド:
# 抓所有的网口的tcp 端口是8080的包
tcpdump -i any tcp port 8080 -A -s 0
# 抓所有的网口 端口是514 的包
tcpdump -i any port 514 -nnnvvvv
# 抓包保存到本地文件 syslog.pcap,可放到wireshark分析
tcpdump -i any port 514 -s0 -w./syslog.pcap -nnnvvvv
# 抓取ping包【ping包即ICMP的包】
tcpdump -i any icmp and host 192.168.1.1 -nn -vvv
# 抓取ip是 192.168.1.1的包
tcpdump -i any host 192.168.1.1 -nn -vvv
# 抓取ip是 192.168.1.1 或者端口是2500的包
tcpdump -i any host 192.168.1.1 or udp port 2500 -nn -vvv
# 抓所有的网口udp 端口是4500 的包
tcpdump -i any udp port 4500 -nn -vvv
any localhost ポートを含むすべてのネットワーク ポートをキャプチャします。
-A 文字
-s 0 制限なし
tcpdump -i any -w data.cap すべてのパケットをキャプチャし、Wireshark を通じて分析します。