métodos inteligentes para un dispositivo Linux Embedded para detectar conectividad a Internet

StackOverflow https://stackoverflow.com/questions/1468038

Pregunta

Nuestro equipo está desarrollando un dispositivo de Medios Internet basado en Linux 2.6. Actualmente se detecta si se establece la conectividad a Internet (a través de un cable Ethernet I / F) haciendo ping a www.google.com

Algunas redes que hemos probado el dispositivo no son compatibles con el reenvío de paquetes ICMP por lo que nuestro código de la aplicación por error informa de Internet como no disponible en este caso.

¿Alguien sabe de un enfoque más refinado para deduciendo si la conexión a Internet está disponible a través de / dev / eth0 sin tener que recurrir a un servicio de ping conocido?

¿Fue útil?

Solución

Como el tipo que escribió esa respuesta hace referencia ChristopheD, ese no es el enfoque que haría uso aquí. Se trabajó para la otra pregunta, porque en ese caso hicimos el registro de la presencia de un enlace directo PPP de la máquina actual - en este caso, que está conectado a una red abitrary que puede o no puede ya tener una ruta por defecto, independiente de su conectividad de Internet en general.

Ya que se necesita conectividad global de DNS para su aplicación, Me echa para que - buscar una dirección que sabes siempre existirá - como una consulta de tipo NS para el dominio com.. Use un tiempo razonablemente largo tiempo de espera y / o volver a intentar un par de veces antes de abandonar. Algo como esto:

dig NS +aaonly com.

No haga caso de la salida y poner a prueba el valor de salida -. 0 indica que la búsqueda fue capaz de comunicarse con los servidores raíz, cualquier otra cosa y no era

Otros consejos

En última instancia desea que el dispositivo sea capaz de utilizar la Internet para alguna función útil. Si hay un servidor bien definido que el dispositivo se conecta comúnmente, entonces sería útil para enviar una consulta a eso.

En medio de "nada" y "función de utilidad" Hay muchos pasos, y usted podría comprobar cualquiera de los que un cierto grado de "conectividad":

  • cable Ethernet enchufado (o enlace PPP establecida, o Wi-Fi, lo que es su capa baja)
  • servidor DHCP asigna la dirección (si procede)
  • puerta de enlace por defecto está funcionando
  • servidor DNS responde
  • Servidor de destino está respondiendo (tal vez no un ICMP ping, pero una pequeña consulta HTTP o cualquier otro protocolo puede que esté utilizando)

En función de cómo conocedores de su cliente, o si quieres un error útil / de diagnóstico que pueden reportar a soporte técnico, que podría ser útil para detectar todos aquellos.

también podría ser útil ser capaz de hacer un traceroute como herramienta de diagnóstico.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top