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

推薦する

Linuxシステムでノードプロセスを実行しているが、プロセスを強制終了できない問題を解決します

まず、Linux システムで実行されているノード プロセスはプロセスを強制終了できないことを紹介しま...

CSS Houdini でダイナミックな波効果を実現

CSS Houdini は、CSS 分野における最もエキサイティングなイノベーションとして知られてい...

Centos7環境でYUMを構築する方法

1. yumソースの設定ファイルを入力します 2.lsで設定ファイルを表示する 3. ディレクトリを...

ベースリンクタグの使用の紹介ベース

<br />リンクをクリックすると、ポップアップ表示される Web ページ アドレスは ...

MySQL Installer Community 5.7.16 インストール詳細チュートリアル

この記事では、MySQL インストールの詳細なチュートリアルを記録し、全員と共有します。 1. バー...

CSSはフロントエンドの画像変形の問題を完璧に解決します

Toutiao IT School で、CSS がフロントエンドの画像変形の問題を完璧に解決するとい...

JavaScript で配列遅延評価ライブラリを実装する方法

目次概要達成方法具体的な実装評価関数の終了を決定する生成関数の範囲変換関数マップフィルター割り込み機...

Lua モジュールを使用して WAF を実装する Nginx の原理の分析

目次1. WAFの背景2. WAFとは3. 動作原理4. WAF機能5. WAFと従来のファイアウォ...

TSオブジェクトのスプレッド演算子とレスト演算子の詳細な説明

目次概要オブジェクトの残り属性オブジェクトの拡張プロパティオブジェクトの浅いコピーを作成するkeyo...

Nginx ログのカスタマイズとログ バッファの有効化の詳細な説明

序文ウェブサイトのアクセス元をカウントしたい場合は、PHP を使用して情報を取得してデータベースに記...

Reactのようなフレームワークをゼロから作成する

最近、インターネットで「Build your own React」という記事を見ました。著者は、シン...

ウェブデザインと制作におけるハイパーリンクの効果の向上

ハイパーリンクを使用すると、ページからページへ、またはサイトからサイトへ瞬時に移動できます。このよう...

CSS3 で translate と transition を使用する方法

translate と transition は非常に強力で、習得するのは不可能だといつも感じていま...

Centos7 サーバーで jar パッケージ プロジェクトを開始する最良の方法

序文Linux 上で jar パッケージを実行する方法は誰もが知っています。なぜ別々に話したいのでし...

Linux ブートシステム方式の分析

この記事では、Linux システムを起動する方法について説明します。ご参考までに、詳細は以下の通りで...