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

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



Leave a Comment

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

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 14.10へのMcMyAdminのインストール

Ubuntu 14.10へのMcMyAdminのインストール

McMyAdminは、サーバーの管理に使用されるMinecraftサーバーコントロールパネルです。McMyAdminは無料ですが、複数のエディションがあり、一部はパイです

LinuxでTeamTalk Serverをセットアップする

LinuxでTeamTalk Serverをセットアップする

TeamTalkは、ユーザーが高品質のオーディオ/ビデオ会話、テキストチャット、ファイルの転送、および画面の共有を可能にする会議システムです。それは

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ruby on Railsは、プログラマーの生産性を向上させるために開発されたRubyの人気のあるWebフレームワークです。ただし、さまざまな宝石と依存関係を取得する

Vultr VPSにアクセスする方法

Vultr VPSにアクセスする方法

Vultrは、VPSにアクセスして構成、インストール、および使用するためのいくつかの異なる方法を提供します。アクセス認証情報VPS arのデフォルトのアクセス認証情報

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

GolangはGoogleが開発したプログラミング言語です。汎用性、シンプルさ、信頼性のおかげで、Golangは最も人気のあるものの1つになりました

Debian、CentOS、およびFreeBSDでSudoを使用する方法

Debian、CentOS、およびFreeBSDでSudoを使用する方法

LinuxおよびUnixのシステム管理者の間では、sudoユーザーを使用してサーバーにアクセスし、コマンドをルートレベルで実行することは非常に一般的です。sudの使用

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

別のシステムを使用していますか?DokuWikiは、データベースを必要としないPHPで記述されたオープンソースのWikiプログラムです。データをテキストファイルに保存します。ドクウィク

DebianでのChrootのセットアップ

DebianでのChrootのセットアップ

この記事では、Debianでchroot jailをセットアップする方法を説明します。私はあなたがDebian 7.xを使っていると思います。Debian 6または8を実行している場合、これは機能する可能性があります、bu

DebianにPiVPNをインストールする方法

DebianにPiVPNをインストールする方法

はじめにDebianでVPNサーバーを設定する簡単な方法は、PiVPNを使用することです。PiVPNは、OpenVPNのインストーラーおよびラッパーです。それはあなたのための簡単なコマンドを作成します

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

別のシステムを使用していますか?BigTree CMS 4.2は、高速で軽量な無料のオープンソースのエンタープライズグレードのコンテンツ管理システム(CMS)であり、

Debian 9でソースからBrotliをビルドする方法

Debian 9でソースからBrotliをビルドする方法

別のシステムを使用していますか?Brotliは、Gzipよりも圧縮率が高い新しい圧縮方法です。そのソースコードはGithubで公開されています。ティ

PleskサーバーでHTTP / 2を有効にする方法

PleskサーバーでHTTP / 2を有効にする方法

PleskはネイティブのHTTP / 2サポートを備えています。PleskでのHTTP / 2のロールアウトは、他のコンポーネントに比べてはるかに簡単ですが、その導入プロセスには慎重な計画が必要です

FreeBSD 12にosTicketをインストールする方法

FreeBSD 12にosTicketをインストールする方法

別のシステムを使用していますか?osTicketは、オープンソースのカスタマーサポートチケットシステムです。osTicketのソースコードはGithubで公開されています。このチュートリアルでは

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

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

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

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