web-dev-qa-db-ja.com

Windowsマシンでポートがブロックされているかどうかを確認するにはどうすればよいですか?

Windowsプラットフォームで、(localhostのように)ローカルマシンのポート(3306など)がブロックされているかどうかを確認するために必要なネイティブオプションは何ですか?

109
Boris Pavlović

あなたはWindowsマシン上にいるので、これらのことを行うことができます、

  • 次のコマンドを実行して、「:3306」リスナーを探します(UDP/TCPについては言及していません)。これにより、ポートで何かが実行されていることが確認されます。

    netstat -a -n

  • この後、このポートでの着信接続を予期していて、ファイアウォールがそれらをブロックしている可能性があると感じた場合は、 windowsファイアウォールのログ記録を開始する ドロップされた接続のログを確認します

    • Windowsファイアウォールの詳細設定に移動します
    • 「ローカルエリア接続」の横にある「設定」ボタンをクリックします
    • 「ドロップされたパケットのログ」を選択します
    • ログファイルの場所を確認します(存在しない場合は定義します)。
    • OKをクリックします
    • ここで、接続試行が行われたとき(これがいつ行われたかがわかっていると想定)、ポート3306でのドロップについてログファイルを確認します。
    • これが見られる場合は、このポートの例外を追加する必要があります。
  • ファイアウォールの状態を確認するコマンドがもう1つあります
    (Windows 7ユーザー向けの更新-以下のNickで参照 netsh advfirewall firewall

    netshファイアウォールの表示状態

    • これにより、ブロックされたポートと、アプリケーションの関連付けがあるアクティブなリスニングポートが一覧表示されます
  • このコマンドは、Windowsファイアウォール構成の詳細をダンプします

    netsh firewall show config


ログの記録を開始した後にアクティブなブロック(受信接続がファイアウォールによってドロップされている)がある場合は、ログにそれが表示されます。

3306でリッスンしているアプリケーション/サービスを実行している場合、 ファイアウォール設定 有効になっているはずです。これが表示されない場合は、ファイアウォールで例外を追加してこのアプリ/サービスを許可していない可能性があります。

最後に、ポート3306は通常MySQLに使用されます。したがって、このWindowsマシンでMySQLサーバーを実行していると思います。したがって、着信接続を受け入れる3306のリスナーが表示されます。それが表示されない場合は、アプリケーション(MySQL)を使用して、それを最初に開始する必要があります。

113
nik

NETSTATは、ポートがlisteningかどうかを通知しますが、ポートがopenかどうかを通知しません外の世界。つまり、NETSTATは、0.0.0.0がポート3306をリッスンしていることを示している可能性がありますが、ファイアウォールがそのポートをブロックしているため、外部接続を妨げている可能性があります。したがって、NETSTATだけに依存するだけでは不十分です。

ポートがブロックされているかどうかを確認する最良の方法は、クライアントマシンからポートスキャンを実行することです。

ポートスキャンを実行するには多くの方法がありますが、Windows上にいると述べたので、Microsoftコマンドラインユーティリティ PortQry およびグラフィカルバージョン PortQryUI をお勧めします。

開いているすべてのポートをテストするには:

portqry.exe -n #.#.#.#   

特定のポートをテストするには:

portqry.exe -n #.#.#.# -e #

たとえば、192.168.1.1にあるルーターのWebインターフェイスをテストするには、次のように入力します。

portqry.exe -n 192.168.1.1 -e 80

どちらが戻ります:

TCP port 80 (http service): LISTENING

HTTPDが実行されていないローカルマシンでテストすると、次が返されます。

TCP port 80 (http service): NOT LISTENING

PortScanユーティリティを使用すると、3つの結果のいずれかが得られます。

  • Listeningは、サーバーが指定されたポートでリッスンしていることを意味します
  • Filteredは、リセットフラグが設定されたTCP確認応答パケットを受信したことを意味し、ファイアウォールまたはソフトウェアの問題を示している可能性があります。
  • Not Listeningは、まったく応答を受け取らなかったことを意味します

telnetは、通常デフォルトでOSにインストールされる別のコマンドラインオプションです。このコマンドラインユーティリティを使用すると、ポートがネットワーク要求に応答するかどうかをすばやく確認できます。

telnetを使用するには、コマンドプロンプトから次のコマンドを発行するだけです。

telnet localhost 3306

上記のコマンドは、ポート3306localhostが応答しています。

25
Tim Penner

PowerShell 4.0以降では、コマンドTest-NetConnectionを使用できます

あなたの例のようにポート3306をテストしたい場合、コマンドは

Test-NetConnection -ComputerName localhost -Port 3306

TechNet Test-NetConnectionのドキュメント

21
Marcel Janus

ローカルマシンから(外部IPアドレスを使用して)ポートにtelnetで接続できるが、別のマシンからはTelnetできない場合、ポートはその間のどこかでブロックされています。

ローカルマシンのファイアウォールcouldは最初のアクションさえも阻止することに注意してください。

5
Brent