¿Se pregunta cómo comprobar la conectividad entre dos puntos finales de la red?
Una de las tareas habituales de los administradores de sistemas es comprobar la conectividad para solucionar problemas de red. Puede ser cualquier cosa como que la aplicación no pueda conectarse al servicio backend, que no pueda obtener datos de una URL externa, verificar si el flujo está abierto, etc.
Sea lo que sea, las siguientes utilidades/comandos le ayudarán. Están probados en CentOS, y no veo ninguna razón para que no funcionen en otra distro de Linux.
Exploremos…
telnet
Uno de los comandos más utilizados para probar la conectividad esencial entre servidores, servidor a la IP de otro dispositivo de red. La sintaxis del comando es sencilla
telnet $IP de destino $PUERTO
Digamos que quiere probar si puede conectarse al puerto 8080 en la dirección IP 10.0.0.1; entonces el comando sería
telnet 10.0.0.1 8080
Si no hay ningún problema para conectarse, entonces debería ver el mensaje conectado.
Intentando 10.0.0.1...
Conectado a 10.0.0.1.
El carácter de escape es '^]'.
Nota: si obtiene un comando no encontrado al ejecutar telnet entonces necesita instalar telnet como expliqué aquí.
En la mayoría de los escenarios, telnet debería ayudar. Sin embargo, si necesita alguna otra opción entonces aquí hay algunas alternativas de telnet.
ncat o nc
Ncat (también conocido como nc) es una potente utilidad de red con muchas características como enlazar y aceptar una conexión, ejecutar comandos de forma remota, escribir y leer datos, etc. Funciona tanto en IPv4 como en IPv6.
Para hacer una simple prueba para comprobar si el puerto está abierto o no, ejecute lo siguiente.
nc -vz $HOSTNAME $PORT
Pongamos un ejemplo para comprobar el puerto 443 en geekflare.com/es.
[root@geekflare-lab ~]# nc -vz geekflare.com/es 443
Ncat: Versión 7.50 ( https://nmap.org/ncat )
Ncat: Conectado a 104.25.133.107:443.
Ncat: 0 bytes enviados, 0 bytes recibidos en 0,02 segundos.
[root@geekflare-lab ~]#
Como se ha mencionado, también puede utilizar nc
para vincular la conexión para que escuche en un puerto concreto. Esto puede ser útil cuando no tiene servicios reales en ejecución pero quiere asegurarse de que existe conectividad.
Para iniciar la escucha en un puerto
nc -l $PUERTO
Vinculará el puerto a un número determinado.
Si ncat no está instalado, puede conseguirlo con yum install nc
en servidores CentOS/RHEL.
wget
wget es un comando útil para descargar/probar HTTP, HTTPS y FTP. Si trabaja como ingeniero web o trata a menudo con problemas relacionados con la web, entonces wget
es su amigo. Probar usando wget es sencillo.
wget $URL
Aquí tiene un ejemplo de prueba tools.geekflare.com/es
[root@geekflare-lab ~]# wget tools.geekflare.com/es
--2019-05-09 20:40:01-- http://tools.geekflare.com/es/
Resolviendo tools.geekflare.com/es (herramientas.geekflare.com/es)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ...
Conectando con tools.geekflare.com/es (tools.geekflare.com/es)|104.25.134.107|:80... conectado.
Solicitud HTTP enviada, esperando respuesta... 301 Movido permanentemente
Ubicación: https://tools.geekflare.com/es/ [following]
--2019-05-09 20:40:01-- https://tools.geekflare.com/es/
Conectando con tools.geekflare.com/es (tools.geekflare.com/es)|104.25.134.107|:443... conectado.
Solicitud HTTP enviada, esperando respuesta... 200 OK
Longitud: sin especificar [text/html]
Guardando en: 'index.html.2'
[ ] 15,139 --.-K/s en 0.001s
2019-05-09 20:40:02 (12,8 MB/s) - 'index.html.2' guardado [15139]
[root@geekflare-lab ~]#
Si muestra conectado significa que no hay ningún problema de conectividad.
Eche un vistazo a esto para ver algunos de los ejemplos de comandos wget utilizados con frecuencia.
curl
Curl es una herramienta multiuso.
¿Sabe que puede hacer telnet a un puerto utilizando curl?
Pues ahora ya lo sabe.
curl -v telnet://$IP:$PUERTO
El siguiente es un ejemplo que funciona.
[root@geekflare-lab ~]# curl -v telnet://chandan.io:443
* A punto de connect() al puerto 443 de chandan.io (#0)
* Probando 104.31.68.106...
* Conectado a chandan.io (104.31.68.106) puerto 443 (#0)
Y, cuando no hay ningún puerto de escucha o problema de cortafuegos, entonces verá intentando…
[root@geekflare-lab ~]# curl -v telnet://chandan.io:4434
* A punto de connect() al puerto 4434 de chandan.io (#0)
* Probando 104.31.68.106...
También puede utilizar curl para descargar los datos. Soporta múltiples protocolos – HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER, etc.
nmap
Una herramienta popular con cientos de funciones. A menudo se considera como una herramienta de seguridad, nmap le permite probar una sola IP/puerto o en el rango.
Para probar un solo puerto
nmap -p $PUERTO $IP
Un ejemplo de prueba del puerto 443 en siterelic.com
[root@geekflare-lab ~]# nmap -p 443 siterelic.com
Iniciando Nmap 7.70 ( https://nmap.org ) en 2019-05-10 06:55 UTC
Informe de escaneo Nmap para siterelic.com (104.27.174.50)
El host está activo (latencia de 0,0079s).
Otras direcciones para siterelic.com (no escaneadas): 104.27.175.50 2606:4700:30::681b:ae32 2606:4700:30::681b:af32
ESTADO DEL PUERTO SERVICIO
443/tcp https abierto
Nmap realizado: 1 dirección IP (1 host up) escaneada en 0,13 segundos
[root@geekflare-lab ~]#
Mire la columna de estado. Si ve abierto significa que la conexión está bien. Y, si el estado es filtrado significa que la conectividad no existe.
Ping
Uno de los comandos más utilizados es comprobar si un host remoto responde o no a ICMP ECHO_REQUEST. Tenga en cuenta que esto puede no darle resultados precisos cuando ICMP está bloqueado en el cortafuegos de la red remota. Suponiendo que ese no sea el caso, puede hacer ping a IPv4 o al punto final de la red IPv4 como se indica a continuación.
ping $direcciónip
ping $url
Por ejemplo, resultado exitoso de geekflare.com/es
chandan@192 ~ % ping geekflare.com/es
PING geekflare.com/es (104.27.119.115): 56 bytes de datos
64 bytes desde 104.27.119.115: icmp_seq=0 ttl=53 time=7.944 ms
64 bytes desde 104.27.119.115: icmp_seq=1 ttl=53 tiempo=8.870 ms
Por ejemplo, resultado de fallo de IP interna.
chandan@192 ~ % ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1): 56 bytes de datos
Tiempo de espera de solicitud para icmp_seq 0
Tiempo de espera para icmp_seq 1
Si el endpoint soporta IPv6, puede utilizar el comando ping6
como se indica a continuación.
chandan@192 ~ % ping6 geekflare.com/es
PING6(56=40 8 8 bytes) 2a01:4b00:88e4:8700:d8ca:bf50:159c:2a1d -->
2606:4700:20::681b:7673
16 bytes desde 2606:4700:20::681b:7673, icmp_seq=0 hlim=250 time=8.650 ms
16 bytes desde 2606:4700:20::681b:7673, icmp_seq=1 hlim=250 tiempo=8.738 ms
Si necesita hacer ping remoto a través de Internet, puede utilizar la herramienta de ping en línea.
Conclusión
telnet está desapareciendo en la última versión de Linux. Gracias a la alternativa telnet anterior.
Si usted es nuevo en Linux y está buscando aprender entonces eche un vistazo a este curso Udemy.