Ich bin Student und verbinde mich mit dem Internet überShibboleth. Tatsächlich habe ich ein Python-Skript auf einem Raspberry Pi mit Selenium und Phantomjs, um beim Ausführen automatisch eine Verbindung herzustellen.
Ich möchte die Internetverbindung überprüfen, ohne das Netzwerk zu überlasten.
Icinga-Überwachung, Netstat hat Verbindungen hergestellt, Ping, Nmap ... Bester Weg?
Antwort1
Es wäre falsch anzunehmen, dass eine Verbindung entweder tot oder aktiv sein muss und dass man den Unterschied zuverlässig erkennen kann. Diese Art von Annahme führt zu unzuverlässigen Systemen, da Sie sich am Ende möglicherweise auf eine Heuristik verlassen, die die erwartete Aktivitätseigenschaft nicht wirklich überprüft.
Ein besserer Ansatz besteht darin, zu überwachen, ob die Funktion, die die Verbindung für Sie erfüllen muss, tatsächlich funktioniert. Wenn Sie beispielsweise einen bestimmten Client benötigen, der eine Verbindung zu einem bestimmten Server herstellt, sollten Sie dies überwachen. Solange die beiden weiterhin kommunizieren, ist es Ihnen egal, ob eine andere Heuristik die Verbindung als unterbrochen betrachten würde.
Wenn die Überwachung ein Problem erkennt, möchten Sie vielleicht, dass die Überwachung Sie darauf aufmerksam macht. Vielleicht möchten Sie, dass die Überwachung nicht nur erkennt, dass die Verbindung unterbrochen ist, und Sie darauf aufmerksam macht, sondern auch versucht, das Problem zu beheben. Dies führt jedoch zu weiteren Fragen.
Angenommen, Sie verfügen über Hardware, die im Falle eines Ausfalls eine Netzwerkkomponente aus- und wieder einschalten könnte. Dann möchten Sie sie vielleicht nicht aus- und wieder einschalten, nur weil Client und Server nicht miteinander kommunizieren können. Es könnte sein, dass das andere Ende der Verbindung ausgefallen ist und der Aus- und Einschaltvorgang nicht erforderlich war. Es könnte sogar sein, dass der Aus- und Einschaltvorgang selbst einen Ausfall verursachen oder ein manuelles Eingreifen behindern würde.
Es gibt Möglichkeiten, solche Probleme zu umgehen. Wenn beispielsweise die Verbindung zum Server unterbrochen zu sein scheint, können Sie eine DNS-Suche nach dem Server senden. Wenn Sie eine Antwort erhalten, liegt dies nicht daran, dass die Verbindung vollständig unterbrochen ist. Sie müssen die Anfrage jedoch nicht einmal bis zum DNS-Server senden. Sie können die DNS-Suche mit einem niedrigen Hop-Limit senden. Wenn Sie beispielsweise eine DNS-Suche mit einem Hop-Limit von 3 senden und vom dritten Hop ein ICMP zurückerhalten, ist es unwahrscheinlich, dass das Aus- und Wiedereinschalten des ersten Hops das Problem lösen würde.
Dies ist natürlich kein Allheilmittel. Selbst die beste Heuristik kann manchmal schiefgehen. Wenn Sie jemals etwas bauen, das versucht, eine unterbrochene Verbindung automatisch neu zu starten, müssen Sie auf jeden Fall sicherstellen, dass es eine exponentielle Backoff-Strategie gibt, um zu verhindern, dass es wiederholt neu gestartet wird.
Die Überwachung der Konnektivität ist natürlich nicht ohne den Austausch von Paketen möglich. Sie möchten jedoch die Kosten für die Verarbeitung dieser Pakete begrenzen. Sie können beispielsweise ein Paket über einige Hops senden und von einem bestimmten Router eine Fehlermeldung zurückerhalten, aber das ist für die meisten Router nicht die billigste Operation. Wenn Sie einen Weg finden, ein Paket hin und zurück zu senden, ohne etwas anderes als den Hardware-Weiterleitungsteil des Routers zu verwenden, ist das billiger, auch wenn dafür mehr Hops erforderlich sind.
Wenn Sie über mehrere Standorte verfügen, können Sie die Zuverlässigkeit der Verbindungsüberwachung verbessern, indem Sie diese regelmäßig paarweise miteinander kommunizieren lassen. Wenn ein Standort gleichzeitig die Verbindung zu allen anderen Standorten verliert, ist es sehr wahrscheinlich, dass dieser eine Standort ein Verbindungsproblem hat.
Antwort2
Wenn Sie wissen möchten, ob ein Internetzugang möglich ist, ist eine DNS-Suche von www.google.com über die Server 8.8.8.8 und 8.8.4.4 der zuverlässigste Weg.
Wenn Sie keine Antwort erhalten, liegt höchstwahrscheinlich ein Problem mit Ihrer Internetverbindung vor. Beachten Sie, dass „etwas stimmt nicht“ nicht bedeutet, dass Sie überhaupt keinen Zugriff haben.
Sie können nicht beweisen, dass eine Internetverbindung perfekt ist.