Soy estudiante y me conecto a internet conSanto y seña. Actualmente tengo un script de Python en una raspberry pi con selenium y phantomjs para conectarme automáticamente durante la ejecución.
Me gustaría comprobar la conexión a Internet sin inundar la red.
Monitorización Icinga, conexiones establecidas netstat, ping, nmap... ¿Mejor manera?
Respuesta1
Sería incorrecto suponer que una conexión tiene que estar viva o muerta y que se puede notar la diferencia de manera confiable. Este tipo de suposición conduce a sistemas poco confiables porque usted puede terminar confiando en una heurística que en realidad no verifica la propiedad de vitalidad que esperaba.
Un mejor enfoque es monitorear si lo que necesita que la conexión haga por usted realmente está funcionando. Por ejemplo, si necesita un cliente específico para conectarse a un servidor específico, entonces eso es lo que debe monitorear. Mientras los dos sigan comunicándose, no le importa si una heurística diferente consideraría que la conexión está inactiva.
Si la supervisión detecta un problema, es posible que desee que le avise al respecto. Es posible que desee que el monitoreo no solo detecte que la conexión está inactiva y alerte, sino que también intente corregir el problema. Sin embargo, esto lleva a más preguntas.
Por ejemplo, suponga que tiene hardware que podría reiniciar un componente de la red en caso de una interrupción. Entonces tal vez no desee reiniciarlo solo porque el cliente y el servidor no pueden comunicarse entre sí. Podría ser que el otro extremo de la conexión estuviera caído y no fuera necesario reiniciarlo. Incluso puede ser que el ciclo de energía provoque una interrupción propia o interfiera con la intervención manual.
Hay formas de solucionar estos problemas. Por ejemplo, si la conexión al servidor parece estar inactiva, entonces podría enviar una búsqueda de DNS para el servidor. Si recibió una respuesta, entonces no fue porque la conexión se cortó por completo. Pero ni siquiera es necesario enviar la solicitud al servidor DNS. Podrías enviar la búsqueda de DNS con un límite de salto bajo. Por ejemplo, si envía una búsqueda de DNS con un límite de saltos de 3 y obtiene un ICMP del tercer salto, entonces es poco probable que apagar y encender el primer salto resuelva el problema.
Por supuesto, esto no es una solución milagrosa. Incluso las mejores heurísticas a veces fallan. Si alguna vez construye algo que intenta reiniciar automáticamente una conexión rota, ciertamente debe asegurarse de que tenga una estrategia de retroceso exponencial para evitar que se reinicie repetidamente.
Obviamente, el monitoreo de la conectividad no se puede realizar sin intercambiar ningún paquete. Pero sí desea limitar el costo de procesar esos paquetes. Por ejemplo, aunque puede enviar un paquete unos cuantos saltos y recibir un mensaje de error de un enrutador específico, esa no es la operación más barata para la mayoría de los enrutadores. Si puede encontrar una manera de enviar un paquete de ida y vuelta sin involucrar nada más que la parte de reenvío de hardware de los enrutadores, entonces será más barato, incluso si se necesitan más saltos para hacerlo.
Si tiene más sitios, puede mejorar la confiabilidad del monitoreo de la conexión haciendo que se comuniquen periódicamente entre sí en pares. Si un sitio perdió simultáneamente la conectividad con todos los demás sitios, entonces es muy probable que ese sitio tenga un problema de conectividad.
Respuesta2
Si quiere saber si es posible acceder a Internet, la forma más confiable es realizar una búsqueda de DNS en www.google.com a través de los servidores 8.8.8.8 y 8.8.4.4.
Si no puede obtener una respuesta, lo más probable es que haya algún problema con su conexión a Internet. Tenga en cuenta que "algo anda mal" no significa que no haya ningún acceso.
No se puede demostrar que una conexión a Internet sea perfecta.