Frage Wie überprüft man, ob ein Port auf einem Windows-Rechner blockiert ist?


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


91
2018-06-16 14:21


Ursprung


Nur zur Verdeutlichung, meinst du blockiert, wie durch eine Firewall oder ein Gateway blockiert, oder meinst du schon von etwas anderem benutzt? - squillman
Das Audit My PC Firewall-Test ermöglicht es Ihnen, einen bestimmten Port oder eine Reihe von Ports von einer externen Quelle zu testen. - Peter Stuer


Antworten:


Da Sie auf der Windows-Maschine sind, können diese Dinge getan werden,

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

    netstat -a -n

  • Wenn Sie danach eingehende Verbindungen an diesem Port erwarten und vermuten, dass die Firewall sie blockiert, könnten Sie dies tun Starten Sie Windows Firewall Logging und überprüfen Sie die Protokolle auf gelöschte Verbindungen

    • Gehe zur Windows Firewall, Erweiterte Einstellungen
    • Klicken Sie auf die Schaltfläche Einstellungen neben "LAN-Verbindung"
    • Wählen Sie "Abgelegte Pakete protokollieren"
    • Sehen Sie sich den Speicherort der Protokolldatei an (falls nicht vorhanden, definieren Sie einen)
    • OK klicken
    • Wenn nun der Verbindungsversuch unternommen wird (vorausgesetzt, Sie wissen, wann dies erfolgt ist), sehen Sie sich die Protokolldatei für einen Fall an Port 3306 an.
    • Wenn dies angezeigt wird, sollten Sie eine Ausnahme für diesen Port hinzufügen.
  • Es gibt einen weiteren Befehl, um den Firewall-Status zu überprüfen
    (Update für Windows 7 Benutzer - wie bezeichnet von Nick unten - verwenden Netsh Advfirewall Firewall)

    netsh Firewall zeigt den Status an

    • Dadurch werden die blockierten Ports sowie aktive Listening-Ports mit Anwendungszuordnungen aufgelistet
  • Dieser Befehl speichert die Windows-Firewall-Konfigurationsdetails

    Netsh Firewall zeigt die Konfiguration an


Wenn Sie einen aktiven Block haben (eingehende Verbindungen werden von der Firewall gelöscht), nachdem Sie mit der Protokollierung begonnen haben, sollten Sie dies im Protokoll sehen.

Wenn Sie eine Anwendung / einen Dienst ausführen, der auf 3306 wartet, Firewall-Konfiguration sollte zeigen, dass es aktiviert ist. Wenn dies nicht angezeigt wird, haben Sie wahrscheinlich eine Ausnahme für die Firewall hinzugefügt, um diese App / diesen Dienst zuzulassen.

Schließlich wird Port 3306 normalerweise für MySQL verwendet. Also, ich nehme an, dass Sie MySQL Server auf diesem Windows-Rechner laufen lassen. Sie sollten daher einen Listener für 3306 sehen, der eingehende Verbindungen akzeptiert. Wenn Sie das nicht sehen, müssen Sie mit Ihrer Anwendung (MySQL) arbeiten, um das zuerst zu starten.


100
2018-06-16 14:28



+1 für tolle Details - Sage
Ab Windows Vista ist der Befehl "netsh firewall" veraltet. Es wird empfohlen, stattdessen "netsh advfirewall firewall" zu verwenden und auf Artikel zu verweisen go.microsoft.com/fwlink/?linkid=121488 - Nick DeVore
Um die Ausgabe in der Befehlszeile zu analysieren, fügen Sie hinzu |find "3306" zu dem Befehl, z.B. C:\Windows\System32>netstat -an |find "3306" - Cees Timmerman
Ich kann die in Schritt 2 der zweiten Empfehlung angegebenen Einstellungen nicht finden ... - Bassie
@Bassie, versuch es docs.microsoft.com/en-us/windows/access-protection/... - nik


NETSTAT wird Ihnen sagen, ob der Port ist Hören aber es wird dir nicht sagen, ob der Port ist öffnen zur Außenwelt. Was ich damit meine ist das NETSTAT kann zeigen, dass die 0.0.0.0 LISTENING auf Port 3306 ist, aber eine Firewall möglicherweise immer noch diesen Port blockiert, der externe Verbindungen verhindert; Es ist also nicht ausreichend, darauf zu vertrauen NETSTAT allein.

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

Es gibt viele Möglichkeiten, einen Port-Scan durchzuführen, aber da Sie erwähnt haben, dass Sie unter Windows sind, werde ich das Microsoft-Befehlszeilendienstprogramm vorschlagen PortQry und die grafische Version PortQryUI

Um alle offenen Ports zu testen:

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

So testen Sie einen bestimmten Port:

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

Um beispielsweise die Weboberfläche eines Routers bei 192.168.1.1 zu testen:

portqry.exe -n 192.168.1.1 -e 80

Welche gibt zurück:

TCP port 80 (http service): LISTENING

Wenn Tests auf einem lokalen Computer ohne HTTPD ausgeführt werden, wird Folgendes zurückgegeben:

TCP port 80 (http service): NOT LISTENING

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

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

telnet ist eine andere Befehlszeilenoption, die normalerweise standardmäßig auf dem Betriebssystem installiert wird. Mit diesem Befehlszeilen-Dienstprogramm können Sie schnell feststellen, ob ein Anschluss auf eine Netzwerkanforderung reagiert.

Benutzen telnet Sie würden einfach den folgenden Befehl von einer Eingabeaufforderung aus ausgeben:

telnet localhost 3306

Der obige Befehl sollte Ihnen einen schnellen Hinweis auf den Port geben 3306 auf der localhost reagiert.


18
2018-04-04 00:47



Ich lade PortQryUI und ich überprüft, nachdem ich blockiert und aktiviert die 445-Port in beiden TCP und UDP, es zeigt das gleiche hören in TCP und nicht in UDP hören. - Liam neesan


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

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

Test-NetConnection -ComputerName localhost -Port 3306

TechNet Test-NetConnection Dokumentation


8
2018-01-17 14:56



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


Wenn Sie über den lokalen Computer (unter Verwendung der externen IP-Adresse) mit dem Port telnet, aber nicht von einem anderen Computer aus, wird er irgendwo zwischen den Ports blockiert.

Beachten Sie, dass sich eine Firewall auf Ihrem lokalen Computer befindet könnte verhindere selbst die erste Aktion.


5
2018-06-16 14:27



Beachten Sie, dass Telnet auf Win7 und neueren Systemen nicht mehr installiert wird. - Alexis Wilke
@AlexisWilke Das stimmt nicht. Telnet kann installiert werden - deepdive
So installieren Sie Telnet über die Befehlszeile: dism / online / Enable-Feature / FeatureName: TelnetClient - Jason Massey