Wie stelle ich fest, ob auf einem Windows-Server ein Port geöffnet ist? [geschlossen]

478

Ich versuche, eine Site unter einem alternativen Port auf einem Server zu installieren, aber der Port wird möglicherweise von einer Firewall geschlossen. Gibt es eine Möglichkeit, an einem bestimmten Port zu pingen oder zu pingen, um festzustellen, ob er geöffnet ist?

Jason
quelle

Antworten:

732

Angenommen, es handelt sich um einen TCP-Port (und nicht um einen UDP-Port), den Sie verwenden möchten:

  1. netstat -anÜberprüfen Sie auf dem Server selbst, welche Ports empfangsbereit sind.

  2. Verwenden Sie von außen einfach telnet host port(oder telnet host:portauf Unix-Systemen), um festzustellen, ob die Verbindung abgelehnt, akzeptiert oder eine Zeitüberschreitung festgestellt wurde.

Bei diesem letzteren Test dann im Allgemeinen:

  • Verbindung abgelehnt bedeutet, dass an diesem Port nichts ausgeführt wird
  • Akzeptiert bedeutet, dass an diesem Port etwas ausgeführt wird
  • Timeout bedeutet, dass eine Firewall den Zugriff blockiert

Unter Windows 7 oder Windows Vista wird die Standardoption 'Telnet' nicht als interner oder externer Befehl, ausführbares Programm oder Batchdatei erkannt. Um dies zu lösen, aktivieren Sie es einfach: Klicken Sie auf * Start ** → SystemsteuerungProgrammeWindows-Funktionen ein- oder ausschalten. Scrollen Sie in der Liste nach unten, wählen Sie Telnet Client aus und klicken Sie auf OK.

Alnitak
quelle
312
In Win7 oder Vista wird die Standardoption 'telnet' nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt. Um dies zu lösen, aktivieren Sie es einfach: Klicken Sie auf Start, Systemsteuerung, Programme und aktivieren oder deaktivieren Sie die Windows-Funktionen.
Scrollen Sie
12
@PankajKohli verwendet stattdessen den PuTTy- Telnet-Client. Es muss nicht installiert werden.
Colin Pickard
52
Was bedeutet Could not open connection to the host, on port *x*: Connect failed?
Kenny Evitt
2
@Alnitak Ich wollte nur nachsehen, da ich denke, dass dies meine Frage bereits beantwortet. Wann telnet api-3t.sandbox.paypal.com 443bekomme ich Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedIst das, weil die Firewall es blockiert?
Popeye
2
Es gibt einen Unterschied, wenn Sie telnet.exe öffnen und dann o host portvs open command line (cmd.exe) telnet host port
eingeben
185

Unter Windows können Sie verwenden

netstat -na | find "your_port"

die Ergebnisse einzugrenzen. Sie können auch Filter für LISTENING, ESTABLISHED, TCPund so weiter . Beachten Sie jedoch, dass zwischen Groß- und Kleinschreibung unterschieden wird.

J. Celmer
quelle
4
Sie können find so nicht verwenden, es wird nach Dateien suchen, Sie sollten grep verwenden
Moataz Elmasry
38
@MoatazElmasry, das stimmt unter Linux, aber dies ist auf einem Windows-Server, wo find der richtige Befehl ist. Grep ist unter Windows nicht verfügbar. Ich habe gerade den hier erwähnten genauen Befehl ausgeführt und er hat perfekt funktioniert.
Ben Wyatt
4
Als ich diesen Befehl benutzte, dh netstat -an | finde "19345", ich habe kein Ergebnis bekommen. was bedeutet das?
Nanosoft
14
findfunktionierte nicht in Windows 10 für mich, aber netstat -na | findstr "8080"funktionierte
Arun
6
nichts passiert, nicht mit find oder findstr
nützlichBee
83

Wenn Sie von außen und nicht vom Server selbst prüfen und sich nicht die Mühe machen möchten, Telnet (da es nicht mit den letzten Windows-Versionen geliefert wird) oder eine andere Software zu installieren, haben Sie native PowerShell:

Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed

(Leider funktioniert dies nur mit PowerShell 4.0 oder neuer. Geben Sie Folgendes ein, um Ihre PowerShell-Version zu überprüfen $PSVersionTable.)

PS: Beachten Sie, dass es heutzutage einige Behauptungen auf der Twittersphere gibt, die darauf hindeuten, dass diese Antwort durch Erwähnung von "Test-Connection" von PowerShell Core oder der Verknüpfung "tnc" verbessert werden könnte. Siehe https://twitter.com/david_obrien/status/1214082339203993600 und helfen Sie mir, diese Antwort zu bearbeiten, um sie bitte zu verbessern!


(Wenn Sie eine PSVersion <4.0 haben, haben Sie kein Glück. Überprüfen Sie diese Tabelle:

Geben Sie hier die Bildbeschreibung ein

Obwohl Sie Ihre PowerShell-Version durch Installation von Windows Management Framework 4.0 aktualisieren können , hat dies für mich nicht funktioniert. Das Cmdlet Test-NetConnection ist immer noch nicht verfügbar.

knocte
quelle
3
Dies ist die beste Antwort. Die Installation von Telnet ist auf den Servern anderer Benutzer nicht immer einfach!
TrojanName
Muss auf jeden Fall die beste Antwort sein.
QtRoS
1
Dies ist eine zuverlässigere Option als Telnet. Telnet würde einfach hängen bleiben und nichts melden, während dies meldet, dass der Port in meinem Fall verfügbar ist.
Axk
42

Auf einem Windows-Computer können Sie mit PortQry von Microsoft mithilfe des folgenden Befehls überprüfen, ob eine Anwendung bereits einen bestimmten Port überwacht :

portqry -n 11.22.33.44 -p tcp -e 80
Gunjan Moghe
quelle
4
Firewall-Ports werden im Allgemeinen als "GEFILTERT" angezeigt.
Dlanod
Sie können dieses Tool auch verwenden, um den UDP-Port zu überprüfen:portqry -n 11.22.33.44 -p udp -e 19132
Antony
41

Das hat mir gefallen:

netstat -an | find "8080" 

von Telnet

telnet 192.168.100.132 8080

Stellen Sie einfach sicher, dass die Firewall auf diesem Computer ausgeschaltet ist.

Sarvar Nishonboev
quelle
Als ich diesen Befehl benutzte, dh netstat -an | finde "19345", ich habe kein Ergebnis bekommen. was bedeutet das? -
Nanosoft
2
es bedeutet, dass dieser Hafen frei ist
Sarvar Nishonboev
Ich erhalte eine Fehlermeldung, wenn ich es ausführe netstat -an | find "8080",no such file named "8080"
Pragyaditya Das
24

Wenn telnetnicht verfügbar, laden Sie PuTTY herunter . Es ist ein weit überlegener Telnet-, SSH- usw. Client und in vielen Situationen nützlich, nicht nur in diesem, insbesondere wenn Sie einen Server verwalten.

Machtyn
quelle
Ja, aber nicht zum Einfügen von Forth-Code, beispielsweise mit AmForth (es sei denn, Sie verwenden PuTTY in Kombination mit Edit Overflow ).
Peter Mortensen
13

Möchten Sie ein Tool dafür? Es gibt eine Website unter http://www.canyouseeme.org/ . Andernfalls benötigen Sie einen anderen Server, der Sie zurückruft, um festzustellen, ob ein Port geöffnet ist ...

Douglas Mayle
quelle
12

Verwenden Sie diese Option, wenn Sie alle verwendeten und empfangenden Ports auf einem Windows-Server anzeigen möchten:

netstat -an |find /i "listening"

Alle offenen, abhörenden und eingerichteten Ports anzeigen:

netstat -a
zehnaseeb
quelle
7

Unter Windows Server können Sie verwenden

netstat -an | where{$_.Contains("Yourport")}
Derbium
quelle
Behebt das Firewall-Problem in keiner Weise.
Marquis von Lorne
5
Dies funktioniert auf Powershell
Paco Zarate
Oder meinst du "ein Windows Server"?
Peter Mortensen
4

Eine andere Option ist tcping .

Zum Beispiel:

tcping host port

Vadzim
quelle
4

PsPing von Sysinternals ist auch sehr gut.

Peter Mortensen
quelle
Gutes Werkzeug. Beispielcode wäre: PsPing -n 20 -i 0 Servername: Port
Asher
1

Folgendes hat bei mir funktioniert:

  • Öffnen Sie eine Eingabeaufforderung
  • Art telnet
  • Microsoft Telnet> Öffnen Sie <Hostname oder IP-Adresse> <Leerzeichen> <Port>

Es wird bestätigt, ob der Port geöffnet ist.

p_champ
quelle
0

Ein weiteres Dienstprogramm, das ich gefunden habe und das auch gut und klein ist, ist PortQry Command Line Port Scanner Version 2.0 .

Sie können einen Server und einen Port anpingen und es wird Ihnen der Status des Ports angezeigt. Es gibt ein Befehlszeilenprogramm und eine Benutzeroberfläche dafür.

Gilberto
quelle