Wiresharkは強力なツールですが、制限があります。プロのネットワーク機器をお持ちでない限り、コンピューターに関係しないトラフィックを分析することは困難です。時々最も簡単な解決策は、tcpdumpを使用してリモートサーバー上のトラフィックをキャプチャし、次にWiresharkを実行して確認することです。.
Wiresharkおよびtcpdumpとは?
Wiresharkはプロトコルアナライザーであり、ネットワークを流れるデータを読み取り可能な方法でキャプチャして表示するソフトウェアです。 Wiresharkを使用すると、ネットワークサービスとWebアプリケーションからの入力と出力を分析できます.
Wiresharkは、通過するすべてのパケットをキャプチャするという素晴らしい仕事をしていますが、場合によっては、リモートサーバーからのセッションを分析する必要があります。特別なネットワーク機器がない限り、これは難しい場合があります。リモートサーバーでトラフィックをキャプチャし、デスクトップで分析する方が簡単な場合があります.
tcpdumpはコマンドラインパケットアナライザーです。 Wiresharkほど使いやすいわけではありませんが、トラフィックをキャプチャする能力は同じです。 tcpdumpはターミナルモードで実行されるため、SSHセッションを介して起動できます。適切なコマンドラインオプションを使用すると、Wiresharkと互換性のあるtcpdumpセッションをエクスポートできます。.
SolarWindsはWiresharkを次のレベルに引き上げます
Wiresharkとtcpdumpは強力なユーティリティですが、弱点がいくつかあります。特に、すぐに使用できるWiresharkを使用して、ネットワーク全体の遅延の問題を特定するのは非常に困難です。たとえば、LANのping時間が長くなる可能性がありますが、Wiresharkでできることはあまりありません.
Wireshark用SolarWinds Response Time Viewer(無料ツール)
その場合、私はお勧めします WiresharkのSolarWinds Response Time Viewer. このプラグインはWiresharkを拡張し、pingスパイクと全体的なネットワーク速度の低下の原因を診断できます.
Wireshark用SolarWinds Response Time Viewer100%無料ツールをダウンロード
SolarWinds Network Performance Monitor(無料トライアル)
SolarWindsは、ネットワークに最適なオールインワンソリューションも提供します。それはと呼ばれます ネットワークパフォーマンスモニター (NPM)、ネットワークの管理がはるかに簡単になります。たとえば、SolarWinds Network Performance Monitorを使用して、ワイヤレスLANを監視および管理し、パフォーマンスベースラインを生成し、リアルタイムのセキュリティアラートを取得できます。.
SolarWinds Network Performance Monitor 30日間リスクなしで試すことができます。ここから無料でサインアップ.
SolarWinds Network PerformanceMonitor30日間無料トライアルをダウンロード
あなたが始める前に
このガイドの指示に従うには、次のものが必要です。
- SSHサーバーとtcpdumpがインストールされたリモートコンピューター
- ルートアクセス
- リモートコンピューター上で実行される、Apacheやnode.jsなどのネットワークトラフィックを生成するサービス
- SSHクライアントとWiresharkがインストールされたローカルコンピューター
目標は、リモートコンピューター上でSSHを介してtcpdumpを使用して、ネットワークトラフィックをキャプチャすることです。次に、キャプチャされたトラフィックをローカルコンピューターにコピーして、Wiresharkで分析できます。.
これは、リモートコンピューターに物理的にアクセスできない場合や、「ヘッドレス」で実行している場合、つまりキーボードとモニターがない場合に便利です。.
tcpdumpを使用したパケットのキャプチャ
tcpdumpでトラフィックをキャプチャするには、SSH経由でリモートコンピューターに接続する必要があります。ルートアクセスも必要になります。そうしないと、tcpdumpでトラフィックをキャプチャできず、次のエラーが表示されます。 そのデバイスでキャプチャする権限がありません.
接続したら、次のコマンドを実行してtcpdumpでトラフィックのキャプチャを開始します。
sudo tcpdump -s 0 -i eth0 -w tcpdump.pcap
このセッションをキャプチャするために使用したコマンドラインオプションを以下に説明します。つまり、上記のコマンドはイーサネットデバイス上のすべてのトラフィックをキャプチャし、Wiresharkと互換性のある形式でtcpdump.pcapという名前のファイルに書き込みます。.
トラフィックのキャプチャが終了したら、tcpdumpセッションを終了します Ctrl + C. キャプチャセッションに関する情報を表示する短い読み出しが表示されます.
Wiresharkで分析するためにリモートコンピューターからローカルコンピューターにトラフィックをコピーする前に、アクセス許可を変更する必要があります。デフォルトでは、使用されているルートによってキャプチャされたtcpdumpセッションはコピーできません。次のコマンドを使用します。
sudo chmod 644 tcpdump.pcap
これにより、次の手順で説明するように、scpを使用してローカルコンピューターにファイルをコピーできます。.
分析のためのtcpdumpセッションのコピー
tcpdumpを使用してキャプチャセッションを終了すると、問題が残ります。分析のためにWiresharkを実行しているマシンにどのようにコピーしますか?多くの方法がありますが、最も簡単な方法はscpを使用することです。 SSHを使用してヘッドレスマシンで既にパケットをキャプチャしているため、scpを使用するために必要なものはすべてインストールされ、実行されています.
Windowsユーザーはpscpをダウンロードしてから、ファイルをC:\ Windows \ System32にコピーする必要があります。ほとんどのMacおよびLinuxユーザーはすでに必要なものをすべて持っています.
MacまたはLinuxで、ターミナルウィンドウを開き、次のコマンドを実行してセッションキャプチャファイルをコピーします。
scp [email protected]:/ path / to / file ./
または、WindowsでPowerShellを開き、次のコマンドを実行します。
pscp.exe [email protected]:/ path / to / file。\
必要に応じてあなたの情報に置き換えてください。パスワードの入力を求められます。使用したコマンドは、参照用の上記のスクリーンショットにあります.
ファイルが期待どおりにコピーされたことを確認し、Wiresharkとのtcpdumpセッションを分析する準備ができました.
Wiresharkでキャプチャされたtcpdumpセッションを分析する
分析は、従来のWiresharkキャプチャと同じように機能します。あなたが知る必要がある唯一のことは、ファイルをインポートする方法です.
Wiresharkを起動し、キャプチャされたtcpdumpセッションを使用してインポートします ファイル -> 開いた ファイルを参照します。あなたもすることができます ダブルクリック Wiresharkで開くキャプチャファイル, * .pcapファイル拡張子がある限り. を使用した場合 -w tcpdumpを実行したときのオプション、ファイルは正常にロードされ、トラフィックを表示します.
私の場合、リモートホストでApacheサーバーを実行しており、HTTPデータを調べることに興味があります。適切なWiresharkビューフィルターを設定し、キャプチャされたフレームを通常どおり閲覧できます.
テストとして、ページに表示されない要素をHTMLコードに埋め込みました。データストリームで見つけてWiresharkで表示できるはずです。.
ご覧のとおり、Wiresharkは各フレームを分析し、データを適切に表示できます。上記の例では、非表示にした要素が表示されています。 tcpdumpを使用する場合、キャプチャプロセスはもう少し複雑になりますが、Wiresharkのすべてが通常どおり機能します.
tcpdumpのコマンドラインオプションを使用する
ほとんどの場合、tcpdumpを起動するときに、パケットのキャプチャ方法とセッションの保存場所を制御する必要があります。コマンドラインオプションを使用して、そのようなことを制御できます。これらは、tcpdumpの最も便利なコマンドラインオプションの一部です。.
tcpdump -w
の -w コマンドラインオプションは、Wireshark互換の出力を有効にします。出力ファイル名である単一の変数を取ります。このオプションを使用して保存されたキャプチャログは、Wiresharkの外部では人間が読めるようにはなりません。ASCIIではなくバイナリで保存されるためです。.
tcpdump -C
の -C コマンドラインオプションを使用すると、最大ファイルサイズをバイト単位で設定できます。このオプションは、 -w. たとえば、コマンド tcpdump -C 1048576 -w capture.pcap ファイルへの最大キャプチャサイズ1MB(1,048,576バイト)出力を指定します capture.pcap.
セッションが大量の出力を生成する場合、新しいファイルを作成して保存します。したがって、3MBのキャプチャは capture.pcap, capture1.pcap, そして capture2.pcap それぞれ1MBのファイルサイズ.
tcpdump -s
の -s コマンドラインオプションは、各パケットの最大長をバイト単位で設定し、最大値に達するとパケットを切り捨てます。コマンド tcpdump -s 0 パケット全体が確実にキャプチャされるように無制限の長さを設定します.
tcpdump -i
の -私 コマンドラインオプションは、tcpdumpで監視するネットワークデバイスを指定します。インターフェイスが指定されていない場合、現在実行されている最小番号のインターフェイスがデフォルトになります.
tcpdump -list-interfaces
コマンドラインオプション tcpdump -list-interfaces tcpdumpが接続できるすべてのインターフェースのリストを出力します。これはキャプチャセッションを開始するわけではありませんが、使用するインターフェイスのリストが表示されることに注意してください -私 上記のオプション.
tcpdump -c
の -c コマンドラインオプションは、指定された数のパケットをキャプチャした後にセッションを終了するようtcpdumpに指示します.
tcpdump -n
の -n コマンドラインオプションはtcpdumpに指示します じゃない IPアドレスをホスト名に解決します。これは、負荷分散サーバーの背後にあるWebサイトのトラブルシューティングを行う場合や、ホスト名を使用すると結果があいまいになる場合がある他のいくつかの場合に役立ちます.
tcpdump -v | -vv | -vvv
3つのコマンドラインオプション, -v, -vv, そして -vvv キャプチャセッションの冗長性を高めることができます. -v ToS情報とともに、各パケットのTTL値を保存します. -vv NFSパケットの追加情報とともにTTLとToSを出力します。そして -vvv 最初の2つのオプションが行うすべてを、telnetセッションからの追加情報とともに記録します.
tcpdump -F
の -F コマンドラインオプションは、指定されたファイルからキャプチャフィルターを使用するようにtcpdumpに指示します。キャプチャファイルの書き込みの詳細については、次のセクションを参照してください。.
tcpdumpのキャプチャフィルターの使用
キャプチャフィルタを使用すると、tcpdumpがセッションで保存するデータを絞り込むことができます。分析を少し簡単にし、キャプチャファイルを小さく保つのに役立つ方法です。 tcpdumpの最も便利なキャプチャフィルタの一部を次に示します.
ホスト
このフィルターは、ターゲットホストとの間のトラフィックのみをキャプチャすることを指定します。引数としてIPアドレスまたはホスト名を取ります.
ネット
ネットフィルターは、特定のサブネット上のトラフィックのみをキャプチャするようにコンピューターに指示し、引数としてIPアドレスを取ります。たとえば、192.168.1.0 / 24は、サブネット上のすべてのホストとの間のトラフィックがキャプチャされることを指定します。スラッシュ表記のサブネットマスクが必要であることに注意してください.
dstホスト
に似ている ホスト, このキャプチャフィルタは、指定されたホストの宛先を持つトラフィックのみがキャプチャされることを指定します。また、使用することもできます ネット.
srcホスト
上記と同様ですが、このフィルターは指定されたホストまたはIPアドレスから発信されたトラフィックのみをキャプチャします。また、使用することもできます ネット.
港
このフィルターは、指定されたポート番号との間のトラフィックをキャプチャするようにtcpdumpに指示します。例えば, ポート443 TLSトラフィックをキャプチャします.
ポートレンジ
ポートフィルタと同様に、portrangeはトラフィックがキャプチャされるポートの範囲を確立します。ポート範囲フィルターを使用するには、開始ポートと終了ポートをダッシュで区切って指定します。例えば, ポート範囲21-23.
ゲートウェイ
ゲートウェイフィルターは、コンピューターが特定のホスト名をゲートウェイとして使用したトラフィックのみをキャプチャするように指定します。ホスト名は / etc / hosts.
放送
ブロードキャストフィルターは、tcpdumpがサブネット上のすべてのホストにブロードキャストされているトラフィックのみをキャプチャするように指定します.
IPマルチキャスト
このフィルターは、ホストマシンのサブネット上のマルチキャストトラフィックのみをキャプチャするようtcpdumpに指示します.
and / or / not演算子
フィルターは、 そして, または, か否か 演算子。たとえば、特定のホスト上のすべてのWebトラフィックをキャプチャするには、フィルターを使用できます ポート80 または ポート443. または、フィルターを使用して、ブロードキャストパケットを除く特定のサブネット上のすべてのトラフィックをキャプチャできます。 ネット192.168.1.0/24およびブロードキャストなし.
フィルターオペレーターを使用すると、キャプチャにさらに細かなレイヤーが追加されるため、実際に使用することは非常に一般的です。多くの余分なネットワークチャタリングなしで、必要なトラフィックを正確にキャプチャできます。.
複数の演算子を持つ複雑な式
複数の操作を単一のアポストロフィと括弧で囲むことにより、さらに複雑な式を作成できます。たとえば、次のようなコマンドを使用して、SMTP、IMAP、TLSを介したIMAP、TLSを介したPOP3、TLSを介したPOP3など、すべてのメールトラフィックを複数のホストとサブネットにわたって監視できます。
tcpdump ‘(ホスト10.0.0.1およびネット192.168.1.0/24)および((ポート25またはポート143またはポート443またはポート993またはポート995))’
複数の演算子を含む複雑な式は非常に便利ですが、1つの入力ミスでキャプチャが失敗するため、通常は再利用のためにフィルターファイルに保存されます。多くの場合、事前に準備してデバッグする必要があります.
tcpdumpのフィルターファイルの使用
上記のフィルターは、tcpdumpの起動時にコマンドラインで実行できますが、多くの場合、フィルターファイルを作成すると便利です。フィルターファイルを使用すると、キャプチャ間でフィルター設定を再利用しやすくなります。フィルタファイルを作成して使用する手順は次のとおりです。.
フィルターファイルを作成する
フィルターファイルは、コマンドラインとまったく同じ表記法を使用します。ファイルの先頭に特殊文字やマジックナンバーは必要ありません.
たとえば、Apacheサーバーから特定のホストへのすべてのWebトラフィックをキャプチャするフィルターファイルを次に示します。この場合、私が書いているChromebook.
tcpdumpを実行しているユーザーがファイルを読み取れる限り、プログラムはフィルターファイルのすべてを解析し、有効なフィルターとして使用しようとします。. とき フィルターファイルはコマンドラインフィルターと一緒に使用され、すべてのコマンドラインフィルターは無視されます.
特定のフィルターファイルを使用するようにtcpdumpに指示します。 -F コマンドラインオプション、ファイルへのパスが続きます。上記の例では、フィルターファイルは、tcpdumpを実行しているディレクトリと同じディレクトリにあります。.
これは、フィルター処理されたセッションからの生の出力です。記録されているパケットのみが発信元であることがわかります。 ポート80 または 443, 192.168.1.181のホストに送信されます.
フィルターが意図したとおりに機能していることが確認できたら、次のようなコマンドを使用してWiresharkで分析するセッションをキャプチャします。
sudo tcpdump -i eth0 -s 0 -w wireshark.pcap -F filter-file
Wiresharkおよびtcpdump
管理ポートを備えたマネージドスイッチを実行していない限り、遅かれ早かれ、リモートサーバーでトラフィックをキャプチャする必要があります。 Wiresharkだけでは役に立たないときは、tcpdumpを使用したWiresharkが一般的な選択肢です。この2つは非常にうまく機能し、いくつかの簡単なコマンドラインオプションを使用して、tcpdumpはWiresharkで簡単に分析できるキャプチャセッションをエクスポートします.
harkは本当に強力なツールですが、制限があることは確かです。特に、プロのネットワーク機器を持っていない場合、コンピューターに関係しないトラフィックを分析することは困難です。そのため、tcpdumpを使用してリモートサーバー上のトラフィックをキャプチャし、次にWiresharkを実行して確認することが最も簡単な解決策の1つです。また、SolarWindsのツールを使用することで、Wiresharkをさらに強化することができます。この記事は、tcpdumpを使用してトラフィックをキャプチャし、Wiresharkで分析する方法について詳しく説明しています。必要なものがすべて揃っている場合は、ぜひ試してみてください。