Verbindungabbruch erkennen und Interface neu starten

Fallaxia

Lieutenant
Registriert
Okt. 2012
Beiträge
693
Hi,

gibt es eine einfache Möglichkeit per Skript eine Verbindung auf ihre Funktionalität hin zu testen? (Unter Linux)

Also nach dem Prinzip: Ich pinge drei Hosts an, wenn von allen drei keine Antwort kommt nimmt das Skript an dass die Verbindung gestört ist und startet das betroffene Interface neu.

Ich habe nämlich das Problem bei 24-Stunden Disconnects bei DSL. Teilweise merkt das if up/down Skript mit pppd einfach nicht das so ein Disconnect statt gefunden hat und startet somit das dsl0 Interface nicht neu, was dann natürlich dazu führt dass die Verbindung nicht neu aufgebaut wird.

Ich könnte jetzt per Cron einfach ein ifdown ifup für das Interface alle 24 Stunden machen, aber es kommen ja auch gelegentlich Störungen bei der Leitung vor die nur ein paar Minuten dauern, und dann soll natürlich die Verbindung ebenfalls wiederhergestellt werden.

Hat jemand einen Skriptansatz oder gar ein fertiges Skript was die Verbindung testet?

Grüße
Fallaxia
 
Benutzt du "persist" als Option für pppd? Wenn ja, hast du auch mal "holdoff" als zusätzliche Option benutzt? Ich kenne es z.B. von Debian oder OpenWrt so, daß ich "persist" als Option in "/etc/ppp/options" eintrage, womit die automatische Wiedereinwahl dann auch wunderbar funktioniert hat.
 
persist habe ich bislang noch nicht bewusst genutzt.

was macht die Option "holdoff"?

Grüße
Fallaxia
 
RTFM ;) http://linux.die.net/man/8/pppd

holdoff n gibt also den Zeitraum in Sekunden an, der vergehen soll, bevor eine getrennte Verbindung erneut aufgebaut wird. Wenn die Verbindung abbricht, während pppd meint, sie wäre immer noch aktiv, wird sie wieder aufgebaut, wenn diese Wartezeit abgelaufen ist.

Interessant wäre vielleicht noch maxfail n, eigentlich selbsterklärend, hiermit setzt man dann die Anzahl der Verbindungsversuche.

Warum benutzt du eigentlich keinen Router, wäre das nicht etwas einfacher?
 
An dem Anschluss läuft ein NTP Timeserver. Der wurde bewusst an eine DSL Leitung gehängt um Kosten im Betrieb zu sparen, also den Server nicht ins RZ auslagern zu müssen zumal die Datenrate ohnehin bei etwa 1 Mbit Up/Down konstant ist.

Aber genau da liegt auch das Problem: Bislang habe ich keinen Router gefunden der locker 10000 UDP Verbindungen nebeneinander verarbeiten kann ohne dabei in die Knie zu gehen - z.B. eine FritzBox macht einfach einen Neustart.

Daher nutze ich ein DSL Bridge Modem (Speedport 200Serie) mit dem geht das wunderbar, bis auf den automatisch Reconnect eben.

Die Option Maxfail habe ich bereits auf "0" gesetzt, so dass er stets versucht neu zu verbinden, was aber auch nicht das Problem ist.
Das Problem ist eher dass pppd davon ausgeht dass noch eine Verbindung besteht, aber eben keine Verbindung mehr besteht.

Grüße
Fallaxia
 
Ob die Verbindung noch steht prüft man laut manpage mit einem LCP echo request. Mit "lcp-echo-interval" kann man eine Zeit in Sekunden vorgeben. Wieviel Timeouts es geben darf um anschließend durch "persist" die Verbindung wiederherzustellen kann man per "lcp-echo-failure" vorgeben.

Das funktioniert also nicht?
 
Fallaxia schrieb:
Das Problem ist eher dass pppd davon ausgeht dass noch eine Verbindung besteht, aber eben keine Verbindung mehr besteht.
Wie stellen sie denn fest, dass "keine Verbindung mehr existiert", während für den pppd noch alles in Ordnung ist? Vielleicht liegt das Problem auf einer höheren Ebene.

Ansonsten: debug-Option des pppd setzen und schauen was wirklich im Detail passiert. Dann wird jeder einzelne LCP-echo-request, also das ppp-interne "lebst du noch?" samt Antwort geloggt.
 
Zurück
Oben