全3928文字
PR

 社内LANからインターネットにつながらない、社内にあるファイルサーバーの応答が遅い──。こうしたネットワークトラブルの解決に有効なのが「パケットキャプチャー」だ。パケットキャプチャーとは、文字通りLANを流れるパケットを取得すること。取得したパケットを調べれば、ネットワークの状態を把握できる(図1-1)。

図1-1●パケットを直接見て分かること
図1-1●パケットを直接見て分かること
LANを流れるパケットには、データ本体だけでなく、通信制御に必要な情報(ヘッダー情報)が含まれている。これらを確認すれば、通信が正常に実施されているか、どこと通信しているのかなどを確認できる。
[画像のクリックで拡大表示]

 LANを流れるパケットには、データ以外に様々な情報が付随している。例えば通信に必要な宛先のIPアドレスや送信元のIPアドレス、やりとりしている通信プロトコルの種類などだ。これらはデータ本体とは別の「ヘッダー」と呼ぶ場所に格納されている。パケットを取得してこれらの情報を見れば、異常なパケットを送信しているネットワーク機器を特定したり、あるネットワーク機器が送信するパケット量の変化を調べたりできる。

 このためパケットキャプチャーはネットワーク管理者にとって覚えておきたい知識だ。パケットキャプチャーというと、パケットキャプチャーソフトの「Wireshark」をイメージする読者が多いだろう。しかし今やWindows標準ツールで、パケットを取得できる。

 Part1では、Windows標準ツールを利用して手軽にパケットを取得する手法を解説する。

Windowsに標準搭載

 Windows 10には「Pktmon」というネットワーク診断ツールが用意されている。Packet Monitorの略だ。Pktmonにはパケットを取得したり、記録したパケットをテキスト形式に変更したりするコマンドが用意されている。

 Pktmonを使うと、そのパソコンがやりとりするパケットを取得できる(図1-2)。特別なネットワーク機器やソフトウエアを導入する必要はない。Windows 10パソコンまたはWindows Server 2019/2022が動くサーバーがあれば実行できる。

図1-2●パソコンがやりとりするパケットを取得
図1-2●パソコンがやりとりするパケットを取得
パソコン上でPktmonのコマンドを実行すると、パソコンがサーバーなどとやりとりするパケットを取得できる。
[画像のクリックで拡大表示]

 これらのOSではコマンド実行環境としてPowerShellを使える。PowerShellには「リモーティング」と呼ぶ機能がある。これを使うと遠隔地にあるパソコンやサーバーにPktmonのコマンドを実行させることができる。サーバーへの不審なアクセスがないかなどを定期的にチェックするには便利な機能だ。

 一方、Pktmonではネットワークを流れるすべてのパケットは把握できない。そのためにはネットワークを分岐して、「プロミスキャスモード」で動くパケットキャプチャーソフトをインストールしたパソコンにつなぐ必要がある。Wiresharkや「Microsoft Network Monitor」といったパケットキャプチャーソフトは、プロミスキャスモードに対応している。またパケットを取得するパソコンのNICがプロミスキャスモードに対応している必要もある。

 ネットワークを分岐させるには、フラッディングモード対応のレイヤー2(L2)スイッチを使う。フラッディングモードを有効にすると、受信したパケットをすべてのポートから送信する。このためそのL2スイッチを通るすべてのパケットを任意のポートで取得できるようになる。

 ただしフラッディングモードではポートの数だけパケットが増幅されることになるのでネットワークに負荷がかかる。このため特定のポートを通過したトラフィックだけを監視したい場合には、ミラーポートを搭載したスイッチを利用する。

 ミラーポートは、特定のポートが送受信するパケットをそのままコピー(ミラーリング)して別のポートに流す機能である。L2スイッチを通るすべてのトラフィックは監視できないが、ネットワークの負荷はフラッティングモードに比べて抑えられる。

 最近では、ミラーポートを搭載したL2スイッチが安価に手に入るようになってきた