Windows でポートが解放されているかを確認する方法

例えばサーバ構築時、Windows Firewall を有効にしたままアプリケーションを構成するとうまくいかないことがあります。

アプリケーションの前提条件には使用するポートが必ず記載されているはずなので、そのポートを開けてあげればいいんですが、使用するポートが複数あった場合はどれが原因なのかがわかりません。

そのため、以下の2つを確認する必要があります。

  • アプリケーションは本当にそのポートで LISTEN しているのか
  • LISTENしていたとして、Firewall は開いているのか

それぞれの確認方法を記載します。

ポートが LISTEN しているかを確認

以下のコマンドを実行します。実行後、何か1行でも出力があれば何かしらのサービスがそのポートで待ち受けています。

> netstat -ano | find “ポート番号”

例え Firewall でポートが適切に穴あけされていたとしても、そもそもそのポートで何も待ち受けていなければ何も起きません。

ファイアウォールでポートが穴あけされているか

方法はいくつかあります。以下に2つを紹介します。

ftp を使用する方法

以下のコマンドを実行します。

> ftp

> open IPアドレス ポート番号

もし Firewall で許可されていてそのポートに到達できれば「接続しました」というメッセージが出力されます。

telnet を使用する方法

以下のコマンドを実行します。

> telnet IPアドレス ポート番号

ポートが開いている場合、ブランク スクリーンが表示されます。接続に成功したということです。

ただし、Windows は telnet が標準で有効になっていないため、[プログラムと機能] -[Windows の機能の有効化または無効化] から telnet を有効にする必要があります。面倒なので ftp の方がお勧めです。

Firewall で通信を許可する

塞がっているポートを見つけたら許可してしまえばいいのですが、手動でルールを作る前に「アプリに Windows ファイアウォール経由の通信を許可する」の設定を確認して下さい。通常アプリケーションはインストール時にここにルールが追加されます。

特に注意しないといけないのがプロファイルの違いです。例えばドメインプロファイルでは許可されているがパブリックプロファイルでは拒否されている、みたいな状態はよくあります。アプリをインストールすれば勝手にポートを開けてくれると思い込んでしまわないようにしてください。

例えば Arcserve UDP 7.0 というバックアップソフトの場合、以下のようにドメインプロファイルでは許可されていますが、パブリックプロファイルでは拒否になっています。これを許可するとバックアップジョブが正常に走り出したということがありました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)