Windows TIPS
[Network]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

Port ReporterツールでTCP/IPの通信状態を調査する

解説をスキップして操作方法を読む

デジタルアドバンテージ
2004/04/03
 
対象OS
Windows 2000 Professional
Windows 2000 Server
Windows XP Professional
Windows XP Home Edition
Windows Server 2003
アプリケーションが使用しているTCPやUDPのポートを知るにはnetstatコマンドを利用するのが一般的であるが、netstatはログ機能を持たない。
ネットワークの通信状態を詳細に調べ、ロギングするにはPort Reporterツールが利用できる。
PortReporterツールではローカル・ループバック・インターフェイスに対する通信もモニタすることができる。
 
解説

 ネットワークのトラブルシューティングやアプリケーションのデバッグ、ファイア・ウォールの設定などのために、あるアプリケーションがどのような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ファイルの例

Port Reporter Version 1.0 Log File

Service initialization log

System Date: Thu Apr 01 13:19:39 2004 …記録開始時間


Local computer name:

UPC22 …記録開始コンピュータ名

Operating System: Windows XP

TCP/UDP Port to Process Mappings at service start-up

45 mappings found …通信状態(netstat -anと同じ)
↓プロセス名
PID:Process             Port            Local IP        State            Remote IP:Port
4:System                TCP 111         0.0.0.0         LISTENING        0.0.0.0
4:System                TCP 445         0.0.0.0         LISTENING        0.0.0.0
4:System                TCP 1039        0.0.0.0         LISTENING        0.0.0.0
4:System                TCP 3002        0.0.0.0         LISTENING        0.0.0.0
4:System                TCP 3281        0.0.0.0         LISTENING        0.0.0.0
4:System                TCP 4399        0.0.0.0         LISTENING        0.0.0.0
4:System                TCP 139         192.168.1.155   LISTENING        0.0.0.0
…以下省略…

PR-PORTS-*.logファイル

 このファイルには、TCPやUDPの通信状態が1行ずつ記録される。このファイルの内容を確認することにより、どのプロセスがどのTCPやUDPポートを使って通信しているかが分かる。ただし通信データの内容が分かるわけではなく、例えばリッスン状態になったとか、通信を受け付けた(オープンされた)といった情報が得られるだけである。またWindows XP以降のOSでは、どのプロセスにおける通信であるかという情報も得られるので(netstatの-oオプションと同じ)、後述のPR-PIDS-*.logファイルの内容と照合することにより、プロセスの情報も詳しく調べることができる。

※Windows XPにおけるPR-PORTS-*.logファイルの例

Port Reporter Version 1.0 Log File - Port usage log

Check PR-PIDS-04-04-1-13-19-39.log for corresponding process data

Log format: …記録内容の説明
date,time,protocol,local port,local IP address,remote port,remote IP address,PID,module,user context

04/4/1,13:19:58,TCP,4147,0.0.0.0,,0.0.0.0,3656,
  msimn.exe,<DOMAIN\user01>
04/4/1,13:19:58,TCP,4147,192.168.1.155,110,192.168.1.33,3656,
msimn.exe,<DOMAIN\user01>
04/4/1,13:20:25,TCP,4154,0.0.0.0,,0.0.0.0,1172,IEXPLORE.EXE,
<DOMAIN\user01>
04/4/1,13:20:25,TCP,4156,0.0.0.0,,0.0.0.0,1172,IEXPLORE.EXE,
<DOMAIN\user01>
04/4/1,13:20:25,TCP,4157,0.0.0.0,,0.0.0.0,1172,IEXPLORE.EXE,
<DOMAIN\user01>
04/4/1,13:20:26,TCP,4154,192.168.1.155,80,210.173.168.57,1172,
IEXPLORE.EXE,<DOMAIN\user01>
04/4/1,13:20:26,TCP,4156,192.168.1.155,80,202.239.162.252,1172,
IEXPLORE.EXE,<DOMAIN\user01>
04/4/1,13:20:26,TCP,4157,192.168.1.155,80,210.173.168.57,1172,
IEXPLORE.EXE,<DOMAIN\user01>
…以下省略…

※「⇒」は実際には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ファイルの例

Port Reporter Version 1.0 Log File

Process detail log

System Date: Thu Apr 01 13:19:39 2004


Local computer name:

UPC22 …コンピュータ名

Operating System: Windows XP


======================================================

Log number: 1 …PR-PORTSの1番目のログに対応

Log entry below recorded at: 04/4/1,13:19:58

======================================================

Process ID: 3656 (msimn.exe) …プロセス名。これはOutlook Express

User context: DOMAIN\user01

Process doesn't appear to be a service
↓使用しているポートの情報
PID Port Local IP State Remote IP:Port
3656 TCP 4147  0.0.0.0 LISTENING 0.0.0.0
3656 TCP 4147  192.168.1.155 ESTABLISHED 192.168.1.69:110

Port Statistics …使用ポート数

TCP mappings: 2
UDP mappings: 0

TCP ports in a LISTENING state: 1 = 50.00%
TCP ports in a ESTABLISHED state: 1 = 50.00%

Loaded modules:
C:\Program Files\Outlook Express\msimn.exe (0x01000000)
…プログラム名やDLL名情報
C:\WINDOWS\System32\ntdll.dll (0x77F50000)
C:\WINDOWS\system32\kernel32.dll (0x77E20000)
C:\WINDOWS\system32\ADVAPI32.dll (0x77D80000)
C:\WINDOWS\system32\RPCRT4.dll (0x78000000)
C:\WINDOWS\system32\USER32.dll (0x77CF0000)
C:\WINDOWS\system32\GDI32.dll (0x77C20000)
C:\WINDOWS\system32\SHLWAPI.dll (0x70A70000)
…以下省略…

 記録される内容は、PR-INITIAL-*.logファイルにおけるプロセス情報と同じであり、通信を行っているプロセスのファイル名やDLL、ロード・アドレスなどの情報が得られる。End of Article

関連記事(Windows Server Insider)
  Windows Tips:netstatコマンドを使いこなす
  Windows Tips:netstatでリッスンしているプロセスを特定する
  Windows Tips:ポートのリッスン状態を調査する
  Windows Tips:svchost.exeプロセスとは?
     
  関連リンク
  Port Reporter ツールの概要と入手方法(マイクロソフト)
     
この記事と関連性の高い別の記事

このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。

generated byJigsaw
「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間