méthodes intelligentes pour un périphérique Linux embarqué pour détecter la connectivité Internet

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

Question

Notre équipe développe un dispositif de support Internet basé sur Linux 2.6. Actuellement nous détectons si la connexion Internet est établie (via un câble Ethernet i / f) par pinger www.google.com

Certains réseaux, nous avons testé l'appareil ne prennent pas en charge la transmission de paquets ICMP de sorte que notre code d'application signale par erreur sur Internet comme indisponible dans ce cas.

Quelqu'un sait-il d'une approche plus fine pour déduisant si la connexion Internet est disponible via / dev / eth0 sans avoir recours à pinger un service bien connu?

Était-ce utile?

La solution

Comme le gars qui a écrit cette réponse référencée par ChristopheD, ce n'est pas l'approche que je vais utiliser ici. Il a travaillé pour l'autre question, parce que, dans ce cas, nous avons été vérifier la présence d'une liaison PPP directe de la machine actuelle - dans ce cas, vous êtes connecté à un réseau abitrary qui peut ou peut ne pas avoir déjà une route par défaut, indépendamment de sa large connectivité Internet.

Puisque vous avez besoin de connectivité globale DNS pour votre application, je vérifierais pour cela - rechercher une adresse que vous savez existera toujours - comme une requête de type NS pour le domaine com.. Utilisez un délai d'attente assez longue et / ou réessayer plusieurs fois avant d'abandonner. Quelque chose comme ceci:

dig NS +aaonly com.

Ignorer la sortie et de tester la valeur de sortie -. 0 indique la recherche a été en mesure de contacter les serveurs racine, toute autre chose et il n'a pas été

Autres conseils

En fin de compte, vous voulez que l'appareil soit en mesure d'utiliser l'Internet pour une fonction utile. S'il y a un serveur bien défini que l'appareil se connecte généralement à, il serait utile d'envoyer une requête à cela.

Entre « rien » et « fonction utile » il y a beaucoup d'étapes, et vous pourriez éventuellement vérifier ces objets comme une mesure de la « connectivité »:

  • câble Ethernet branché (ou un lien PPP mis en place, ou Wi-Fi, quel que soit votre couche faible)
  • serveur DHCP adresse attribuée (le cas échéant)
  • passerelle par défaut fonctionne
  • serveur DNS répond
  • serveur de destination répond (peut-être pas un ping ICMP, mais une petite requête HTTP ou tout autre protocole que vous utilisez peut-être)

Selon la façon dont votre client est avisé, ou si vous voulez une erreur utile / diagnostic qu'ils peuvent faire rapport au support technique, il pourrait être utile détecter tous ceux-ci.

Peut également être utile d'être en mesure de faire un traceroute comme outil de diagnostic.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top