PortQry コマンド ライン ツールの使用

適用対象:  Windows 10 - すべてのエディション、Windows 8.1、Windows 8、Windows 7、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2008 R2、Windows Server 2008、Windows Server 2003

概要

PortQry は、TCP/IP 接続の問題のトラブルシューティングに役立つコマンド ライン ツールです。 このツールは、ローカル コンピューターまたはリモート コンピューター上のターゲット TCP およびユーザー データグラム プロトコル (UDP) ポートの状態を報告します。 また、ローカル コンピューターのポートの使用状況に関する詳細な情報も提供されます。

PortQry はトラブルシューティング ツールとして使用することを目的としているため、特定の問題のトラブルシューティングに使用するユーザーには、コンピューティング環境に関する十分な知識が必要です。

PortQry は、いくつかのモードのいずれかでコマンド プロンプトから使用できます。

  • コマンド ライン モード。 このモードを使用して、ローカル コンピューターまたはリモート コンピューターのトラブルシューティングを行うことができます。
  • ローカル モード。 このモードでは、ローカル コンピューターのトラブルシューティングを目的とした複数のパラメーターを使用できます。
  • 対話型モード。 コマンド ライン モードと同様ですが、ショートカット コマンドとパラメーターを使用できます。

注意

PortQry のグラフィカル UI を含む、PortQryUI と呼ばれる別のツールをダウンロードできます。 PortQryUI には、PortQry の使用を容易にできるいくつかの機能があります。 PortQryUI ツールを取得するには、「 PortQryUI - PortQry コマンド ライン ポート スキャナーのユーザー インターフェイス」を参照してください

PortQry のテストと結果

一般的なポート スキャン ツールは、ターゲット UDP ポートがインターネット制御メッセージ プロトコル (ICMP) の "宛先に到達できない" メッセージを返さない場合、ポートが LISTENING 状態であることを報告します。 この結果は、次のいずれかの理由で正確でない可能性があります。

  • ダイレクト データグラムに対する応答がない場合は、ターゲット ポートが フィルター処理される 可能性があります。
  • ほとんどのサービスは、送信された未フォーマットのユーザー データグラムには応答しません。 通常、ポートをリッスンするサービスまたはプログラムは、特定のセッション層またはアプリケーション層プロトコルを使用するメッセージにのみ応答します。

より正確で有用な結果を生成するために、PortQry は 2 段階のテスト プロセスを使用します。

手順 1: ポート状態テスト

PortQry は、ポートの状態を次の 3 つの値のいずれかとして報告します。

  • LISTENING: この応答は、プロセスがターゲット ポートでリッスンしていることを示します。 PortQry がターゲット ポートから応答を受け取った。
  • NOT LISTENING: この応答は、ターゲット ポートでプロセスがリッスンされていないことを示します。 PortQry は、ターゲット ポートから次のいずれかの ICMP メッセージを受信しました。

    宛先に到達できないポートに到達できない

  • FILTERED: この応答は、ターゲット ポートがフィルター処理されていることを示します。 PortQry がターゲット ポートから応答を受信しませんでした。 プロセスがターゲット ポートでリッスンしている場合とリッスンしていない場合があります。 既定では、PortQry は 、FILTERED の応答を返す前に TCP ポートに 3 回クエリを実行し、FILTERED の応答を返す前に UDP ポートに対して 1 回クエリを実行 します

手順 2: 特殊なテスト

ターゲット UDP ポートからの応答がない場合、PortQry はポートが LISTENING または FILTERED であることを報告します。 ただし、接続の問題のトラブルシューティングを行うときは、ポートがフィルター処理されているかリッスンしているかを把握しておくと便利です。 これは、1 つ以上のファイアウォールを含む環境では特に当てはまります。

PortQry は、ターゲット ポートでリッスンしているサービスまたはプログラムと対話できる 2 つ目のテスト セットを使用して、ポート状態レポートを絞り込みます。 このテストでは、PortQry は次の処理を行います。

  • PortQry では、 %SYSTEMROOT%\System32\Drivers\Etc フォルダーにある Services ファイルを使用して、各ポートでリッスンするサービスを決定します。
  • PortQry は、期待されるサービスまたはプログラム用に特別に構築されたメッセージを作成し、そのメッセージをターゲット ポートに送信します。 サービスまたはプログラムによっては、次のようなトラブルシューティングに役立つ情報がメッセージによって要求される場合があります。
    • ドメインとドメイン コントローラーの情報 (LDAP クエリ)
    • 登録済みのクライアント サービスとポート (RPC クエリ)
    • 匿名アクセスが許可されるかどうか (FTP クエリ)
    • MAC アドレス (NetBIOS クエリ)
    • Mspclnt.ini ファイル情報 (ISA Server クエリ)
  • PortQry は、解析、書式設定、およびテスト レポートの一部としてサービスまたはプログラムからの応答を返します。

ローカル コンピューターのトラブルシューティングに関するその他のテスト

PortQry をインストールしたコンピューターのポートのトラブルシューティングを行う必要がある場合は、ローカル モードで PortQry を使用します。 コマンド ラインでローカル モード パラメーターを使用する場合は、ローカル コンピューターで次のようなタスクを実行できます。

  • ポート マッピングを列挙する
  • 変更の特定のポートを監視する
  • 変更の特定のプロセスを監視する

詳細については、「 ローカル (コマンド ライン) モードでの PortQry の使用」を参照してください。

コマンド ライン モードでの PortQry の使用

PortQry は、他のコマンド ライン ツールと同じ方法でコマンド プロンプトで実行できます。 この記事のほとんどの例では、コマンド ライン PortQry コマンドを示します。 コマンド ライン モードでは、コマンド文字列に複数のオプションを追加して、実行するクエリとその実行方法を指定できます。 コマンド ライン モードで PortQry を実行するには、次の構文を使用するコマンドを実行します。

portqry.exe -n <name_to_query> [options]

注意

このコマンドでは、 <name_to_query> クエリを実行する IP アドレス、コンピューター名、またはドメインを指定します。 このパラメーターは必須です。 [オプション]は省略可能なパラメーターです。

コマンド ライン モードの PortQry パラメーター

通常のコマンド ライン モードでは、次のパラメーターを使用できます。

パラメーター 説明 コメント
-n <name> 特定の宛先にクエリを実行する
  • これは、コマンド ライン モードに必要な唯一のパラメーターです。
  • 値は <name> 、クエリを実行するコンピューターの名前または IP アドレスを表します。 この値にスペースを含めることはできません。
-p <protocol> 指定したプロトコルを使用する
  • 値は <protocol> 、クエリを実行するポートの種類を表します (可能な値は tcp、、 udp、または both)。
  • 既定値は tcp です。
-e <port_number> ターゲット ポート ("エンドポイント" とも呼ばれます) を指定します。
  • この値は <port_number> 、移行先コンピューターでクエリを実行するポートを表します。
  • 既定値は 80 です。
-o <port_number>,<port_number> シーケンスで複数のターゲット ポートを指定する 値は <port_number>、<port_number> シーケンス内でクエリを実行するポート番号のコンマ区切りリストを表します。 コンマの周囲にスペースを使用しないでください。
-r <port_number>:<port_number> ターゲット ポートの範囲を指定する
  • :<port_number> 値は<port_number>、開始ポート番号と終了ポート番号をコロンで区切って表します。 コロンの周囲にスペースを使用しないでください。
  • 開始ポート番号は、終了ポート番号より小さくする必要があります。
-l <filename.txt> ログ ファイルを生成する
  • 値は <filename.txt> 、ログ ファイルの名前と拡張子を表します。 この値にスペースを含めることはできません。
  • コマンドを実行すると、PortQry によって、ログ ファイルがインストールされているディレクトリに作成されます。
  • ファイルが既に存在する場合、PortQry は上書きすることを確認するように求められます (パラメーターも使用 -y しない限り)。
-y 以前のログ ファイルを上書きする
  • と共-lに使用-yすると、PortQry によって既存のログ ファイルが上書きされ、アクションの確認を求めるメッセージが表示されません。
  • PortQry コマンド文字列に含 -lまれていない場合、PortQry は無視されます -y
-sl 応答のために余分な時間を待機する (低速リンク遅延とも呼ばれます) このパラメーターを使用して、PortQry が UDP ポートからの応答を待機する時間を 2 倍にし、PortQry がポートがリッスンしていないか、フィルター処理されていることを確認します。 低速または信頼性の低いネットワーク リンクに対してクエリを実行すると、通常の待機時間が短すぎて応答を受信できない場合があります。
-nr 逆引き参照をスキップする
  • 既定では、ターゲット コンピューターの IP アドレスの指定に使用 -n する場合、PortQry は逆引き名参照を実行して IP アドレスを名前に解決します。 このプロセスは、特に PortQry で IP アドレスを解決できない場合に、時間がかかる場合があります。 クエリのこの手順をスキップするために使用 -nr します。
  • コンピューターまたはドメイン名の指定に使用 -n する場合、PortQry は無視します -nr
-sp <port_number> 特定のソース ポートからのクエリ
  • この値は <port_number> 、PortQry がクエリの送信に使用するポートを表します。
  • PortQry では、別のプロセスが既に使用しているポートを使用できません。 指定したポートが既に使用されている場合、PortQry は次のエラー メッセージを返します。
    指定したソース ポートを使用できません。
    ポートは既に使用されています。
    使用されていないポートを指定し、コマンドをもう一度実行します。
  • 次の場合、PortQry はクエリの最初のテストに指定されたポートを使用しますが、2 番目のテストは使用しません。
    • RPC (TCP ポートと UDP ポート 135)
    • LDAP (UDP ポート 389)
    • NetBIOS アダプターの状態クエリ (UDP ポート 137)
    このような場合、PortQry は 2 番目のテストに一時的なポートを使用します。 これが発生すると、PortQry は出力に "一時的なソース ポートの使用" を記録します。
  • PortQry がインストールされているコンピューターで IPSec ポリシー エージェントも実行されている場合、UDP ポート 500 をソース ポートとして使用できないことがあります。 ポート 500 を使用できるように IPSec ポリシー エージェントを一時的にオフにするには、次を実行 net stop PolicyAgentします。 テストが完了したら、 net start PolicyAgent.
-cn !<community_name>! SMTP コミュニティにクエリを実行する
  • 値は <community_name> 、クエリを実行する SNMP コミュニティの名前を表します。 左側の列に示すように、感嘆符を使用してこの値を区切る必要があります。
  • SNMP サービスがターゲット ポートでリッスンしていない場合、PortQry は無視します -cn
  • 既定のコミュニティ名は .public
-q PortQry をサイレント モードで実行する
  • 使用 -qすると、エラー メッセージを除くすべての画面出力が PortQry によって抑制されます。
  • エラー メッセージ以外の出力を表示するには、-q``-l. PortQry は、ログ ファイルに通常の出力を記録します。
  • ログ ファイルが既に存在し、一緒-lに使用-qする場合は、PortQry によって既存のログ ファイルが上書きされ、メッセージが表示されます。
  • 、、または -p both. -rと一緒に-o使用-qすることはできません。
  • このパラメーターは、バッチ ファイルを使用して PortQry コマンド文字列を実行する場合に特に役立ちます。

コマンド ライン モードのパラメーターに関する備考

  • 任意のポート番号の値は、1 から 65535 までの有効なポート番号である必要があります。
  • -oおよび-rパラメーターは-e相互に排他的です。 1 つの PortQry コマンドでは、これらのパラメーターの 1 つだけを使用できます。
  • UDP ポート 389 (LDAP) へのクエリは、サーバー 2008 Windows実行されているドメイン コントローラーに対して機能しない可能性があります。 UDP ポート 389 で実行されているサービスの可用性を確認するには、PortQry の代わりに Nltest を使用できます。 詳細については、「 Nltest」を参照してください
  • ポート 135 (RPC) を使用 -e してクエリを実行すると -o、PortQry は RPC エンドポイント マッパーに現在登録されているすべてのエンドポイントを返します。

    重要

    を使用すると、 -rPortQry は RPC エンドポイント マッパーに対してクエリを実行しません。

  • ポート 53 (DNS) にクエリを実行すると、PortQry は TCP と UDP の portqry.microsoft.com 両方を使用して DNS クエリを送信します。 サーバーから応答が返された場合、PortQry はポートが LISTENING であると判断します。

    注意

    DNS サーバーが正または負の応答を返すかどうかは重要ではありません。 応答は、ポートがリッスンしていることを示します。

ローカル (コマンド ライン) モードでの PortQry の使用

リモート ターゲット コンピューター上のポートに対してクエリを実行する代わりに、PortQry をローカル モードで使用して、PortQry が実行されているローカル コンピューター上の TCP ポートと UDP ポートに関する詳細情報を取得できます。 ローカル モードで PortQry を実行するには、次の構文を使用します。

portqry -local | -wpid <pid> | -wport <port_number> [-wt <seconds>] [-l <filename.txt>] [-v]

この構文のプレースホルダーについては、次のローカル モード パラメーターの表を参照してください。

パラメーター 説明 コメント
-local ローカル情報を取得する
  • ローカル コンピューターで現在アクティブになっているすべての TCP および UDP ポート マッピングを列挙します。 この出力は、コマンドによって生成される出力に netstat.exe -an 似ています。
  • PID からポートへのマッピングをサポートするコンピューターでは、出力には、ローカル コンピューター上のポートを使用しているプロセスの PID が含まれます。 詳細オプション (-v) を使用する場合、出力には PID が属するサービスの名前も含まれ、プロセスが読み込んだすべてのモジュールが一覧表示されます。 この情報を使用して、コンピューターで実行されている特定のプログラムまたはサービスに関連付けられているポートを特定できます。
-wport <port_number> ポートを監視する
  • 変更の特定のポートを監視します。 この値は <port_number> 、監視するポートを表します。
  • TCP ポートの場合、PortQry は次の状態間の変更を報告します。
    • CLOSE_WAIT
    • 閉鎖
    • 確立
    • FIN_WAIT_1
    • LAST_ACK
    • 聞く
    • SYN_RECEIVED
    • SYN_SEND
    • TIMED_WAIT
  • UDP ポートの場合、PortQry はプログラムがポートにバインドされている場合に報告しますが、UDP ポートがデータグラムを受信するかどうかは報告されません。
  • 監視を停止するには、Esc キーを押します。
-wpid <pid> プロセス ID (PID) を監視する
  • 接続の数と状態の変化について、特定の PID を監視します。 この値は <process_number> 、監視する PID を表します。
  • 監視を停止するには、Esc キーを押します。
-wt <seconds> 特定の間隔で確認する
  • /<>値で-wport``"-wpid表される間隔で識別されるターゲットの状態を確認します。
  • 値は <seconds> 1 から 1,200 (以下を含む) の間である必要があります。
  • 既定値は 60 です。
  • 単独または一-local緒に使用-wtすることはできません。
-l <filename.txt> ログ ファイルを生成する
  • 値は <filename.txt> 、ログ ファイルの名前と拡張子を表します。 この値にスペースを含めることはできません。
  • コマンドを実行すると、PortQry によって、ログ ファイルがインストールされているディレクトリに作成されます。
  • ファイルが既に存在する場合、PortQry は上書きすることを確認するように求められます (パラメーターも使用 -y しない限り)。
-y 以前のログ ファイルを上書きする
  • と共-lに使用-yすると、PortQry によって既存のログ ファイルが上書きされ、アクションの確認を求めるメッセージが表示されません。
  • PortQry コマンド文字列に含 -lまれていない場合、PortQry は無視されます -y
-v 詳細な出力を生成する PortQry では、画面出力 (および使用されている場合はログ ファイル) に追加の詳細が提供されます。

ローカル モードのパラメーターに関する備考

  • -wportおよび-wpidパラメーターは-local相互に排他的です。 これらのパラメーターは、1 つの PortQry コマンド文字列に 1 つだけ使用できます。
  • パラメーターは -q ローカル モードでは機能しません。
  • 場合によっては、PortQry は、システム アイドル プロセス (PID 0) が一部の TCP ポートを使用していることを報告することがあります。 この動作は、ローカル プログラムが TCP ポートに接続してから停止した場合に発生する可能性があります。 プログラムが実行されなくなった場合でも、ポートに対するプログラムの TCP 接続は、数分間 "Timed Wait" 状態のままになる場合があります。 このような場合、PortQry はポートが使用中であることを検出する可能性がありますが、PID がリリースされたため、ポートを使用しているプログラムを識別できません。 既定では、ポートはセグメントの最大有効期間の 2 倍の間、"Timed Wait" 状態のままです。
  • 各プロセスについて、PortQry はアクセスできる限り多くの情報を報告します。 一部の情報へのアクセスは制限されています。 たとえば、Idle プロセスと CSRSS プロセスのモジュール情報へのアクセスは、アクセス制限によってユーザー レベルのコードが開くことができないため、禁止されています。 最適な結果を得るには、ローカル管理者または同様の資格情報を持つアカウントのコンテキストでローカル モード コマンドを実行します。
  • いずれか -wport または -wpid-l緒に使用する場合は、Esc キーを使用して、Ctrl + C の代わりに PortQry を中断して終了します。 Esc キーを押して、PortQry がログ ファイルを正しく閉じて終了することを確認する必要があります。 Esc の代わりに Ctrl + C キーを押して PortQry を停止すると、ログ ファイルが空になったり破損したりする可能性があります。

対話型モードでの PortQry の使用

コンピューター間の接続の問題をトラブルシューティングする場合は、多くの繰り返しコマンドを入力する必要があります。 このようなアクションは、対話型モードで PortQry を使用すると、より簡単に実行できます。

対話型モードは、 Nslookup DNS ユーティリティまたは Nblookup WINS ユーティリティの対話型機能に似ています。

対話型モードで PortQry を開始するには、パラメーターを -i 使用します。 たとえば、次のコマンドを実行します。

portqry -i

このコマンドの出力は、次の抜粋のようになります。

Portqry Interactive Mode

Type 'help' for a list of commands

Default Node: 127.0.0.1

Current option values:  
   end port= 80  
   protocol= TCP  
   source port= 0 (ephemeral)
>

対話型モードのコマンド

対話型モードでは、次のコマンドを使用できます。

コマンド 説明 コメント
node <name> または n <name> クエリ先を設定する
  • 値は <name> 、クエリを実行するコンピューターの名前または IP アドレスを表します。この値にスペースを含めることはできません。
  • 既定値は 127.0.0.1 (ローカル コンピューター) です。
query または q クエリを送信する
  • 現在の設定を使用して、現在の宛先にクエリを実行します。
  • 既定のプロトコルは .tcp
  • 既定の宛先ポートは TCP ポート 80 です。
  • 既定のソース ポートはポート 0 (エフェメラル ポート) です。
  • コマンドには query 、いくつかの一般的なクエリのいずれかを実行するために、いくつかのショートカットのいずれかを使用できます。 使用可能なショートカットの一覧については、「 対話型モードのクエリ ショートカット」を参照してください。
set <option>=<value> クエリ オプションの値を設定する
  • このコマンドでは、 <option> 設定するオプションの名前を表し、 <value> オプションの新しい値を表します。
  • 使用可能なオプションの現在の値の一覧を表示するには、次のように入力 set allします。
  • 使用可能なオプションの一覧については、「 対話型モード オプション」を参照してください。
exit 対話型モードを終了する

対話型モードのクエリ ショートカット

次のショートカットをコマンドと共に query 使用すると、ポートとプロトコルのオプションを設定しなくても、一般的なクエリを実行できます。 次の構文を使用してください。

q <shortcut>

注意

このコマンドでは、 <shortcut> 次の表のショートカットのいずれかを表します。 ショートカットを省略すると、コマンドは q TCP ポート 80 を照会します。

ショートカット クエリを実行するポート
dns TCP ポート 53、UDP ポート 53。
ftp TCP ポート 21
imap TCP ポート 143
ipsec UDP ポート 500
isa TCP ポート 1745、UDP ポート 1745
ldap TCP ポート 389、UDP ポート 389
l2tp UDP ポート 1701
mail TCP ポート 25、110、および 143
pop3 TCP ポート 110
rpc TCP ポート 135、UDP ポート 135
smtp TCP ポート 25
snmp UDP ポート 161
sql TCP ポート 1433、UDP ポート 1434
tftp UDP ポート 69

たとえば、対話型モードでの入力 q dns は、通常のコマンド ライン モードでの実行 portqry -n 127.0.0.1 -p both -e 135 と同じです。

対話型モードのオプション

このコマンドを set 使用して、ソース ポートや低速リンク遅延などのオプションを設定できます。 次の構文を使用してください。

set <option>=<value>

注意

このコマンドでは、 <option> 設定するオプションの名前を表し <value> 、オプションの新しい値を表します。

オプション 説明 コメント
set all オプションの現在の値を表示する
set port=<port_number>
set e=<port_number>
ターゲット ポートを指定する この値は <port_number> 、移行先コンピューターでクエリを実行するポートを表します。
set sport=<port_number>
set sp=<port_number>
ソース ポートを指定する
  • この値は <port_number> 、PortQry がクエリの送信に使用するポートを表します。
  • PortQry では、別のプロセスが既に使用しているポートを使用できません。
  • ポート番号を 0 に指定すると、PortQry は一時的なポートを使用します。
set protocol=<protocol>
set p=<protocol>
使用するプロトコルを指定する この値は <protocol> 、クエリ (tcpudpまたは both) するポートの種類を表します。
set cn=<community_name> SMTP コミュニティを指定する
  • 値は <community_name> 、クエリを実行する SNMP コミュニティの名前を表します。
  • SNMP サービスがターゲット ポートでリッスンしていない場合、PortQry は無視します -cn
  • 既定のコミュニティ名は .public
set nr 逆引き名参照をオフまたはオンにする
  • 既定では、IP アドレスをクエリの宛先として設定している場合、PortQry は IP アドレスを名前に解決します。 このオプションを変更すると、PortQry は名前解決手順をスキップします。
  • 名前逆引き参照を再度有効にするには、もう一度実行 set nr します。
set sl 低速リンク遅延のオン/オフを切り替える
  • このオプションを変更すると、PortQry は UDP ポートからの応答を待機する時間の長さを 2 倍にし、PortQry はポートがリッスンしていないか、フィルター処理されていることを判断します。 低速または信頼性の低いネットワーク リンクに対してクエリを実行すると、通常の待機時間が短すぎて応答を受信できない場合があります。
  • 低速リンク遅延をもう一度オフにするには、もう一度実行 set sl します。

IP アドレス 10.0.1.10 を持つコンピューターに対してクエリを実行するとします。 対話型モードのコマンド プロンプトで、次のように入力 n 10.0.1.10します。 このコマンドは、次の抜粋のような出力を生成します。

Default Node: 10.0.1.10

>

DNS クエリを送信するには、対話型モードのコマンド プロンプトに入力 q dns します。 このコマンドは、次の抜粋のような出力を生成します。

resolving service name using local services file...
UDP port resolved to the 'domain' service

IP address resolved to myserver.contoso.com

querying...

UDP port 53 (domain service): LISTENING

>

ポートとサービス間の関連付けのカスタマイズ

既定では、Windows ベースのすべてのコンピューターには、%SYSTEMROOT%\System32\Drivers\Etc フォルダーにあるサービス ファイルがあります。 PortQry では、このファイルを使用して、ポート番号を対応するサービス名に解決します。 PortQry では、この情報を使用してクエリの形式を選択します。 このファイルを編集して PortQry に送信し、書式設定されたメッセージを別のポートに送信できます。 たとえば、次のエントリが一般的なサービス ファイルに表示されます。

ldap              389/tcp                           #Lightweight Directory Access Protocol

このポート エントリを編集することも、追加のエントリを追加することもできます。 PortQry に LDAP クエリを強制的にポート 1025 に送信するには、次のようにエントリを変更します。

ldap              1025/tcp                           #Lightweight Directory Access Protocol

次の例では、PortQry とそのパラメーターを使用する方法を示します。

ローカル モード

コマンド ライン モード

ローカル コンピューターにクエリを実行する

出力 portqry -local は次の抜粋のようになります。

TCP/UDP Port Usage

96 active ports found

Port Local IPState Remote IP:Port  
TCP 80 0.0.0.0 LISTENING 0.0.0.0:18510  
TCP 80 169.254.149.9 TIME WAIT 169.254.74.55:3716  
TCP 80 169.254.149.9 TIME WAIT 169.254.200.222:3885  
TCP 135 0.0.0.0 LISTENING 0.0.0.0:10280  
UDP 135 0.0.0.0 :  
UDP 137 169.254.149.9 :  
UDP 138 169.254.149.9 :  
TCP 139 169.254.149.9 LISTENING 0.0.0.0:43065  
TCP 139 169.254.149.9 ESTABLISHED 169.254.4.253:4310  
TCP 139 169.254.149.9 ESTABLISHED 169.254.74.55:3714  

アクセスが制限されている可能性がある場合にローカル コンピューターにクエリを実行する

前の例のように、PortQry をローカル モードで実行すると、次の抜粋のような出力が表示される場合があります。 このような出力は、PortQry が使用しているセキュリティ コンテキストに、要求したすべての情報にアクセスするための十分なアクセス許可がないことを示しています。

Port and Module Information by Process

Note: restrictions applied to some processes may
prevent Portqry from accessing more information

For best results run Portqry in the context of
the local administrator

======================================================  
Process ID: 0 (System Idle Process)

PIDPortLocal IPState Remote IP:Port  
0TCP 4442 169.254.113.96 TIME WAIT 169.254.5.136:80  
0TCP 4456 169.254.113.96 TIME WAIT 169.254.5.44:445  

Port Statistics

TCP mappings: 2  
UDP mappings: 0

TCP ports in a TIME WAIT state: 2 = 100.00%

Could not access module information for this process

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

特定の間隔を使用してプロセス ID を監視する

次のコマンドは、特定のプロセスを監視します。

portqry.exe -wpid 1276 -wt 2 -v -l pid.txt

その結果、PortQry は次のアクションを実行します。

  • 1276 PID を持つプロセスを識別し、Esc キーを押すまで 2 秒ごとに使用しているポートの状態を確認します。
  • ログ ファイル pid.txt を作成します。 その名前のファイルが既に存在する場合は、ファイルを上書きすることを確認するメッセージが PortQry によって表示されます。
  • 余分な詳細出力を含め、ログ ファイル内のすべての出力を記録します。

ログ ファイルの内容は、次の抜粋のようになります。

PortQry Version 2.0 Log File
  
System Date: <DateTime>
  
Command run:  
portqry -wpid 1276 -wt 2 -v -l pid.txt
  
Local computer name:
  
host123
  
Watching PID: 1276
  
Checking for changes every 2 seconds
  
verbose output requested
  
Service Name: DNS  
Display Name: DNS Server  
Service Type: runs in its own process

============
System Date: <DateTime>

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

Process ID: 1276 (dns.exe)

Service Name: DNS
Display Name: DNS Server
Service Type: runs in its own process

PIDPortLocal IPState Remote IP:Port
1276TCP 53 0.0.0.0 LISTENING 0.0.0.0:2160
1276TCP 1087 0.0.0.0 LISTENING 0.0.0.0:37074
1276UDP 1086 0.0.0.0 :
1276UDP 2126 0.0.0.0 :
1276UDP 53 127.0.0.1 :
1276UDP 1085 127.0.0.1 :
1276UDP 53 169.254.11.96 :

Port Statistics

TCP mappings: 2
UDP mappings: 5

TCP ports in a LISTENING state: 2 = 100.00%

Loaded modules:
C:\WINDOWS\System32\dns.exe (0x01000000)
C:\WINDOWS\system32\ntdll.dll (0x77F40000)
C:\WINDOWS\system32\kernel32.dll (0x77E40000)
C:\WINDOWS\system32\msvcrt.dll (0x77BA0000)
C:\WINDOWS\system32\ADVAPI32.dll (0x77DA0000)
C:\WINDOWS\system32\RPCRT4.dll (0x77C50000)
C:\WINDOWS\System32\WS2_32.dll (0x71C00000)
C:\WINDOWS\System32\WS2HELP.dll (0x71BF0000)
C:\WINDOWS\system32\USER32.dll (0x77D00000)
C:\WINDOWS\system32\GDI32.dll (0x77C00000)
C:\WINDOWS\System32\NETAPI32.dll (0x71C40000)

ターゲットとプロトコルを指定する

注意

このセクションの各例では、既定のポートであるポート 80 に対してクエリを実行します。

次のコマンドは、完全修飾ドメイン名 (FQDN) を使用して指定されたコンピューター上の既定の TCP ポートに対してクエリを実行します。

portqry -n myDomainController.example.com -p tcp

次のコマンドは、コンピューター名を使用して指定されたコンピューター上の既定の UDP ポートに対してクエリを実行します。

portqry -n myServer -p udp

次のコマンドは、IP アドレスを使用して指定されたコンピューターの既定の TCP ポートと UDP ポートを照会します。

portqry -n 192.168.1.20 -p both

次のコマンドは、前のコマンドと同じクエリを実行しますが、名前解決手順をスキップします。

portqry -n 192.168.1.20 -p both -nr

次のコマンドは、Web サーバーの既定の TCP ポートに対してクエリを実行します。

portqry -n www.widgets.microsoft.com

1 つ以上のターゲット ポートを指定する

次のコマンドは、TCP ポート 25 に対してクエリを実行して、メール サーバーの SMTP サービスをテストします。

portqry -n mail.example.com -p tcp -e 25

次のコマンドは、IP アドレス 192.168.1.20 を持つコンピューターの TCP ポート 60897 と UDP ポート 60897 を照会します。

portqry -n 192.168.1.20 -p both -e 60897

次のコマンドは、コンピューター "myServer" で UDP ポート 139、1025、および 135 (そのシーケンス) に対してクエリを実行します。

portqry -n myServer -p udp -o 139,1025,135

次のコマンドは、コンピューター "myServer" でポート 135 からポート 139 (包括) までのポートの範囲を照会します。

portqry -n myServer -p udp -r 135:139

PortQry 出力のログ ファイルを指定する

次のコマンドは、mail.widgets.microsoft.com で TCP ポート 143 を照会し、 portqry.txt ファイルに出力を記録します。 ファイルが既に存在する場合、PortQry は確認を求めずに上書きします。

portqry -n mail.widgets.microsoft.com -p tcp -e 143 -l portqry.txt -y

次のコマンドは、mail.widgets.microsoft.com で TCP ポート 143、110、および 25 に対してクエリを実行します。 ターゲット ポートごとに、PortQry は通常の 2 倍の長さで応答を待機します。

  portqry -n mail.widgets.microsoft.com -p tcp -o 143,110,25 -sl

ソース ポートを指定する

次のコマンドでは、ローカル コンピューターの UDP ポート 3001 (使用可能な場合) を使用して、192.168.1.20 の UDP ポート 53 にクエリを送信します。 サービスがそのポートでリッスンしていて、クエリに応答する場合は、ローカル コンピューター上の UDP ポート 3001 に応答を送信します。

portqry -p udp -e 53 -sp 3001 -n 192.168.1.20

次のコマンドでは、ローカル コンピューターの UDP ポート 3000 (使用可能な場合) を使用して、myDomainController.contoso.com の UDP ポート 389 にクエリを送信します。 既定では、LDAP サービスはこのポートでリッスンしている必要があります。 LDAP サービスが最初のクエリに応答する場合、PortQry は一時的なソース ポートを使用して書式設定されたクエリを送信し、応答を受信します。

portqry -n myDomainController.contoso.com -e 389 -sp 3000

バッチ ファイルを使用して PortQry をサイレント モードで実行する

次のテキストは、PortQry をサイレント モードで実行するバッチ ファイルの例です。

:Top
portqry -n 169.254.18.22 -e 443 -nr -l pqlog.txt -q
:end

このバッチ ファイルを実行すると、PortQry はpqlog.txtという名前のログ ファイル 生成します。 このファイルの内容は次のようになります。

PortQry Version 2.0 Log File

System Date: Thu Sep 16 10:35:03 2021

Command run:
 portqry -n 169.254.18.22 -e 443 -nr -l pqlog.txt -q

Local computer name:

 SOURCESERVER

Querying target system called:

 169.254.18.22

TCP port 443 (https service): LISTENING


========= end of log file ========= 

クエリ ポート 135 (RPC サービス)

次のコマンドは、myServer コンピューター上の UDP ポート 135 に対してクエリを実行します。 既定では、RPC サービスはこのポートでリッスンしている必要があります。

portqry -n myServer -p udp -e 135

その結果、PortQry は次のアクションを実行します。

  • PortQry では、 %SYSTEMROOT%\System32\Drivers\Etc フォルダー内の Services ファイルを使用して、UDP ポート 135 をサービスに解決します。 既定の構成を使用して、PortQry は RPC エンドポイント マッパー サービス (Epmap) にポートを解決します。
  • PortQry は、フォーマットされていないユーザー データグラムを宛先コンピューターの UDP ポート 135 に送信します。
    PortQry はターゲット ポートから応答を受け取りません。 これは、RPC エンドポイント マッパー サービスが正しく書式設定された RPC クエリにのみ応答するためです。 PortQry は、ポートが LISTENING または FILTERED であることを報告します。
  • PortQry は、RPC エンドポイント マッパーに現在登録されているすべてのエンドポイントを要求する正しく書式設定された RPC クエリを作成します。 PortQry は、このクエリを宛先コンピューターの UDP ポート 135 に送信します。
  • 応答に応じて、PortQry は次のいずれかのアクションを実行します。
    • PortQry がこのクエリに対する応答を受信した場合、PortQry は応答全体をユーザーに返し、ポートが LISTENING であることを報告します。
    • PortQry がこのクエリに対する応答を受け取らない場合は、ポートが FILTERED であることを報告します。
UDP port 135 (epmap service): LISTENING or FILTERED  
Querying Endpoint Mapper Database...  
Server's response:  

UUID: 50abc2a4-574d-40b3-9d66-ee4fd5fba076
ncacn_ip_tcp:169.254.12.191[4144]

UUID: ecec0d70-a603-11d0-96b1-00a0c91ece30 NTDS Backup Interface
ncacn_np:\\MYSERVER[\PIPE\lsass]

UUID: e3514235-4b06-11d1-ab04-00c04fc2dcd2 MS NT Directory DRS Interface
ncacn_ip_tcp:169.254.12.191[1030]

UUID: e3514235-4b06-11d1-ab04-00c04fc2dcd2 MS NT Directory DRS Interface
ncadg_ip_udp:169.254.12.191[1032]

UUID: 12345678-1234-abcd-ef00-01234567cffb
ncacn_np:\\MYSERVER[\PIPE\lsass]

UUID: 12345678-1234-abcd-ef00-01234567cffb
ncacn_np:\\MYSERVER[\PIPE\POLICYAGENT]

Total endpoints found: 6

==== End of RPC Endpoint Mapper query response ====

UDP port 135 is LISTENING

この出力から、サービスがポートでリッスンしているかどうかだけでなく、移行先コンピューター上の RPC エンドポイント マッパー データベースに登録されているサービスまたはプログラムも判断できます。 出力には、各プログラムのユニバーサル一意識別子 (UUID)、注釈付きの名前 (存在する場合)、各プログラムが使用するプロトコル、プログラムのバインド先のネットワーク アドレス、およびプログラムのエンドポイントが角かっこで囲まれています。

注意

ポートの範囲を -r スキャンするために PortQry コマンドでオプションを指定すると、PortQry はエンドポイント情報について RPC エンドポイント マッパーに対してクエリを実行しません。 このパラメーターは、ポートの範囲のスキャンを高速化します。