Tcpdumpの概要

サーバーを実行すると、間違いなく、ネットワーク関連の問題を特定する必要があるポイントに到達します。もちろん、サポート部門にメールを送るだけでも簡単ですが、時には手を汚す必要があります。この場合、tcpdumpはその仕事のためのツールです。Tcpdumpは、コマンドラインで実行されるネットワークパケットアナライザーです。

この記事は3つのパートに分かれています。

  • 基本的な機能。
  • 特定のトラフィック特性に基づくフィルタリング。
  • より高度な機能の短いスニペット(論理式、TCPフラグによるフィルタリングなど)。

tcpdumpはほとんどの基本システムに含まれていないため、インストールする必要があります。ただし、ほぼすべてのLinuxディストリビューションのコアリポジトリにtcpdumpがあります。Debianベースのディストリビューションの場合、tcpdumpをインストールするコマンドは次のとおりです。

apt-get install tcpdump

CentOS / RedHatの場合は、次のコマンドを使用します。

yum install tcpdump

FreeBSDは、次のコマンドを発行してインストールできるビルド済みのパッケージを提供しています。

pkg install tcpdump

利用可能なポートもあり、net/tcpdumpこれは次の方法でインストールできます。

cd /usr/ports/net/tcpdump
make install clean

tcpdump引数なしで実行すると、結果に悩まされます。Vultrの新しくスピンアップされたインスタンスで5秒未満実行すると、次の結果が得られます。

2661 packets captured
2663 packets received by filter
0 packets dropped by kernel

入力をフィルター処理する方法の詳細に入る前に、tcpdumpに渡すことができるいくつかのパラメーターを確認する必要があります。

  • -i-待機するインターフェースを指定しますtcpdump -i eth0。例:
  • -n-たとえば、IPアドレスで逆ルックアップを行わないでくださいtcpdump -n(別のntcpdump を追加すると、名前ではなくポート番号が表示されます)。
  • -X-収集したパケットの内容を表示しますtcpdump -X
  • -c- 任意の数であるxパケットのみをキャプチャします。xたとえば、tcpdump -c 10正確に10パケットをキャプチャします。
  • -v-表示されるパケット情報の量を増やし、vsを増やすと冗長性が増します。

ここで説明するこれらのパラメーターはそれぞれ組み合わせることができます。100パケットをキャプチャしたいが、VPNインターフェイスtun0でのみの場合、tcpdumpコマンドは次のようになります。

tcpdump -i tun0 -c 100 -X

これらの少数に加えて、数百(数百ではないにしても)のオプションがありますが、これらは最も一般的なものです。システムのtcpdumpのマンページを自由に読んでください。

tcpdumpの基本を理解したところで、tcpdumpの最も優れた機能の1つである式を見てみましょう。表情はあなたの人生をずっと楽にします。これらは、BPFまたはバークレーパケットフィルターとしても知られています。式を使用すると、起点、宛先、サイズ、さらにはTCPシーケンス番号などの特定の特性に基づいて、パケットを選択的に表示(または無視)できます。

これまでのところ、特定のインターフェイスで特定の量のパケットに検索を制限することができましたが、ここで正直に言いましょう。それでも、収集されたデータを効果的に処理するにはバックグラウンドノイズが多すぎます。そこで表現が登場します。概念は非常に単純なので、ここではドライ理論を省き、いくつかの実用的な例で理解をサポートします。

おそらく最もよく使用する表現は次のとおりです。

  • host -ホスト名またはIPアドレスに基づいてトラフィックを探します。
  • srcまたはdst-特定のホストとの間のトラフィックを探します。
  • proto-特定のプロトコルのトラフィックを探します。tcp、udp、icmpなどで動作します。protoキーワードの省略も可能です。
  • net -特定の範囲のIPアドレスとの間のトラフィックを探します。
  • port -特定のポートへの/からのトラフィックを探します。
  • greaterまたはless-特定のバイト数よりも大きいまたは小さいトラフィックを探します。

のマンページtcpdumpにはいくつかの例が含まれていますが、のマンページにpcap-filterは、各フィルタの機能と適用方法に関する非常に詳細な説明があります。

特定のサーバーとの通信状況を確認したい場合はhost、たとえばキーワードを使用できます(上記の一部のパラメーターを含む)。

tcpdump -i eth0 host vultr.com

ネットワーク上に、MTUを尊重しない、または大きなパケットでスパムを送信しないコンピューターがある場合があります。それらをフィルターで取り除くのは難しい場合があります。式を使用すると、特定のバイト数よりも大きいまたは小さいパッケージを除外できます。

tcpdump -i eth0 -nn greater 128
or
tcpdump -i eth0 -nn less 32

たぶん特定のポートだけがあなたにとって興味のあるものです。この場合、次のport式を使用します。

tcpdump -i eth0 -X port 21

ポート範囲を調べることもできます。

tcdump -i eth0 -X portrange 22-25

NATゲートウェイはかなり一般的であるため、宛先ポートのみを検索できます��

tcpdump dst port 80

Webサーバーへのトラフィックを監視している場合は、ポート80へのTCPトラフィックのみを確認できます。

tcpdump tcp and dst port 80

あなたはおそらく、キーワードandがそこで何をしているのかを自問しているでしょう。良い質問。それで、この記事の最後の部分に行きます。

tcpdump 論理式の基本的なサポートを提供します。より具体的には、

  • and/ &&-論理 "and"。
  • or/ ||-論理「または」。
  • not/ !-論理「ない」。

式をグループ化する機能とともに、これにより、着信トラフィックと発信トラフィックの非常に強力な検索を作成できます。それでは、ポート22または443のvultr.comからのトラフィックをフィルタリングしてみましょう。

tcpdump -i eth0 src host vultr.com and (dst port 22 or 443)

これをコマンドラインで実行すると、次のエラーが発生します。

bash: syntax error near unexpected token `('

これは注意点があるためbashです。可能なすべての文字を評価しようとします。これには(および)文字が含まれます。このエラーを回避するには、結合された式を一重引用符で囲む必要があります。

tcpdump -i eth0 'src host vultr.com and (dst port 22 or 443)'

別の便利な例:ユーザーの1人とのSSH問題をデバッグする場合、SSHセッションに関連するすべてのものを無視することができます。

tcpdump '!(host $youripaddress) && port 22)'

繰り返しになりますが、ユースケースは無限であり、どのようなトラフィックを見たいかを極端な深さに指定できます。次のコマンドは、TCPハンドシェイクのSYNACKパケットのみを表示します。

tcpdump -i eth0 'tcp[13]=18'

これは、TCPヘッダーの13番目のオフセットとその中の18番目のバイトを調べることで機能します。

ここまで進んだら、発生するほとんどのユースケースに対応できます。あまり詳細に触れずに表面に触れることはほとんどできません。さまざまなオプションや式を少し試してみることを強くお勧めします。そしていつものように:道に迷ったときにマンページを参照してください。

最後になりましたが、簡単に振り返ります。この記事の冒頭を覚えていますか?数千のパケットがほんの数秒でキャプチャされましたか?の力で、tcpdumpそれを大幅に削減できます。

tcpdump -i eth0 tcp port 22

結果は次のとおりです。

81 packets captured
114 packets received by filter
0 packets dropped by kerne

これはより健全でデバッグが容易です。楽しいネットワーキング!



ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、