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!
Comentarios