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


105

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


1
明確にするために、ファイアウォールやゲートウェイによってブロックされているなど、ブロックされているという意味ですか、それとも別のものによって既に使用されているという意味ですか?
squillman

1
監査私のPCファイアウォールのテストは、あなたが特定のポートまたは外部ソースからのポートの範囲をテストすることができます。
ピーター・ストゥーア2009年

回答:


111

Windowsマシンを使用しているので、これらのことを行うことができます。

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

    netstat -a -n

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

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

    netsh firewall show state

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

    netsh firewall show config


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

3306でリッスンしているアプリケーション/サービスを実行している場合、ファイアウォールの構成で有効になっていることが表示されます。これが表示されない場合は、おそらくこのアプリ/サービスを許可するためにファイアウォールに例外を追加するのを見逃しているでしょう。

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


4
詳細については+1
セージ

3
Windows Vista以降、「netsh firewall」コマンドは廃止されました。それはあなたの代わりに、「netshをadvfirewallをファイアウォール」を使用し、参照記事をお勧めしますgo.microsoft.com/fwlink/?linkid=121488
ニックDeVore

5
コマンドラインで出力を解析するために、追加|find "3306"などのコマンドにC:\Windows\System32>netstat -an |find "3306"
CEES Timmerman

私は... 2番目の推薦のステップ2で指定した設定ボタンを見つけることができません
Bassie


23

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いるかどうかを迅速に示します。


PortQryUIをダウンロードし、tcpとudpの両方で445ポートをブロックして有効にした後チェックしました。tcpで同じリスニングを示し、udpでリスニングしていません。
リアムニーサン

17

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

例のようにポート3306をテストする場合、コマンドは

Test-NetConnection -ComputerName localhost -Port 3306

TechNet Test-NetConnectionドキュメント


+1。ほとんどの最新のWindowsマシンに何もインストールする必要のない、本当に素晴らしい代替手段です。
DCaugs

5

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

ローカルマシンのファイアウォールが最初のアクションを妨げる可能性があることに注意してください。


telnetはWin7以降のシステムにはもうインストールされていないことに注意してください。
アレクシスウィルケ

@AlexisWilkeそれは正しくありません。Telnetをインストールできます
15年

4
コマンドラインからtelnetをインストールするには:dism / online / Enable-Feature / FeatureName:TelnetClient
Jason Massey
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.