Sobes.tech
Junior

Wie überprüft man, ob ein Port auf einem entfernten oder lokalen Host offen ist?

sobes.tech KI

Antwort von AI

Um Port-Check auf einem entfernten oder lokalen Host kann mit den folgenden Methoden durchgeführt werden:

  1. netcat (nc): Ein universelles Werkzeug für die Arbeit mit Netzwerkverbindungen.

    • Lokaler Host:
      nc -zv localhost <Port>
      
    • Entferner Host:
      nc -zv <entfernter_host> <Port>
      

    Die Optionen -z (Zero-I/O-Modus) und -v (verbose) werden verwendet, um ohne Datenübertragung zu scannen und detaillierte Informationen anzuzeigen.

  2. telnet: Ein Protokoll für die Fernsteuerung, das zur Überprüfung der Verbindung auf einem angegebenen Port verwendet werden kann.

    • Lokaler Host:
      telnet localhost <Port>
      
    • Entferner Host:
      telnet <entfernter_host> <Port>
      

    Wenn die Verbindung hergestellt wird (normalerweise erscheint eine Eingabeaufforderung oder eine leere Zeile), ist der Port offen. Zum Schließen Ctrl+], dann quit und Enter drücken.

  3. nmap: Ein leistungsstarker Port-Scanner. Erfordert Installation.

    • Lokaler Host:
      nmap -p <Port> localhost
      
    • Entferner Host:
      nmap -p <Port> <entfernter_host>
      

    Die Ausgabe zeigt den Status des Ports: open, closed oder filtered.

  4. < /dev/tcp oder < /dev/udp (in Bash): In Bash können Dateideskriptoren verwendet werden, um TCP- oder UDP-Verbindungen herzustellen.

    • Lokaler Host (TCP):
      timeout 1 bash -c "cat < /dev/tcp/localhost/<Port>" 2>/dev/null && echo "Port <Port> ist offen" || echo "Port <Port> ist geschlossen"
      
    • Entferner Host (TCP):
      timeout 1 bash -c "cat < /dev/tcp/<entfernter_host>/<Port>" 2>/dev/null && echo "Port <Port> ist offen" || echo "Port <Port> ist geschlossen"
      

    timeout wird verwendet, um das Blockieren zu verhindern, falls der Port geschlossen ist. 2>/dev/null unterdrückt Fehlerausgaben. Diese Methode funktioniert nicht für UDP.

  5. Python: Verwendung von Sockets zur Überprüfung.

    import socket
    
    def check_port(host, port):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)  # Timeout setzen
        try:
            s.connect((host, port))
            print(f"Port {port} auf {host} ist offen")
        except (socket.timeout, ConnectionRefusedError):
            print(f"Port {port} auf {host} ist geschlossen oder gefiltert")
        finally:
            s.close()
    
    # Beispielnutzung
    check_port("localhost", 80)       # Überprüfung des lokalen Hosts
    check_port("google.com", 443)  # Überprüfung des entfernten Hosts
    

Die Wahl der Methode hängt von den verfügbaren Werkzeugen, dem Betriebssystem und der spezifischen Aufgabe ab. netcat und nmap sind einige der flexibelsten und informativsten Werkzeuge.