Windowsプラットフォームで、(localhost
のように)ローカルマシンのポート(3306など)がブロックされているかどうかを確認するために必要なネイティブオプションは何ですか?
あなたはWindowsマシン上にいるので、これらのことを行うことができます、
次のコマンドを実行して、「:3306」リスナーを探します(UDP/TCPについては言及していません)。これにより、ポートで何かが実行されていることが確認されます。
netstat -a -n
この後、このポートでの着信接続を予期していて、ファイアウォールがそれらをブロックしている可能性があると感じた場合は、 windowsファイアウォールのログ記録を開始する ドロップされた接続のログを確認します
ファイアウォールの状態を確認するコマンドがもう1つあります
(Windows 7ユーザー向けの更新-以下のNick
で参照 netsh advfirewall firewall )
netshファイアウォールの表示状態
このコマンドは、Windowsファイアウォール構成の詳細をダンプします
netsh firewall show config
ログの記録を開始した後にアクティブなブロック(受信接続がファイアウォールによってドロップされている)がある場合は、ログにそれが表示されます。
3306でリッスンしているアプリケーション/サービスを実行している場合、 ファイアウォール設定 有効になっているはずです。これが表示されない場合は、ファイアウォールで例外を追加してこのアプリ/サービスを許可していない可能性があります。
最後に、ポート3306は通常MySQLに使用されます。したがって、このWindowsマシンでMySQLサーバーを実行していると思います。したがって、着信接続を受け入れる3306のリスナーが表示されます。それが表示されない場合は、アプリケーション(MySQL)を使用して、それを最初に開始する必要があります。
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
上記のコマンドは、ポート3306
のlocalhost
が応答しています。
PowerShell 4.0以降では、コマンドTest-NetConnection
を使用できます
あなたの例のようにポート3306をテストしたい場合、コマンドは
Test-NetConnection -ComputerName localhost -Port 3306
ローカルマシンから(外部IPアドレスを使用して)ポートにtelnetで接続できるが、別のマシンからはTelnetできない場合、ポートはその間のどこかでブロックされています。
ローカルマシンのファイアウォールcouldは最初のアクションさえも阻止することに注意してください。