¿Como ver si un sitio web es accesible?

Te ha pasado que te piden conexión desde un servidor hacia un servicio en internet?
Por ejemplo, desde tu servidor transaccional necesitan acceder a un servicio de factura electronica. Pero… como sabes si el servicio de factura electronica esta arriba? Si tu servidor tiene habilitado los puertos necesarios para acceder al servicio de factura electronica? Si esta resolviendo correctamente la URL del servicio de factura electronica?

Un par de tips:
1. PING es tu amigo… pero no siempre.
Me explico. Hacer un PING te puede ayudar a revisar conectividad entre tu servidor y el destino, pero recordemos que muchos sitios en internet han decidido deshabilitar PING (protocolo ICMP) por temas de seguridad y de ataques DDOS.
Entonces, hacer un PING y que no te responda el destino, no quiere decir necesariamente que no haya comunicación. Tambien puede significar que el destino tenga deshabilitado PING o ICMP.
Lo que si te ayuda a hacer un PING es saber si tu DNS esta resolviendo la URL del host destino. Por ejemplo, hacer PING a ejemplo.com:

C:\Users\joandres>ping ejemplo.com

Haciendo ping a ejemplo.com [199.59.240.200] con 32 bytes de datos:
Tiempo de espera agotado para esta solicitud.
Tiempo de espera agotado para esta solicitud.
Tiempo de espera agotado para esta solicitud.
Tiempo de espera agotado para esta solicitud.

Estadísticas de ping para 199.59.240.200:
Paquetes: enviados = 4, recibidos = 0, perdidos = 4
(100% perdidos),

Como podemos ver, hacer un ping a ejemplo.com no responde. Pero si resuelve el host ejemplo.com a la ip 199.59.240.200.
Eso quiere decir que los DNS de donde estoy el PING si estan funcionando.

2. CURL es tu amigo
Si estas queriendo revisar conectividad desde un servidor, es probable que no tengas acceso a un navegador o una herramienta grafica amigable… pero puedes usar CURL desde linea de comando para cargar html:

C:\Users\joagarcia>curl ejemplo.com

Aca podemos ver que CURL cargó todo el contenido de HTML. Que quiere decir eso? Que PING no responde, pero el servicio destino si responde en el puerto 80. O sea, si hay conectividad.

3. TELNET tambien es tu amigo
Pero que pasa si quieres revisar conectividad hacia un servicio que no utiliza puertos convencionales como el puerto 80 o PING?
Siempre puedes hacer un telnet hacia el puerto del servicio destino:

telnet ejemplo.com 26
220-server1.ejemplo.com ESMTP Exim 4.94.2 #2 Wed, 02 Mar 2022 12:37:41 -05 00
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.

En este caso, usamos el comando telnet utilizando el puerto 26 hacia ejemplo.com. Y si, nos responde un servicio de correo en el destino ejemplo.com

 

Y asi, es como podemos utilizar tres herramientas para revisar conectividad hacia un servicio en internet: Ping, Curl y Telnet.