Tanto si quieres utilizar SSH en un puerto personalizado como desplegar una aplicación web en un puerto específico, un paso que deberás de hacer es comprobar que el puerto está respondiendo correctamente.

netcat es una herramienta que nos permitirá comprobar si un puerto está escuchando en un servidor y nos permitirá solucionar problemas de redes.

Por ejemplo, si quiero comprobar que el puerto 443 está escuchando en mi servidor, puedo ejecutar lo siguiente:

# nc -zvn [IP_Servidor] 443
Connection to [IP_Servidor] 443 port [tcp/*] succeeded!

Instalar netcat en nuestro ordenador

Por defecto el comando nc viene instalado en la mayoría de distribuciones, pero si no lo tuvieras instalado, tan solo se debe de hacer de la siguiente forma:

# Debian/Ubuntu entre otras
apt install netcat

# Red Hat/CentOS entre otras
dnf install nc 

Escanear múltiple puertos

Con el ejemplo anterior, hemos visto únicamente un puerto, pero podemos añadir todos los puertos que queramos:

# nc -zvn [IP_Servidor] 443 80 22
Connection to [IP_Servidor] 443 port [tcp/*] succeeded!
Connection to [IP_Servidor] 80 port [tcp/*] succeeded!
Connection to [IP_Servidor] 22 port [tcp/*] succeeded!

En este caso, las opciones que utilizamos significan lo siguiente:

  • -z se utiliza para indicar que se escanee los puertos sin establecer una conexión
  • -v es para que muestre una salida más detallada
  • -n se utiliza para que no haga resolución de nombres de dominio.

Escanear un rango de puertos

También podemos hacer que en vez de poner puertos específicos, que haga un rango:

# nc -zvn [IP_Servidor] 20-81
nc: connect to [IP_Servidor] port 20 (tcp) failed: Connection refused
nc: connect to [IP_Servidor] port 21 (tcp) failed: Connection refused
Connection to 46.183.116.73 22 port [tcp/*] succeeded!
nc: connect to [IP_Servidor] port 23 (tcp) failed: Connection refused
nc: connect to [IP_Servidor] port 24 (tcp) failed: Connection refused
[...]
nc: connect to [IP_Servidor] port 79 (tcp) failed: Connection refused
Connection to [IP_Servidor] 80 port [tcp/*] succeeded!
nc: connect to [IP_Servidor] port 81 (tcp) failed: Connection refused

Podemos utilizar el comando grep para que muestre unicamente las conexiones con los puertos abiertos:

# nc -zvn [IP_Servidor] 1-1024 2>&1 | grep succeeded!
Connection to [IP_Servidor] 22 port [tcp/*] succeeded!
Connection to [IP_Servidor]3 80 port [tcp/*] succeeded!
Connection to [IP_Servidor] 443 port [tcp/*] succeeded!

Escanear directamente dominios

Si dejamos de utilizar la opción -n, podemos poner directamente un nombre de dominio:

# nc -zv fsf.org 1-1024 2>&1 | grep succeeded!
Connection to fsf.org (209.51.188.174) 80 port [tcp/http] succeeded!
Connection to fsf.org (209.51.188.174) 443 port [tcp/https] succeeded!

¿Buscas otro comando?

¡Revisa nuestro "Diccionario de comandos para GNU/Linux"!

Diccionario de comandos para GNU/Linux

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación