WindowsやUNIX系のOSではローカル、リモートのマシンで空いているポートを確認(ポートスキャン)するコマンドがある。 今回は、Windowsでローカル、リモート別にそれぞれで使えるポートスキャンコマンドについてまとめてみた。

ローカルマシンのポートチェックコマンド

ローカルマシン(コマンドを実行するマシン)のポートを確認するには、以下のコマンドが使える。

netstat

定番のコマンド。
コマンドを実行しているローカルマシン上のポートチェックを行うためのツールで、UNIX系OSにも搭載されている。
現在サポートされているWindowsであれば、標準で搭載されている。

使い方については、こちらのページを参考にするとわかりやすい。

リモートマシンのポートチェックコマンド

今回の記事のメインとなる、リモートマシンに対してのポートチェック(ポートスキャン)を行うためのツール。

telnet

ソフトのインストール無しで使えるポートチェックコマンドとしては定番。(まぁ、本来の用途では無いけど…)
使用する場合は、「コントロール パネル\すべてのコントロール パネル項目\プログラムと機能」から「Windowsの機能の有効化または無効化」からTelnetクライアントの機能を有効化する必要がある(Windows 7の場合)。

使用する場合は、以下のようにコマンドを実行する。

C:\>telnet 対象のホスト ポート番号

実行の結果、「接続に失敗しました」と表示された場合、そのポートは開いてない。

ftp

こちらも本来の用途ではないが、ポートを指定して実行することでポートチェックを行う事が出来る。
使用する際は、以下のようにコマンドを実行する。

C:\>ftp
ftp> open 対象のホスト ポート番号

実行の結果、何も表示されなかった場合はそのポートは開いていない事になる。

PSping

別途インストールが必要になるが、ポートを指定してPingを実行する事が出来るツール。
以前にも紹介したPSexecと同様に、PStoolsの中に含まれるプログラムだ。

こちらからヘルプの内容とツールのダウンロードを行う事が出来る。
使用する際は、以下のようにコマンドを実行する。

psping 対象のホスト:ポート番号

portqry

別途ダウンロード、インストールが必要だが、Windows用のポートスキャンコマンドとしては定番。
対象のホストと、チェック対象のポート番号を範囲指定してスキャンすることが出来る。
使用する際は、以下のようにコマンドを実行する。

portqry -n 対象のホスト -r チェック対象となるポートの開始番号:終了番号

以上がWindowsで主に使用出来るポートチェック、ポートスキャンのコマンドとなる。その他、Windows XPではバンドルされている「netsh」コマンドの「diag」オプションがポートスキャン可能だったが、どうもVista以降では無くなってしまったようだ。
その他使えるコマンドがあれば教えて下さい。