Vorgeplänkel

Im letzten Beitrag zur zeitgesteuerten Verfügbarkeit des Freifunk-Netzes, wurde bereits darauf eingegangen, wie Cronjobs auf dem Freifunk-Router eingerichtet werden. Auch in dieser Anleitung benötigst Du den Zugang per ssh (der Link beschreibt dies unter Windows, unter Linux oder OSX ist das ganze etwas einfacher), den Du bereits auf dem Router eingerichtet haben musst. Dieser ist nötig, da nur die wenigsten Einstellungen und Möglichkeiten, welche OpenWRT (bzw. Lede) zur Verfügung stellt über die grafische Oberfläche erreicht werden können.

Einloggen mit ssh

Als erstes musst Du eine Verbindung zum Freifunk-Knoten mit ssh herstellen. Unter OSX  habe ich dazu eine ssh-Config eingerichtet und erreiche den Router mit ssh Routername. 

Hast du das erfolgreich hinter dich gebracht, erwartet dich der Begrüßungsbildschirm (Hier mit Lede).

BusyBox v1.25.1 () built-in shell (ash)

     _________
    /        /\\      _    ___ ___  ___
   /  LE    /  \\    | |  | __|   \\| __|
  /    DE  /    \\   | |__| _|| |) | _|
 /________/  LE  \\  |____|___|___/|___|                      lede-project.org
 \\        \\   DE /
  \\    LE  \\    /  -----------------------------------------------------------
   \\  DE    \\  /    Reboot (17.01-SNAPSHOT, r3211+10-d80b582)
    \\________\\/    -----------------------------------------------------------


    root@Routername:~# 

Standardmäßig ist sowohl das Client, als auch das Mesh-Netz angeschalten. In der vorherigen Anleitung wurde als erstes das Client-Netz per uci ausgeschalten und dann mit dem Befehl wifi jedes Mal an und abgeschalten. Dies hatte zur Folge, dass bei jedem Schaltvorgang das Mesh-Netz ebenfalls zusammengebrochen ist, da wifi das WLAN-Modul neu startet. Dies ist bei einem viel genutzten Netz nachteilig, weshalb ich meine Zeitschaltung anders ausführen musste. 

Auch diese Anleitung tut dies für einen Standard 2,4GHz Singleband-Router, ist aber problemlos auf Dualbandgeräte erweiterbar.

Cronjob zur Zeitsteuerung einrichten

Die Zeitsteuerung selbst kannst Du ebenfalls per Cronjob einrichten. Gib dazu folgende Zeile ein:

    root@Routername:~# vi /usr/lib/micron.d/client_wifi_timer

Drücke nun die Taste 'i' um in den Bearbeitungsmodus zu wechseln. Jetzt kannst Du die folgenden beiden Zeilen eingeben

    30 21 * * *  ifconfig client0 down
    0  7 * * *   ifconfig client0 up

Drücke die Escape-Taste (ESC) um den Bearbeitungsmodus zu verlassen. Jetzt schreibe ':wq' und bestätige mit der Eingabetaste.

Die beiden Zeilen sind wie folgt aufgebaut. (vgl https://de.wikipedia.org/wiki/Cron)

    Minute Stunde TagDesMonats Monat Wochentag Anweisungen

Die erste Zeile bedeutet also: In Minute 30 der Stunde 21Uhr zu jedem Tag jedes Monats jeden Wochentags führe das Kommando 'Client-Netzwerk 0 ausschalten' aus. Die zweite Zeile schaltet das Client-Netz dementsprechend um 7Uhr wieder ein.

Würde man das Client-Netz lediglich Montag bis Freitag ausschalten wollen, muss die erste Zeile also wie folgt lauten:

    30 21 * * 1-5  ifconfig client0 down

Die entsprechend muss das WLAN Dienstag bis Samstag wieder aktiviert werden, das bedeutet die zweite Zeile würde wie folgt aussehen:

    0 7 * * 2-6  ifconfig client0 up

Sonntags ist mit 0 repräsentiert. Möchte man das WLAN bspw. Samstags und Sonntags 7 Uhr einschalten, sehe der Befehl wie folgt aus:

    0 7 * * 6,0  ifconfig client0 up

Die so eingerichteten Geräte bleiben weiterhin über das Mesh-Netzwerk miteinander in Verbindung bzw. erweitern das bestehende Freifunk-Netz. Lediglich die Anmeldung mit Endgeräten an diesen Punkten ist nicht möglich. Die hier verwendeten Befehle ifconfig client0 up bzw ifconfig client0 down schalten dieses mal lediglich das Client-Netz aus, beim Schaltvorgang bleibt das Mesh bestehen, da lediglich das Device heruntergefahren wird und das Mesh ein anderes Device ist - nämlich mesh0.

Zum aktivieren der Änderungen muss noch der Cron neugestartet werden:

/etc/init.d/micrond restart

Die Voraussetzung, dass diese Befehle auch fehlerfrei ausgeführt werden, ist, dass in den Routerkonfigurationen das Client-Netz auch verfügbar ist. Im Falle von Client0 solltest Du mit uci show wireless die Option wireless.client_radio0.disabled='0' oder wireless.client_radio0.enabled='1' finden.

Optional: Clientnetz ist ab Routerstart ausgeschalten

Möchte ich nun jedoch standardmäßig das Client-Netz ausschalten, sodass bei einem Routerneustart dieses nicht verfügbar ist, so ist die Konfiguration Tabu und man sollte Befehle in ein startscript einfügen. Dieses Startscript ist /etc/rc.local. Dieses wird ausgeführt, nachdem das System initialisiert, kurzgesagt hochgefahren ist.

Du gelangst zu dieser Datei mit dem Editor vi über den Befehl:

root@Routername:~# vi /etc/rc.local

und du siehst den Inhalt dieser Datei:

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

exit 0
~
~
~

Diese Datei tut laut Inhalt noch nichts, außer sich zu beenden (exit 0)

Drücke nun die Taste 'i' um in den Bearbeitungsmodus zu wechseln. Jetzt kannst du die folgende beiden Zeilen vor exit 0 hinzufügen:

sleep 10
ifconfig client0 down

Drücke die Escape-Taste (ESC) um den Bearbeitungsmodus zu verlassen. Jetzt schreibe ':wq' und bestätige mit der Eingabetaste.

Der erste Befehl wartet 10 Sekunden. Dies habe ich vorsichtshalber eingefügt, dass das WLAN-Modul nach dem starten auch wirklich hochgefahren ist. Der Zweite fährt das Client-Netz herunter.