Diese Anleitung erklärt die Statusseite eines Freifunk-Offloaders beziehungsweise Gateways, alle verfügbaren Ansichten, den Zugangsschutz sowie die Einrichtung von DHCP, VNStat und der Internetüberwachung.
Die Statusseite ist über http://[dein-knoten]/index.php erreichbar. Ein Parameter hinter dem Fragezeichen öffnet die jeweilige Zusatzansicht.
| Aufruf | Beschreibung | Zugang |
|---|---|---|
index.php | Standardansicht mit Knoten-, System-, VPN- und B.A.T.M.A.N.-Informationen | öffentlich |
index.php?bekannt | Bekannte IPv4- und IPv6-Nachbarn (ARP/NDP) | öffentlich |
index.php?batctlo | B.A.T.M.A.N.-Originator-Tabelle mit TQ-Werten und Knotennamen | öffentlich |
index.php?batctln | Direkte B.A.T.M.A.N.-Nachbarn | öffentlich |
index.php?vnstat | Grafischer Datenverkehr für vorhandene VPN-Schnittstellen vpn3 und tap0 | öffentlich |
index.php?internet | IPv4-/IPv6-Status und Verlauf über 24 Stunden, 30 Tage und 12 Monate; nur die Grafiken werden alle 60 Sekunden aktualisiert | öffentlich |
index.php?internetausfall | Liste der Zeiträume, in denen IPv4 und IPv6 gleichzeitig offline waren | öffentlich |
index.php?debug | Debug-Ansicht des MAC-zu-Knoten-Mappings | Passwort erforderlich |
index.php?dhcp | Netzwerkinformationen pro Schnittstelle, Gateways, DNS und NTP | Passwort erforderlich |
index.php?speedtest | Startet einen Speedtest und zeigt das Ergebnis | Passwort erforderlich |
index.php?dhcpserver | Status und Leases von ISC-DHCP beziehungsweise Kea DHCPv4 | Passwort erforderlich |
index.php?keadhcp | Einzelansicht: Status und Leases von Kea DHCPv4 | Passwort erforderlich |
index.php?iscdhcp | Einzelansicht: Status und Leases von ISC-DHCP | Passwort erforderlich |
index.php?all | Komplette System- und Netzwerkdiagnose | Passwort erforderlich |
Beim Aufruf einer geschützten Seite erscheint ein Anmeldeformular. Nach erfolgreicher Anmeldung gilt die Sitzung für alle geschützten Ansichten.
Zum sicheren Abmelden /index.php?logout aufrufen. Einen sichtbaren Abmeldebutton gibt es auf der Statusseite nicht. Beim Abmelden werden Sitzung und Sitzungscookie gelöscht.
Falls das Programm noch fehlt:
apt update apt install apache2-utils
htpasswd -cB /etc/freifunk-status.htpasswd admin
Das Passwort wird anschließend verdeckt abgefragt. -c darf nur beim ersten Anlegen verwendet werden, weil es eine bestehende Datei überschreibt.
htpasswd -B /etc/freifunk-status.htpasswd BENUTZERNAME
-b, weil das Passwort dann nicht im Befehl und in der Shell-Historie steht.chown root:www-data /etc/freifunk-status.htpasswd chmod 640 /etc/freifunk-status.htpasswd
index.php?dhcpserver zeigt beide DHCP-Server gemeinsam. Mit index.php?keadhcp beziehungsweise index.php?iscdhcp werden Status, aktive Leases und die Lease-Tabelle nur für den ausgewählten Server angezeigt. Alle drei Ansichten sind passwortgeschützt.
Die Kea-Ansicht wertet zusätzlich IPv6 aus. Da IPv6 im Freifunknetz normalerweise über Router Advertisements (SLAAC) vergeben wird, zeigt sie bei vorhandenen Informationen die globalen IPv6-Adressen und Präfixe, IPv6-Routen, erkannte RA-Dienste sowie passende Konfigurationsdateien. DHCPv6-Leases erscheinen in einem getrennten Bereich und nur dann, wenn Kea DHCPv6 beziehungsweise eine lesbare Kea-DHCPv6-Lease-Datei vorhanden ist.
ISC-DHCP:
systemctl is-active isc-dhcp-server systemctl status isc-dhcp-server
Kea DHCPv4 (je nach Paketname):
systemctl is-active kea-dhcp4 systemctl status kea-dhcp4 # Alternativer Dienstname: systemctl is-active kea-dhcp4-server systemctl status kea-dhcp4-server
Alle vorhandenen Kea-Dienste anzeigen:
systemctl list-unit-files | grep -i kea
Die Statusseite sucht Kea-Leases in /var/lib/kea/kea-leases4.csv und /var/lib/kea/dhcp4.leases. ISC-DHCP wird über /var/lib/dhcp/dhcpd.leases ausgewertet.
VNStat installieren und starten:
apt update apt install vnstat systemctl enable --now vnstat
Prüfen, welche VPN-Schnittstellen momentan vorhanden sind:
ip link show vpn3 ip link show tap0
Nur vorhandene Schnittstellen zu VNStat hinzufügen:
vnstat --add -i vpn3 vnstat --add -i tap0 systemctl restart vnstat
Wenn eine der beiden Schnittstellen nicht existiert, wird der zugehörige vnstat --add-Befehl ausgelassen. Falls VNStat meldet, dass eine Schnittstelle bereits vorhanden ist, ist ebenfalls keine Korrektur nötig. In /etc/vnstat.conf sollten für die benötigten Zeiträume mindestens folgende Werte stehen:
5MinuteHours 2 HourlyDays 2 DailyDays 366
Danach:
systemctl restart vnstat vnstat --dbiflist
Die VNStat-Ansicht prüft bei jedem Aufruf, ob vpn3 beziehungsweise tap0 als Linux-Netzwerkschnittstelle vorhanden ist. Diagramme werden ausschließlich für vorhandene Schnittstellen angezeigt. bat0 und br0 werden nicht mehr dargestellt.
Für jede vorhandene VPN-Schnittstelle erscheinen fünf Zeiträume: eine Stunde, 24 Stunden, 7 Tage, 31 Tage und 366 Tage. RX wird in Freifunk-Gelb #ffb400, TX in Freifunk-Magenta #dc0067 und die Schnittstellentrennung in Freifunk-Blau #009ee0 dargestellt.
vnstat die Daten selbst erfasst.index.php?internet und index.php?internetausfall lesen connectivity/status_history.json. Ein Python-Skript prüft IPv4 und IPv6 alle fünf Minuten und hält maximal 105.120 Messwerte vor. Das entspricht 365 Tagen.
Die Anleitung geht davon aus, dass index.php unter /var/www/html liegt. Bei einem anderen Webverzeichnis muss HISTORY_FILE im Skript angepasst werden.
sudo apt update sudo apt install python3 iputils-ping cron -y
sudo mkdir -p /var/www/html/connectivity sudo chown www-data:www-data /var/www/html/connectivity sudo chmod 755 /var/www/html/connectivity
Die mitgelieferte Datei check-inet.py nach /usr/local/bin kopieren:
sudo cp check-inet.py /usr/local/bin/check-inet.py sudo chown root:root /usr/local/bin/check-inet.py sudo chmod 755 /usr/local/bin/check-inet.py
Das Skript prüft jeweils zwei Ziele. IPv4 gilt als online, wenn 1.1.1.1 oder 8.8.8.8 antwortet. IPv6 gilt als online, wenn 2606:4700:4700::1111 oder 2001:4860:4860::8888 antwortet.
Es schützt die JSON-Datei mit einer Dateisperre und ersetzt sie erst nach vollständigem Schreiben. Dadurch liest die Webseite keine halb geschriebene Datei.
sudo -u www-data /usr/local/bin/check-inet.py cat /var/www/html/connectivity/status_history.json
Die Cron-Tabelle des Benutzers www-data öffnen:
sudo crontab -u www-data -e
Folgende Zeile am Ende einfügen:
*/5 * * * * /usr/local/bin/check-inet.py 2>&1 | /usr/bin/logger -t check-inet
In Nano mit Strg+O speichern, mit Enter bestätigen und mit Strg+X beenden. Ein Neustart von Cron ist nach dem Eintragen nicht erforderlich.
Dienst und Cronjob kontrollieren:
sudo systemctl enable --now cron systemctl is-active cron sudo crontab -u www-data -l
Nach mindestens fünf Minuten prüfen:
ls -l /var/www/html/connectivity/status_history.json tail -c 1000 /var/www/html/connectivity/status_history.json journalctl -t check-inet --since "15 minutes ago" --no-pager
Ein Internetausfall wird nur gespeichert beziehungsweise angezeigt, wenn IPv4 und IPv6 gleichzeitig nicht erreichbar sind. Fällt nur eines der beiden Protokolle aus, ist dies im Verlauf sichtbar, zählt aber nicht als vollständiger Internetausfall.
Größere Lücken in der Messreihe gelten als „keine Daten“ und nicht als Internetausfall. Dadurch wird ein ausgeschalteter Offloader oder ein nicht laufender Cronjob nicht fälschlich als dauerhafter Internetausfall gewertet.
ls -ld /var/www/html/connectivity ls -l /var/www/html/connectivity/status_history.json python3 -m json.tool /var/www/html/connectivity/status_history.json
Der Webserver muss die JSON-Datei lesen können. Bei der oben beschriebenen Einrichtung gehört sie www-data:www-data und besitzt den Modus 644.
sudo -u www-data /usr/local/bin/check-inet.py sudo crontab -u www-data -l journalctl -t check-inet --since "15 minutes ago" --no-pager
ls -l /etc/freifunk-status.htpasswd sudo -u www-data test -r /etc/freifunk-status.htpasswd && echo lesbar || echo nicht-lesbar
systemctl status vnstat vnstat --dbiflist ip link show vpn3 ip link show tap0 vnstat -i vpn3 vnstat -i tap0
/var/www/html überall an, falls Deine index.php in einem anderen Webverzeichnis liegt. Das Unterverzeichnis connectivity muss direkt neben der index.php liegen.Diese Anleitung gehört zur Freifunk-Statusseite. Bei weiteren Fragen wende Dich an den Administrator Deines Freifunk-Knotens.