Sobes.tech
Junior

Hoe controleer je of een poort open is op een remote of lokale host?

sobes.tech AI

Antwoord van AI

Om te controleren of een poort open is op een remote of lokale host, kunnen de volgende methoden worden gebruikt:

  1. netcat (nc): Een universeel hulpmiddel voor het werken met netwerkverbindingen.

    • Lokale host:
      nc -zv localhost <poort>
      
    • Remote host:
      nc -zv <remote_host> <poort>
      

    De opties -z (zero-I/O mode) en -v (verbose) worden gebruikt om te scannen zonder gegevens te verzenden en voor het tonen van gedetailleerde informatie.

  2. telnet: Protocol voor remote management, dat kan worden gebruikt om de verbinding op de aangegeven poort te controleren.

    • Lokale host:
      telnet localhost <poort>
      
    • Remote host:
      telnet <remote_host> <poort>
      

    Als de verbinding wordt gemaakt (meestal verschijnt een prompt of een lege regel), is de poort open. Sluiten kan door Ctrl+] te drukken, daarna quit en Enter.

  3. nmap: Een krachtige poortscanner. Vereist installatie.

    • Lokale host:
      nmap -p <poort> localhost
      
    • Remote host:
      nmap -p <poort> <remote_host>
      

    De output toont de status van de poort: open, closed of filtered.

  4. < /dev/tcp of < /dev/udp (in Bash): In Bash kunnen bestandsdescriptors worden gebruikt om TCP- of UDP-verbindingen te maken.

    • Lokale host (TCP):
      timeout 1 bash -c "cat < /dev/tcp/localhost/<poort>" 2>/dev/null && echo "Poort <poort> is open" || echo "Poort <poort> is gesloten"
      
    • Remote host (TCP):
      timeout 1 bash -c "cat < /dev/tcp/<remote_host>/<poort>" 2>/dev/null && echo "Poort <poort> is open" || echo "Poort <poort> is gesloten"
      

    timeout wordt gebruikt om vastlopen te voorkomen als de poort gesloten is. 2>/dev/null verbergt foutmeldingen. Deze methode werkt niet voor UDP.

  5. Python: Gebruik van sockets voor controle.

    import socket
    
    def check_port(host, port):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)  # Timeout instellen
        try:
            s.connect((host, port))
            print(f"Poort {port} op {host} is open")
        except (socket.timeout, ConnectionRefusedError):
            print(f"Poort {port} op {host} is gesloten of gefilterd")
        finally:
            s.close()
    
    # Voorbeeldgebruik
    check_port("localhost", 80)       # Controleer lokale host
    check_port("google.com", 443)  # Controleer remote host
    

De keuze van methode hangt af van de beschikbare tools, het besturingssysteem en de specifieke taak. netcat en nmap zijn enkele van de meest flexibele en informatieve tools.