どうも。現役ネットワークエンジニアのアルパパです。
障害などが発生して、いざパケットキャプチャを実施したいとなった場合に、どこで取るのか、どうやってとるのかを検討することになります。
さっとパターン分けすると以下のような感じでしょうか 。
【どこで】
・通信の送信元(WindowsのクライアントPCなど)
・通信の送信先(LinuxサーバやWindowsサーバなど)
・途中のネットワーク機器
【どうやって】
・専用アプリケーションをインストールして取得・表示
・OSやネットワーク機器の標準機能で取得・表示
・OSやネットワーク機器の標準機能で取得したデータを専用アプリケーションがインストールされた端末へ移送して表示
この記事ではOSやネットワーク機器などの環境別にどのようなパケットキャプチャ方法があるかを書いていきます。
【OSや環境別】パケットキャプチャを実施する方法とは
Windowsの場合
専用アプリケーション(Wireshark)を利用する。
WiresharkとはWindowsで動作するパケット取得&表示アプリケーションです。
パケットが表示された画面は大変見やすく、フィルター機能なども豊富です。解析には大体の人がこのWiresharkを使っていると思います。
パケットキャプチャを実施する対象のWindowsマシンにこのWiresharkを入れることが出来れば、パケットキャプチャ&表示&解析まですべてこれ一つで出来ますよね。
一番手間が掛からずおススメです。
当ブログではWiresharkの記事も書いております。参考まで。
wiresharkの使い方講座 ~パケットキャプチャの方法とパケットの見方について~ | Rpapa WEB
wiresharkでポート番号などを指定したディスプレイフィルタ適用方法 | Rpapa WEB
Windowsコマンドを利用して取得する(netsh)
色々な理由でWiresharkをインストールすることが難しいWindowsマシンでパケットキャプチャーを実施したい場合は、Windows標準のコマンドでパケットキャプチャを実施することができます。
他者様のブログになりますが、netshを使ったパケットキャプチャについて詳しくまとめられているページがございますので、紹介します。
コマンドプロンプト/パケットをキャプチャする・netsh trace – Windowsと暮らす
ただこの方式の場合、取得したファイルの中身を見ることが出来ないため、別途表示アプリケーションがインストールされている別のWindowsマシンにファイルを移送して表示する必要があります。
表示のためのアプリケーションとしては
・前述の「Wireshark」
・Windowsの公式アプリケーション「Microsoft Network Monitor」
があります。
Wiresharkで見る場合は、Windowsで取得したファイル形式ではインポートできないため、変換ツールで変換をする必要があります。
Linuxの場合
パケットキャプチャ用のコマンドで取得する(tcpdump)
Linuxの場合は「tcpdump」というコマンドが標準で用意されています。
参考までに当ブログでtcpdumpについての記事も書いてますので参照ください。
[Linux]tcpdumpの使い方 頻繁に使うコマンドまとめ | Rpapa WEB
こちらは取得したものを画面上で見ることも可能ですが、Wiresharkのように詳細に見るということが難しいです。
ただ取得時のオプションを指定することでキャプチャファイルをWiresharkで見ることは可能です。
ネットワーク機器の場合
ネットワーク機器の場合は、それぞれのネットワーク機器の機能として対応していれば パケットキャプチャを実施することが可能です。
表示自体もネットワーク機器上で可能ですが、やはりWiresharkでの表示と比べると詳細に見るというのは少し難しいですね。
ネットワーク機器によっては前述のtcpdumpのキャプチャデータと同じようにWiresharkで表示可能なフォーマットで保存することも可能です。
以下は他者様のブログになりますが、FortinetのFortigateでのパケットキャプチャとWiresharkで表示する場合の変換の方法が記載されています。
FortiGateでパケットキャプチャを取得する方法とWireshark読み込み方法 | ネットワークエンジニアという生きかた