Aus irgendeinem, mir noch nicht ganz nachvollziehbaren Grund, erkennt der pppd manchmal nicht, dass das ppp-Interface down ist und keine Verbindung mehr besteht. Um das zu beheben muss man normalerweise das WebInterface aufrufen und „reconnect“ drücken. Das kann man auch automatisieren.
Als erstes erstellt man eine Datei unter /tmp/connection_tracker.sh
#!/bin/sh if [ $(ping -c 1 $(nvram get wan_ipaddr)|grep -c from) -lt 1 ]; then logger -t connectiontrackernvram get wan_ipaddr
unreachable killall redial; killall pppd; sleep 5 pppd file /tmp/ppp/options.pppoe >/dev/null; logger -t connectiontracker reconnect wannvram get wan_ipaddr
successfully fi
Was macht das Script? Es versucht die IP des WAN-Interfaces zu pingen. Ist das Down gibt es keinen Treffer. „grep“ wertet die Rückgabe des ping Befehls aus und zählt die Zeilen. Gibt es weniger als einen Treffer (also Null) wird der redial und pppd gestoppt und neu gestartet.
Anschließend fügt man eine NVRAM-Variable hinzu. Gibt es die Variable wird sie überschieben, Ansonsten wird sie angelegt.
nvram set rc_custom="$(cat /tmp/connection_tracker.sh)" nvram commit
Über den Startup-Script/Command muss diese Datei nun immer angelegt werden.
nvram get rc_custom>/tmp/connection_tracker.sh
Über einen zusätzlichen Cron-Job die Überprüfung alle 15-Minuten durchführen.
*/15 * * * * root /tmp/connection_tracker.sh