Wie überprüfe ich, ob ein Port auf einem Windows-Computer blockiert ist?


105

Welche nativen Optionen muss ich auf der Windows-Plattform prüfen, ob ein Port (z. B. 3306) auf meinem lokalen Computer (wie in localhost) blockiert ist?


1
Nur zur Verdeutlichung, meinst du blockiert, wie von einer Firewall oder einem Gateway blockiert, oder meinst du bereits verwendet von etwas anderem?
Squillman

1
Mit dem Audit My PC Firewall-Test können Sie einen bestimmten Port oder einen Bereich von Ports von einer externen Quelle testen.
Peter Stuer

Antworten:


111

Da Sie auf dem Windows-Computer sind, können diese Dinge getan werden,

  • Führen Sie den folgenden Befehl aus und suchen Sie nach einem Listener ": 3306" (Sie haben UDP / TCP nicht erwähnt). Dadurch wird bestätigt, dass am Port etwas läuft.

    netstat -a -n

  • Wenn Sie danach eingehende Verbindungen über diesen Port erwarten und der Meinung sind, dass die Firewall diese blockiert, können Sie die Windows-Firewallprotokollierung starten und die Protokolle auf unterbrochene Verbindungen überprüfen

    • Wechseln Sie zu Windows Firewall, Erweiterte Einstellungen
    • Klicken Sie auf die Schaltfläche Einstellungen neben "LAN-Verbindung".
    • Wählen Sie "Verworfene Pakete protokollieren"
    • Überprüfen Sie den Speicherort der Protokolldatei (falls nicht vorhanden, definieren Sie einen).
    • OK klicken
    • Wenn Sie nun versuchen, eine Verbindung herzustellen (vorausgesetzt, Sie wissen, wann dies geschehen ist), durchsuchen Sie die Protokolldatei nach einem Dropdown auf Port 3306.
    • Wenn dies angezeigt wird, möchten Sie eine Ausnahme für diesen Port hinzufügen.
  • Es gibt einen weiteren Befehl zum Überprüfen des Firewall-Status
    (Update für Windows 7-Benutzer - wie im NickFolgenden beschrieben - verwenden Sie die netsh advfirewall-Firewall ).

    netsh firewall show state

    • Dadurch werden die blockierten Ports sowie die aktiven Überwachungsports mit Anwendungszuordnungen aufgelistet
  • Mit diesem Befehl werden die Konfigurationsdetails der Windows-Firewall ausgegeben

    netsh firewall show config


Wenn Sie nach dem Start der Protokollierung einen aktiven Block haben (eingehende Verbindungen werden von der Firewall getrennt), sollte dies im Protokoll vermerkt sein.

Wenn Sie eine Anwendung / einen Dienst ausführen, die / der 3306 überwacht, sollte die Firewall-Konfiguration anzeigen, dass sie aktiviert ist. Wenn dies nicht angezeigt wird, haben Sie wahrscheinlich versäumt, eine Ausnahme mit der Firewall hinzuzufügen, um diese App / diesen Dienst zuzulassen.

Schließlich wird Port 3306 normalerweise für MySQL verwendet. Ich nehme also an, dass Sie auf diesem Windows-Computer einen MySQL-Server ausführen. Sie sollten daher einen Listener für 3306 sehen, der eingehende Verbindungen akzeptiert. Wenn Sie das nicht sehen, müssen Sie zuerst mit Ihrer Anwendung (MySQL) arbeiten, um damit zu beginnen.


4
+1 für tolle Details
Sage

3
Ab Windows Vista ist der Befehl "netsh firewall" veraltet. Es wird empfohlen, stattdessen "netsh advfirewall firewall" zu verwenden und auf den Artikel go.microsoft.com/fwlink/?linkid=121488
Nick DeVore

5
Um die Ausgabe in der Befehlszeile zu analysieren, fügen Sie |find "3306"dem Befehl Folgendes hinzu:C:\Windows\System32>netstat -an |find "3306"
Cees Timmerman

Ich kann den in Schritt 2 der zweiten Empfehlung angegebenen Einstellungsbutton nicht finden ...
Bassie


23

NETSTATZeigt an, ob der Port empfangsbereit ist , zeigt jedoch nicht an, ob der Port für die Außenwelt geöffnet ist . Damit meine ich, dass NETSTATmöglicherweise angezeigt wird, dass die Version 0.0.0.0 auf Port 3306 ABHÖRT, eine Firewall jedoch möglicherweise den Port blockiert, der externe Verbindungen verhindert. es reicht also nicht aus, sich NETSTATallein zu verlassen .

Die beste Möglichkeit, um zu überprüfen, ob ein Port blockiert ist, besteht darin, einen Port-Scan vom Client-Computer aus durchzuführen.

Es gibt viele Möglichkeiten, einen Port-Scan durchzuführen. Da Sie jedoch erwähnt haben, dass Sie unter Windows arbeiten, schlage ich das Microsoft-Befehlszeilendienstprogramm PortQryund die grafische Version PortQryUI vor

So testen Sie alle offenen Ports:

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

So testen Sie einen bestimmten Port:

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

So testen Sie beispielsweise das Webinterface eines Routers unter 192.168.1.1:

portqry.exe -n 192.168.1.1 -e 80

Welches gibt zurück:

TCP port 80 (http service): LISTENING

Wenn beim Testen auf einem lokalen Computer ohne ausgeführtes HTTPD Folgendes zurückgegeben wird:

TCP port 80 (http service): NOT LISTENING

Mit einem PortScan-Dienstprogramm erhalten Sie eines von 3 Ergebnissen.

  • Listening bedeutet, dass der Server den angegebenen Port überwacht
  • Filtered bedeutet, dass ein TCP-Bestätigungspaket mit gesetztem Reset-Flag empfangen wurde, das wahrscheinlich auf ein Firewall- oder Softwareproblem hinweist
  • Not Listening bedeutet, dass es überhaupt keine Antwort erhalten hat

telnetist eine weitere Befehlszeilenoption, die normalerweise standardmäßig auf dem Betriebssystem installiert ist. Mit diesem Befehlszeilenprogramm können Sie schnell feststellen, ob ein Port auf eine Netzwerkanforderung reagiert.

Zur Verwendung geben telnetSie einfach den folgenden Befehl an einer Eingabeaufforderung ein:

telnet localhost 3306

Der obige Befehl sollte Ihnen einen schnellen Hinweis geben, ob der Port 3306auf dem localhostreagiert.


Ich lade PortQryUI herunter und habe nach dem Blockieren und Aktivieren des 445-Ports in tcp und udp überprüft, dasselbe Hören in tcp und nicht Hören in udp angezeigt wird.
Liam Neesan

17

Seit PowerShell 4.0 können Sie den Befehl verwenden Test-NetConnection

Wenn Sie Port 3306 wie in Ihrem Beispiel testen möchten, lautet der Befehl

Test-NetConnection -ComputerName localhost -Port 3306

TechNet Test-NetConnection-Dokumentation


+1 dafür. Eine wirklich schöne Alternative, bei der auf den meisten modernen Windows-Maschinen nichts installiert werden muss.
DCaugs

5

Wenn Sie vom lokalen Computer (unter Verwendung der externen IP-Adresse) zum Port telneten können, aber nicht von einem anderen Computer - dann wird er irgendwo dazwischen blockiert.

Beachten Sie, dass eine Firewall auf dem lokalen Computer könnte sogar die erste Aktion verhindern.


Beachten Sie, dass Telnet unter Win7 und neueren Systemen nicht mehr installiert wird.
Alexis Wilke

@AlexisWilke Das stimmt nicht. Telnet kann installiert werden
Deepdive

4
So installieren Sie Telnet über die Befehlszeile: dism / online / Enable-Feature / FeatureName: TelnetClient
Jason Massey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.