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?
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?
Antworten:
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
Es gibt einen weiteren Befehl zum Überprüfen des Firewall-Status
(Update für Windows 7-Benutzer - wie im Nick
Folgenden beschrieben - verwenden Sie die netsh advfirewall-Firewall ).
netsh firewall show state
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.
|find "3306"
dem Befehl Folgendes hinzu:C:\Windows\System32>netstat -an |find "3306"
NETSTAT
Zeigt 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 NETSTAT
mö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 NETSTAT
allein 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 PortQry
und 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 überwachtFiltered
bedeutet, dass ein TCP-Bestätigungspaket mit gesetztem Reset-Flag empfangen wurde, das wahrscheinlich auf ein Firewall- oder Softwareproblem hinweistNot Listening
bedeutet, dass es überhaupt keine Antwort erhalten hattelnet
ist 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 telnet
Sie einfach den folgenden Befehl an einer Eingabeaufforderung ein:
telnet localhost 3306
Der obige Befehl sollte Ihnen einen schnellen Hinweis geben, ob der Port 3306
auf dem localhost
reagiert.
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
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.