¿Cómo verificar si un puerto está abierto en un host remoto o local?
sobes.tech AI
Respuesta de la IA
Para verificar si un puerto está abierto en un host remoto o local, se pueden usar los siguientes métodos:
-
netcat(nc): Herramienta universal para trabajar con conexiones de red.- Host local:
nc -zv localhost <puerto> - Host remoto:
nc -zv <host_remoto> <puerto>
Las opciones
-z(modo cero-I/O) y-v(detallado) se usan para escanear sin enviar datos y para mostrar información detallada. - Host local:
-
telnet: Protocolo para control remoto, que se puede usar para verificar la conexión en el puerto especificado.- Host local:
telnet localhost <puerto> - Host remoto:
telnet <host_remoto> <puerto>
Si la conexión se establece (generalmente aparece un aviso o línea en blanco), el puerto está abierto. Se puede cerrar presionando
Ctrl+], luegoquityEnter. - Host local:
-
nmap: Escáner de puertos potente. Requiere instalación.- Host local:
nmap -p <puerto> localhost - Host remoto:
nmap -p <puerto> <host_remoto>
La salida mostrará el estado del puerto:
open,closedofiltered. - Host local:
-
< /dev/tcpo< /dev/udp(en Bash): En Bash, se pueden usar descriptores de archivos para crear conexiones TCP o UDP.- Host local (TCP):
timeout 1 bash -c "cat < /dev/tcp/localhost/<puerto>" 2>/dev/null && echo "Puerto <puerto> está abierto" || echo "Puerto <puerto> está cerrado" - Host remoto (TCP):
timeout 1 bash -c "cat < /dev/tcp/<host_remoto>/<puerto>" 2>/dev/null && echo "Puerto <puerto> está abierto" || echo "Puerto <puerto> está cerrado"
timeoutse usa para evitar bloqueos si el puerto está cerrado.2>/dev/nulloculta errores. Este método no funciona para UDP. - Host local (TCP):
-
Python: Uso de sockets para verificar.
import socket def check_port(host, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) # Establecer tiempo de espera try: s.connect((host, port)) print(f"El puerto {port} en {host} está abierto") except (socket.timeout, ConnectionRefusedError): print(f"El puerto {port} en {host} está cerrado o filtrado") finally: s.close() # Ejemplo de uso check_port("localhost", 80) # Verificación en host local check_port("google.com", 443) # Verificación en host remoto
La elección del método depende de las herramientas disponibles, el sistema operativo y la naturaleza de la tarea. netcat y nmap son algunas de las herramientas más flexibles e informativas.