Linux での tcpdump コマンド例の詳細な説明

Linux での tcpdump コマンド例の詳細な説明

序文

簡単に言えば、tcpdump は、ネットワーク上のトラフィックをダンプし、ユーザーの定義に従ってネットワーク上のデータ パケットを傍受するパケット分析ツールです。 Tcpdump は、ネットワークで送信されるデータ パケットの「ヘッダー」を完全に傍受し、分析を提供できます。ネットワーク層、プロトコル、ホスト、ネットワーク、またはポートのフィルタリングをサポートし、and、or、not などの論理ステートメントを提供して、不要な情報を削除します。

tcpdump コマンドといえば、私が参加した中国移動内モンゴル支社の第 3 世代 CRM システムの開発と実装について触れなければなりません。記憶が正しければ、2016 年のはずです。私は、10086 カスタマー サービス システム全体のセルフサービス チャネルの全体的な変革を単独で担当していました。システム ストレス テストのフェーズでは、インターフェイス プラットフォームを呼び出すときに常にタイムアウトが発生していました。その後、この問題はますます深刻になり、同時に短期ホールチャンネルとCBOSSチャンネルもこの問題を報告しました。このとき、この問題は大ボスの注目を集め、その後各方面の専門家が相談しました。こうした大規模なプロジェクトでは、専門家協議には必ず一つの特徴があり、それは専門家が指示を出し、弟分が作業を行うというものです。当時、私はその弟分でした。

さて、専門家が話してくれたので、まずはパケットをキャプチャしてみましょう。これが、私がパケット キャプチャ作業を開始し、tcpdump を包括的に理解するきっかけとなりました。

まず、tcpdump は非常に強力なコマンドであることを述べておく必要があります。その強力な機能は、このコマンドの使用が非常に複雑であることを意味します。つまり、次に整理する内容がたくさんあるということです。 tcpdump コマンド全体を習得したい場合は、少し辛抱して記事全体を読む必要があります。よし、行こう!

コマンドの紹介

Tcpdump は、Linux プラットフォーム上で実行される強力なネットワーク パケット キャプチャ ツールです。 tcpdump の使い方に慣れると、ネットワーク データの分析とデバッグに役立ちます。ただし、tcpdump を使いこなすには、ネットワーク メッセージ (TCP/IP プロトコル) についてある程度理解している必要があります。ただし、単純な使用であれば、基本的なネットワークの概念があれば十分です。

インターネット上のシステム管理者にとって必須の定番ツールである tcpdump は、その強力な機能と柔軟な傍受戦略により、ネットワークを分析して問題をトラブルシューティングするすべての上級システム管理者にとって必須のツールの 1 つになりました。実際の作業では、このコマンドを root 権限で実行する必要があります。

tcpdump は非常に複雑なコマンドです。そのすべての側面を理解するのは簡単ではありませんし、お勧めできません。重要なのは、日常業務で問題を解決するためにそれを使用できることです。したがって、次の要約では、実際の業務に焦点を当て、実際の業務でよく使用されるいくつかの使用法を整理します。あまり一般的ではない使用法については、基本的にここでは取り上げません。将来、業務で使用される場合は、ここで更新します。

詳細なコマンドの説明 以下は、tcpdump のよく使用されるオプションの概要です。

  • -s number: デフォルトでは、tcpdump は最初の 96 バイトのみをキャプチャします。メッセージの内容すべてをキャプチャする場合は、このオプションを使用する必要があります。number はキャプチャするバイト数です。0 の場合は、メッセージの内容全体をキャプチャすることを意味します。
  • -nn: ドメイン名を解決せず、IP アドレスを直接表示することを示します。このオプションは、netstat コマンドでも使用できます。
  • -X: 16 進数と ASCII を使用してメッセージの内容を同時に表示します。
  • -S: 相対番号ではなく絶対シーケンス番号を表示します。
  • -i: 監視するネットワーク カードを指定します。-i any の場合は、すべてのネットワーク カードを監視することを意味します。
  • -v、-vv、-vvv: より詳細な情報を表示します。
  • -c number: 指定された数のメッセージを傍受して終了します。
  • -w: 監視されたデータ パケットをファイルに書き込み、分析や印刷を行わずに保存します。
  • -A: すべてのメッセージ データを ASCII のみで印刷します。-X オプションと一緒に使用しないでください。 HTTPリクエストを傍受する場合は、sudo tcpdump -nSA port 80を使用できます。

tcpdump コマンドには多くのオプションがありますが、よく使用されるオプションは上記のものだけです。ここでは、使用例に焦点を当て、使用例を通じて tcpdump コマンドを学習します。

フィルター

詳細な使用例を始める前に、tcpdump の基本的な理論的知識を習得する必要があります。まずはフィルターについて説明しましょう。

サーバー上には異常に多くのネットワーク メッセージがあります。多くの場合、特定の問題に関連するデータ メッセージのみに注目し、これらの有用なメッセージはほんの一部に過ぎません。メッセージの海に迷い込まないようにするには、tcpdump が提供する柔軟で強力なフィルターについて学ぶことが非常に重要です。

フィルターは、type、dir、proto の 3 つのカテゴリに簡単に分類することもできます。

タイプ: 主にフィルタリングされたメッセージのソース タイプを区別するために使用されます。主にホスト ホスト メッセージ、ネット ネットワーク セグメント メッセージ、およびポート指定ポート メッセージで構成されます。

dir: メッセージの送信元アドレスと宛先アドレスのみをフィルタリングします。主に src 送信元アドレスと dst 宛先アドレスが含まれます。

proto: メッセージのプロトコル タイプのみをフィルターします。tcp、udp、icmp などをサポートします。proto キーワードは省略できます。

  • tcpdump -i eth1 arp
  • tcpdump -i eth1 ip
  • tcpdump -i eth1 tcp
  • tcpdump -i eth1 udp
  • tcpdump -i eth1 icmp

これらのフィルターは、tcpdump コマンドを使用するときに不可欠です。

条件の組み合わせ

広大なネットワークの中で、必要なネットワーク パッケージを見つけるのは依然として困難です。必要なネットワーク パケットをキャプチャするには、パケット キャプチャ コマンドに含める条件を厳しくすればするほど、キャプチャする無関係なパケットが少なくなります。したがって、パケットをキャプチャするときには、「and」(and &&)、「or」(or、||)、「not」(not、!) を使用して複数の条件を組み合わせることができます。これは、特定の条件に基づいてネットワーク パケットを分析する必要がある場合に非常に便利です。

使用事例

コマンド: tcpdump -i eth1

説明: 指定されたネットワークインターフェースのデータパケットを監視します

コマンド: tcpdump host 210.27.48.3

説明: ホスト 210.27.48.3 によって送受信されたすべてのデータ パケットを傍受します。

コマンド: tcpdump host 210.27.48.4 and (210.27.48.5 or 210.27.48.6)

説明: 210.27.48.3 ホストと 210.27.48.5 または 210.27.48.6 ホスト間のすべてのデータ パケットを傍受します。

コマンド: tcpdump net 192.168.1.0/24

説明: ネットワーク全体のデータパケットを傍受する 192.168.1.0/24

コマンド: tcpdump -i eth0 src host 210.27.48.3

説明: eth0 ネットワーク カード上の送信元アドレス 210.27.48.3 のすべてのネットワーク パケットを監視します。

コマンド: tcpdump -i eth0 dst host 210.27.48.3

説明: 宛先アドレスが 210.27.48.3 である eth0 ネットワーク カード上のすべてのネットワーク パケットを監視します。

コマンド: tcpdump tcp port 23 and host 210.27.48.3

説明: ホスト 210.27.48.3 のポート 23 を使用してアプリケーションによって送受信されたすべての TCP プロトコル パケットを取得します。

コマンド: tcpdump udp port 123

説明: ローカルマシンのポート123で送受信されたすべてのUDPプロトコルパケットを取得します。

コマンド: tcpdump src host 10.126.1.222 and dst net 10.126.1.0/24

説明: 傍受された送信元アドレスは 10.126.1.222 で、宛先アドレスはネットワーク全体の 10.126.1.0/24 です。

コマンド: tcpdump -i eth0 -s0 -G 60 -Z root -w %Y_%m%d_%H%M_%S.pcap

注: メッセージをキャプチャした後、指定された時間間隔で保存します。-G オプションの後に秒単位の時間が続きます。上記のコマンドは 60 秒ごとにファイルを保存します。

コマンド: tcpdump -i eth0 -s0 -C 1 -Z root -w eth0Packet.pcap

注: パケットをキャプチャした後、指定されたパケット サイズに従って保存します。-C オプションの後にファイル サイズ (MB 単位) が続きます。上記のコマンドは、パケット キャプチャ ファイルが 1MB に達すると、新しいファイルを使用して新しくキャプチャされたパケットを保存します。

前述のように、tcpdump はパケットをキャプチャした後に対応するファイルを生成しますが、このファイルをどのように分析すればよいでしょうか?はい、「Wireshark」というソフトウェアがあり、tcpdump と完全に組み合わせて視覚的な分析インターフェイスを提供できます。ご興味があれば、ぜひ学んでみてください。後で時間があれば、「Wireshark」の入門シリーズも企画する予定です。

要約する

整理するのに長い時間がかかりましたが、ようやく完了しました。もちろん、tcpdump のような複雑なコマンドについて非常に包括的な概要を提供したわけではありませんが、ここでまとめた内容は、仕事で tcpdump コマンドを使用する際に影響することは絶対にありません。やはり「80/20 ルール」です。複雑なコマンドの場合、よく使われる機能は 20% しかなく、残りの 80% は比較的知られていない機能、または仕事でめったに使用されない機能です。

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

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

<<:  CocosCreatorゲームにおける魚群アルゴリズムの詳細な説明

>>:  MySQLにおける静的変数の役割の詳細な説明

推薦する

DockerはCMDまたはENTRYPOINTコマンドを使用して複数のサービスを同時に起動します

要件: Celery は Django に導入されています。Django プロジェクトを開始するとき...

MySQL における SQL ページングクエリのいくつかの実装方法と利点と欠点

【SQL】SQLページングクエリの概要開発プロセスではページングが必要になることがよくあります。今日...

1 つの記事で Vue ミドルウェア パイプラインを学ぶ

SPA を構築する場合、多くの場合、特定のルートを保護する必要があります。たとえば、認証されたユーザ...

jQueryとCSSを組み合わせてトップに戻る機能を実現

CSS操作 CS $("").css(名前|プロ|[,値|関数]) 位置$(&q...

CSS3 を使用して左上または右上隅にリマインダー ドットを表示するサンプル コード

効果画像(三角形をご希望の場合は、ここをクリックしてください): コード: <html>...

VSCode+CMake+Clang+GCC 環境構築チュートリアル (Win10 の場合)

大学院入試に備えて、C/C++ を使って基本的なデータ構造とアルゴリズムを実装する予定です。アルゴリ...

カラーブロックレポート効果の動的な表示を実現する HTML (サンプルコード)

HTMLカラーブロックを使用してデータを動的に表示する <スタイル タイプ="te...

VMware に Linux システム (Redhat8) と仮想マシンのネットワーク構成をインストールする方法

目次1. VMwareをインストールする1.1 VMwareworkstationsをダウンロードし...

nginx keepaliveの具体的な使い方

http1.1 プロトコルのデフォルトのリクエスト ヘッダーでは、図に示すように、デフォルトで ke...

uni-app で scss を使用するサンプル コード

遭遇した落とし穴私は午後中ずっと、uni-app で scss を使用する際の落とし穴を解決すること...

Vueコンポーネント登録方法の解釈

目次概要1. グローバル登録2. 現地登録3. モジュールシステムへのローカル登録概要コンポーネント...

役に立つメタ設定方法(必読)

<meta name="viewport" content="...

Vueプロジェクトのパッケージングと展開の実際のプロセスの記録

目次序文1. 準備 - サーバーとnginxの使用1. サーバーを準備する2. nginxをインスト...

iOS WeChat H5ページのゴム反発効果の落とし穴記録

ビジネス要件最近開発したプロジェクトの一つに、WeChat公式アカウントに関連したH5ページがありま...

nginx/apache 静的リソースのクロスドメインアクセスの問題を解決する詳細な説明

1. Apache 静的リソースのクロスドメイン アクセスApache設定ファイルhttpd.con...