Come verificare se una porta è aperta su un host remoto o locale?
sobes.tech AI
Risposta dell'AI
Per verificare se una porta è aperta su un host remoto o locale, è possibile utilizzare i seguenti metodi:
-
netcat(nc): Strumento universale per lavorare con le connessioni di rete.- Host locale:
nc -zv localhost <porta> - Host remoto:
nc -zv <host_remoto> <porta>
Le opzioni
-z(modalità zero-I/O) e-v(verbose) sono usate per scansionare senza inviare dati e per mostrare informazioni dettagliate. - Host locale:
-
telnet: Protocollo per il controllo remoto, che può essere usato per verificare la connessione sulla porta specificata.- Host locale:
telnet localhost <porta> - Host remoto:
telnet <host_remoto> <porta>
Se la connessione si stabilisce (di solito appare un invito o una riga vuota), la porta è aperta. Per chiuderla, premere
Ctrl+], poiquite Invio. - Host locale:
-
nmap: Scanner di porte potente. Richiede installazione.- Host locale:
nmap -p <porta> localhost - Host remoto:
nmap -p <porta> <host_remoto>
L'output mostrerà lo stato della porta:
open,closedofiltered. - Host locale:
-
< /dev/tcpo< /dev/udp(in Bash): In Bash, si possono usare i descrittori di file per creare connessioni TCP o UDP.- Host locale (TCP):
timeout 1 bash -c "cat < /dev/tcp/localhost/<porta>" 2>/dev/null && echo "Port <porta> è aperta" || echo "Port <porta> è chiusa" - Host remoto (TCP):
timeout 1 bash -c "cat < /dev/tcp/<host_remoto>/<porta>" 2>/dev/null && echo "Port <porta> è aperta" || echo "Port <porta> è chiusa"
timeoutviene usato per evitare blocchi se la porta è chiusa.2>/dev/nullnasconde gli errori. Questo metodo non funziona per UDP. - Host locale (TCP):
-
Python: Uso di socket per la verifica.
import socket def check_port(host, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) # Imposta timeout try: s.connect((host, port)) print(f"Porta {port} su {host} è aperta") except (socket.timeout, ConnectionRefusedError): print(f"Porta {port} su {host} è chiusa o filtrata") finally: s.close() # Esempio di utilizzo check_port("localhost", 80) # Verifica host locale check_port("google.com", 443) # Verifica host remoto
La scelta del metodo dipende dagli strumenti disponibili, dal sistema operativo e dalla specifica attività. netcat e nmap sono tra gli strumenti più flessibili e informativi.