Windowsプラットフォームでは、ローカルマシンのポート(3306など)localhost
がブロックされているかどうかを確認する必要があるネイティブオプションは何ですか?
Windowsプラットフォームでは、ローカルマシンのポート(3306など)localhost
がブロックされているかどうかを確認する必要があるネイティブオプションは何ですか?
回答:
Windowsマシンを使用しているので、これらのことを行うことができます。
次のコマンドを実行して、「:3306」リスナーを探します(UDP / TCPについては言及しませんでした)。これにより、ポート上で何かが実行されていることが確認されます。
netstat -a -n
この後、このポートへの着信接続を予期しており、ファイアウォールがそれらをブロックしている可能性があると感じた場合、Windowsファイアウォールのログを開始し、切断された接続のログを確認できます
ファイアウォールの状態を確認するためのもう1つのコマンドがあります
(Windows 7ユーザー向けの更新- Nick
以下で参照)-netsh advfirewall firewallを使用します)
netsh firewall show state
このコマンドは、Windowsファイアウォール構成の詳細をダンプします
netsh firewall show config
ロギングを開始した後にアクティブなブロックがある場合(着信接続がファイアウォールによってドロップされている)、ログにそれが表示されます。
3306でリッスンしているアプリケーション/サービスを実行している場合、ファイアウォールの構成で有効になっていることが表示されます。これが表示されない場合は、おそらくこのアプリ/サービスを許可するためにファイアウォールに例外を追加するのを見逃しているでしょう。
最後に、ポート3306は通常MySQLに使用されます。したがって、このWindowsマシンでMySQLサーバーを実行していると思います。したがって、着信接続を受け入れる3306のリスナーが表示されます。表示されない場合は、アプリケーション(MySQL)を操作して最初に開始する必要があります。
|find "3306"
などのコマンドにC:\Windows\System32>netstat -an |find "3306"
NETSTAT
ポートがリッスンしている場合は通知しますが、ポートが外部に公開されている場合は通知しません。これが意味することは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できるが、別のマシンからはできない場合-その間のどこかでブロックされています。
ローカルマシンのファイアウォールが最初のアクションを妨げる可能性があることに注意してください。