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における静的変数の役割の詳細な説明

推薦する

MySQLで大きなテーブルをエレガントに削除する方法について簡単に説明します

目次1. 切り捨て操作1.1 MySQL truncate はどのような操作を実行しますか? 1.2...

非ルートユーザーを使用してDockerコンテナでスクリプト操作を実行する

アプリケーションをコンテナ化した後、Docker コンテナを起動すると、デフォルトで root ユー...

XHTML+CSS Web ページ作成における美しいスタイルシートの適用

これはかなり前に書かれた記事です。今となっては、その中の考え方は学ぶ価値があるように思えます。jb5...

MySql データベースにリモートでログインするにはどうすればよいですか?

はじめに: プロジェクトを開発するために、サーバーに MySql データベース サーバーを展開し、ロ...

MySQLのパスワードを忘れた場合の対処方法

MySQL パスワードを 2 回忘れてしまいましたか?最初、私はアンインストールして再インストールす...

Vue の共通 A​​PI と高度な API の概要

目次次のチェックミックスイン$強制更新設定、削除フィルター指令その他の単純な共通プロパティとメソッド...

Linux で開いているファイルが多すぎる問題を解決する方法

原因は、プロセスが特定の時点でシステム制限を超える数のファイルと通信リンクを開くことです。 システム...

Vue イメージ ドラッグ アンド ドロップ ズーム コンポーネントの使用方法の詳細な説明

Vueイメージドラッグアンドドロップズームコンポーネントの具体的な使い方は参考までに。具体的な内容は...

Web 開発の面接と筆記試験に必須の知識(必読)

HTML のインライン要素とブロックレベル要素の違い:標準的なドキュメント フローでは、ブロック ...

CSS の読み込みによってブロックが発生しますか?

おそらく誰もが js の実行によって DOM ツリーの解析とレンダリングがブロックされることを知って...

PHP で JSON バックスラッシュを削除する例

1. 「stripslashes($_POST['json']);」メソッドを使用し...

Webページ作成の質問: 画像ファイルのパス

この記事は 123WORDPRESS.COM Lightning によるオリジナルです。転載する際に...

初心者向けに Docker に Jenkins をインストールする方法を詳しく説明したチュートリアル

Jenkins はオープンソース ソフトウェア プロジェクトです。Java をベースに開発された継続...

vue で wangEditor を使用する方法と、データをエコーし​​てフォーカスを取得する方法

バックグラウンド管理プロジェクトを行う際には、リッチテキストエディタがよく使用されます。ここでは、非...

docker-maven-pluginを使用してデプロイメントを自動化する方法を説明します

1. docker-maven-pluginの紹介私たちの継続的インテグレーションプロセスでは、プロ...