534 Stimmen

Wie kann ich feststellen, ob ein Port auf einem Windows-Server offen ist?

Ich versuche, eine Website unter einem alternativen Port auf einem Server zu installieren, aber der Port kann durch eine Firewall geschlossen sein. Gibt es eine Möglichkeit, einen Ping zu einem bestimmten Port zu senden oder zu empfangen, um zu sehen, ob er offen ist?

2 Stimmen

799voto

Alnitak Punkte 324207

Vorausgesetzt, es handelt sich um einen TCP- (und nicht um einen UDP-) Port, den Sie zu verwenden versuchen:

  1. Auf dem Server selbst, verwenden Sie netstat -an um zu prüfen, welche Ports abgehört werden.

  2. Von außen, verwenden Sie einfach telnet host port (oder telnet host:port auf Unix-Systemen), um zu sehen, ob die Verbindung abgelehnt oder akzeptiert wird oder ob es zu einer Zeitüberschreitung kommt.

Bei der letztgenannten Prüfung, also im Allgemeinen:

  • Verbindung abgelehnt bedeutet, dass an diesem Anschluss nichts läuft
  • akzeptiert bedeutet, dass an diesem Anschluss etwas läuft
  • Timeout bedeutet, dass eine Firewall den Zugriff blockiert

Unter Windows 7 oder Windows Vista wird die Standardoption 'telnet' nicht als interner oder externer Befehl, als ausführbares Programm oder als Batch-Datei erkannt. Um dieses Problem zu lösen, aktivieren Sie es einfach: Klicken Sie auf *Start** →. BedienfeldProgrammeFunktionen von Turn Windows an oder aus. Blättern Sie in der Liste nach unten und wählen Sie Telnet-Klient und klicken Sie OK .

322 Stimmen

In Win7 oder Vista wird die Standardoption 'telnet' nicht als interner oder externer Befehl, ausführbares Programm oder Batch-Datei erkannt. Um dieses Problem zu lösen, aktivieren Sie es einfach: Klicken Sie auf Start, Systemsteuerung, Programme und dann auf Windows-Funktionen ein- oder ausschalten. Scrollen Sie in der Liste nach unten, wählen Sie Telnet-Client und klicken Sie auf OK.

0 Stimmen

@volody irgendeinen Vorschlag, wie man das ohne Adminrechte machen kann?

12 Stimmen

@PankajKohli verwenden PuTTy telnet-Client zu verwenden. Er muss nicht installiert werden.

243voto

J.Celmer Punkte 2115

Unter Windows können Sie Folgendes verwenden

netstat -na | find "your_port"

um die Ergebnisse einzugrenzen. Sie können auch filtern nach LISTENING , ESTABLISHED , TCP und so weiter. Beachten Sie jedoch die Groß- und Kleinschreibung.

6 Stimmen

Sie können find nicht so verwenden, es sucht nach Dateien, Sie sollten grep verwenden

44 Stimmen

@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 genau den hier erwähnten Befehl ausgeführt, und es hat perfekt funktioniert.

0 Stimmen

Sie können auch Folgendes ausführen: netstat -an | select-string -pattern "your_port"

137voto

knocte Punkte 15776

Wenn Sie von außen, nicht vom Server selbst, prüfen und sich nicht die Mühe machen wollen, telnet (da es in den letzten Windows-Versionen nicht enthalten ist) oder andere Software zu installieren, dann steht Ihnen die native PowerShell zur Verfügung:

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

(Leider funktioniert dies nur mit PowerShell 4.0 oder einer neueren Version. Um Ihre PowerShell-Version zu überprüfen, geben Sie ein $PSVersionTable .)

PS: Beachten Sie, dass in diesen Tagen einige Behauptungen in der Twittersphäre auftauchen, die darauf hinweisen, dass diese Antwort durch die Erwähnung von "Test-Connection" aus PowerShell Core oder der Abkürzung "tnc" verbessert werden könnte. Siehe https://twitter.com/david_obrien/status/1214082339203993600 und helfen Sie mir bitte, diese Antwort zu bearbeiten und sie zu verbessern!


(Wenn Sie eine PSVersion < 4.0 haben, haben Sie Pech gehabt. Prüfen Sie diese Tabelle:

Enter image description here

Auch wenn Sie Ihre Version von PowerShell aktualisieren können, indem Sie die Windows-Verwaltungsrahmen 4.0 Das hat bei mir nicht geklappt, Test-NetConnection cmdlet ist immer noch nicht verfügbar).

4 Stimmen

Dies ist die beste Antwort. Die Installation von telnet ist auf fremden Servern nicht immer ganz einfach!

2 Stimmen

Das ist mit Sicherheit die beste Antwort.

1 Stimmen

Dies ist eine zuverlässigere Option als Telnet, denn Telnet würde sich einfach aufhängen und nichts melden, während dies in meinem Fall meldet, dass der Anschluss verfügbar ist.

45voto

nsv Punkte 10549

Das hat mir gefallen:

netstat -an | find "8080" 

von Telnet

telnet 192.168.100.132 8080

Vergewissern Sie sich, dass die Firewall auf diesem Rechner ausgeschaltet ist.

0 Stimmen

Als ich diesen Befehl verwendet habe, d.h. netstat -an | find "19345", habe ich kein Ergebnis erhalten. was bedeutet das? -

2 Stimmen

Bedeutet dies, dass dieser Anschluss frei ist

1 Stimmen

Ich erhalte einen Fehler, wenn ich Folgendes ausführe netstat -an | find "8080" heißt es, no such file named "8080"

42voto

Gunjan Moghe Punkte 529

Auf einem Windows-Rechner können Sie PortQry von Microsoft, um zu überprüfen, ob eine Anwendung bereits auf einem bestimmten Port lauscht, indem Sie den folgenden Befehl verwenden:

portqry -n 11.22.33.44 -p tcp -e 80

4 Stimmen

Ports mit einer Firewall werden im Allgemeinen als "FILTERED" angezeigt.

0 Stimmen

Sie können dieses Tool auch zur Überprüfung des UDP-Ports verwenden: portqry -n 11.22.33.44 -p udp -e 19132

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X