[Network] | ||||||||||||||
Port ReporterツールでTCP/IPの通信状態を調査する
|
||||||||||||||
|
解説 |
ネットワークのトラブルシューティングやアプリケーションのデバッグ、ファイア・ウォールの設定などのために、あるアプリケーションがどのようなTCPやUDPのポートを使用しているかを調べたいことがある。このような場合は、netstatを実行したり、Windows Server OSに付属のネットワーク・モニタを利用したりするのが普通である。だが、netstatは動的なポートの状態を記録するには向かないし(常に実行し続け、さらにその結果をファイルに記録しておく手段がない)、ネットワーク・モニタでは(イーサネット上のパケットをキャプチャするという性質上)、ローカル・ループバック・インターフェイス(127.0.0.1)あての通信を見ることができない。
このような目的のためには、マイクロソフトから提供されている「Port Reporter」というツールを使うとよい。このツールの機能を端的に述べると、「netstatコマンドを動的に実行して、その結果をすべてログ・ファイルに残すツール」といえるだろう。
Port Reporterはサービスとして利用するツールである。システムにこのツールをインストールすると、TCPやUDPの通信状態をモニタし続け、状態が変化した時点で(例えばポートがリッスン状態になったとかオープンされたなど)、その結果をログ・ファイルに記録する。Windows XP以降のOSの場合は同時にプロセスの状態も記録されるため、どのプロセスがどのTCP/UDPポートを利用したかという情報を取得することができる。
操作方法 |
手順1―ダウンロードとインストール
上記のダウンロード・サイトからPort Reporterツール(PortRptr.exe)をダウンロードして実行すると、解凍する場所を問い合わせるダイアログが表示される。場所を指定して[OK]をクリックすると、全部で4つのファイルが展開されるので、その中にあるpr-setup.exeを実行してPort Reporterツールの実行プログラムをインストールする。インストール先はデフォルトでは「%ProgramFiles%\PortReporter」となっているが、「pr-setup -d 'c:\portreporter'」のように指定すれば(シングル・クオート記号でインストール先のパス名を囲むこと)、任意のフォルダにインストールすることができる。ただしこのフォルダにインストールされるのはPortReporter.exeという実行ファイルが1つだけなので、特別な理由がない限り、デフォルトの場所にインストールしておけばよいだろう。
手順2―サービスの起動
プログラムをインストールすると、「Port Reporter」というサービスがシステムに追加される。デフォルトでは[スタートアップの種類]が[手動]となっており、インストールしただけではサービスは稼働しない。
Port Reporterサービスの起動設定 | ||||||
Port Reporterツールをインストールすると、「Port Reporter」というサービスがインストールされる。このサービスはデフォルトでは手動起動になっているので、必要に応じて[自動]で起動するように設定を変更する。 | ||||||
|
[スタートアップの種類]を[自動]にすると、システム起動時からログが取得され続けることになり、ログ・ファイルのサイズはかなり大きくなるので、必要なときだけログを取得するようにしておくのがよいだろう。このPort Reporterサービスは、常に動作させておいて異常発生時にログをさかのぼって調べるといったものではなく、どちらかというとデバッグやトラブル発生時のネットワークの挙動を調べるための補助手段といった意味合いが強い。そのため、必要なときにサービスを開始し、ログを収集するのがよいだろう。サービス管理ツールではなく、コマンド・プロンプトから素早くサービスを開始するには次のコマンドを実行すればよい。
net start "port reporter" |
サービスを停止するには、次のコマンドを実行する。
net stop "port reporter" |
ログ・ファイルの確認
Port Reporterサービスが起動すると、イベント・ログの「アプリケーション」イベントに、サービスの開始を通知するイベントが2つ記録される。1つは「The Port Reporter service was started.」というサービスの開始メッセージで、もう1つはログ・ファイルの場所を示す「The Port Reporter service successfully created log files in the following directory: C:\WINDOWS\system32\LogFiles\PortReporter」というイベントである。このように、イベント・ログにサービスの開始や停止の記録がいくつか残るが、これはあまり重要ではない。このサービスによって出力されるデータは基本的にはすべてPort Reporter専用のログ・ファイルに記録される。
Port Reporterのログ・ファイルは、デフォルトでは「%SystemRoot%\System32\LogFiles\PortReporter」というフォルダに作成される。この中に以下の3種類のファイルが作成される。
ファイル名 | 用途 |
PR-INITIAL-*.log | TCP/IPの初期状態 |
PR-PORTS-*.log | ポートごとの使用状況。TCPやUDPの状態が変化するごとに1行ずつ記録される |
PR-PIDS-*.log | コンピュータ名やログオンしているユーザー名のほか、TCPやUDPの状態が変化するごとに、その通信を開始したプロセスに関する情報(プロセスIDやプログラム名、DLLファイル名など)が記録される。PR-PORTS-*.logファイルの1行ごとに対応して、新しいエントリが1つずつ作成される。ただしWindows 2000以前のOSではこのファイルには有効な情報は記録されない |
Port Reporterサービスのログ・ファイル | |
Port Reporterサービスでは、1度にこの3つのファイルがセットで作成される。ファイル名の「-*」の部分には、サービスが開始された年月日と時分秒が入る(例:PR-PORTS-04-04-1-12-34-56.log)。ログ・ファイルがいっぱいになるか(デフォルトでは5Mbytes)、1日ごと(午前0時0分)に新しいログ・ファイルに切り替えられる。ただしWindows 2000ではOSの制約により、PR-PIDS-*.logファイルには有用な情報は記録されない。 |
ログ・ファイルには、作成された年月日や時分秒を表すファイル名が付けられている。3種類のファイルには同じ日時が付けられるので、どのファイルがペアであるかがすぐに分かるようになっている。またサービスが起動した場合や、ログ・ファイルがいっぱいになった場合には(デフォルトでは5Mbytes)、新しいログ・ファイルに切り替わる。常にログを記録するようにしていると、非常に多くのログ・ファイルが残ることになるので、注意が必要である。
それでは各ログ・ファイルの内容について見てみよう。
PR-INITIAL-*.logファイル
このファイルには、サービス起動のコンピュータの状態やコンピュータ名、ネットワークの状態(netstatコマンドの実行結果と同じ)、およびコンピュータ上で稼働しているプロセスの状態(プロセスIDや実行ファイル、DLLファイル名など)などが記録される。ただしWindows 2000では、OS機能の制約などにより、詳しいプロセスの状態は記録されない。
※Windows XPにおけるPR-INITIAL-*.logファイルの例 |
PR-PORTS-*.logファイル
このファイルには、TCPやUDPの通信状態が1行ずつ記録される。このファイルの内容を確認することにより、どのプロセスがどのTCPやUDPポートを使って通信しているかが分かる。ただし通信データの内容が分かるわけではなく、例えばリッスン状態になったとか、通信を受け付けた(オープンされた)といった情報が得られるだけである。またWindows XP以降のOSでは、どのプロセスにおける通信であるかという情報も得られるので(netstatの-oオプションと同じ)、後述のPR-PIDS-*.logファイルの内容と照合することにより、プロセスの情報も詳しく調べることができる。
※Windows XPにおけるPR-PORTS-*.logファイルの例 ※「⇒」は実際には1行につながっていることを表す) |
記録データの各行には、時刻やポートのほか、次のような情報が「,」で区切られて記録されている。IPアドレスの「0.0.0.0」は、リッスンやオープン状態になったことを示している。
OS | データの内容 |
Windows XP以降 | 日付,時刻,プロトコル(TCP/UDP),ローカル・ポート,ローカルIPアドレス,リモート・ポート,リモートIPアドレス,プロセスID(PID),モジュール,ユーザー・コンテキスト |
Windows 2000 | 日付,時刻,プロトコル(TCP/UDP),ローカル・ポート,ローカルIPアドレス,リモート・ポート,リモートIPアドレス |
PR-PORTS-*.logファイルの記録内容 | |
TCPやUDPの通信内容(状態の変化)が、1コネクションにつき1行ずつ記録される。Windows XP以降のOSでは、同時にプロセスに関する情報も記録される。「ユーザー・コンテキスト」とは、そのプログラムを実行しているユーザーの名前。 |
このログには、正常な通信のみが記録される。外部からの攻撃(未オープン・ポートへの接続要求など)やファイアウォールでブロックされているような通信要求は記録されない。ちょうどnetstatコマンドを動的に実行してログを残しているようなものだと考えておけばよいだろう。そのためPort Reporterサービスは、ファイアウォールのロギングのような用途で使うものではなく(外部からの攻撃の有無を記録するものではなく)、あるアプリケーションが利用しているTCPやUDPのポートなどを調べるために利用するものである。Windows Server OSに付属のネットワーク・モニタと同じような目的に利用できるが、Port Reporterでは内部ループバック・インターフェイスあての通信でもロギングすることができるという特徴がある(ネットワーク・モニタではイーサネットなどへ実際に送信されたパケットしかキャプチャできない)。
PR-PIDS-*.logファイル
このファイルには、上のPR-PORTS-*.logファイルと対応して、その通信を行ったプロセスに関する詳しい情報が記録される。ただしWindows 2000ではOSの制約により、このファイルには何も情報は記録されない。
※Windows XPにおけるPR-PORTS-*.logファイルの例 |
記録される内容は、PR-INITIAL-*.logファイルにおけるプロセス情報と同じであり、通信を行っているプロセスのファイル名やDLL、ロード・アドレスなどの情報が得られる。
この記事と関連性の高い別の記事
- netstatでリッスンしているプロセスを特定する(TIPS)
- Windowsのsvchost.exeプロセスとは?(TIPS)
- netstatコマンドを使いこなす(TIPS)
- Windows Serverシステムで利用するネットワーク・ポート番号(TIPS)
- Windows XPのファイアウォール機能を活用する(1)(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|