2305926

So kontrollieren Sie Internet-Traffic mit Raspberry

30.09.2018 | 09:01 Uhr |

Bei etlichen Internetzugängen wird der Zugang ab Überschreiten eines bestimmten Datenvolumens gedrosselt. Wer wissen will, welche Rechner im Heimnetz dafür verantwortlich sind, kann sich grafisch darüber informieren.

Wie die meisten Router zeigt auch die Fritzbox das verbrauchte Datenvolumen an. Die Statistiken über verschiedene Zeiträume unter „Internet -> Online-Monitor -> Online-Zähler“ zeigen aber nur die Gesamtsumme, die alle angeschlossenen Netzwerkgeräte insgesamt verursacht haben. Wer wissen will, ob vielleicht das Tablet seiner Kinder für das Überschreiten des Trafficlimits verantwortlich ist, hat keine Chance, hier eine Aufschlüsselung zu erhalten. Wird jedoch der gesamte Datenverkehr durch einen Raspberry Pi geschickt, kann die Anwendung Bandwidthd den Verbrauch grafisch darstellen. Darum geht es in der folgenden Anleitung.

Achtung: Nichts für Anfänger!

Das nachfolgend beschriebene Szenario greift tief in die Architektur des Heimnetzwerks im Zusammenspiel mit einer Fritzbox ein. Deshalb ist diese Anleitung explizit nur erfahrenen Linux-Nutzern zu empfehlen und auch diese sollten auf gewisse Vorsichtsmaßnahmen nicht verzichten:

Raspbian-Sicherung: Machen Sie bei der Konfiguration des Netzwerks auf dem Raspberry Pi einen Fehler, kann es passieren, dass das Gerät nicht mehr erreichbar ist. Sichern Sie also unbedingt vorher alle Daten, die sich nicht durch eine Neuinstallation von Raspbian wiederherstellen lassen. Im Zweifel spielen Sie das Betriebssystem wieder auf die SD-Karte und können neu beginnen.

Vor Änderungen an der Fritzbox, unbedingt Sicherung der aktuellen Routereinstellungen anlegen.
Vergrößern Vor Änderungen an der Fritzbox, unbedingt Sicherung der aktuellen Routereinstellungen anlegen.

Konfiguration der Fritzbox sichern: An der Fritzbox selbst werden keine größeren Umbauten vorgenommen. Allerdings wird in der Fritzbox das Routing der Pakete verändert. Im Extremfall kann es daher passieren, dass der Router nicht mehr erreichbar ist. Deswegen ist es unbedingt ratsam, vor der Aktion über „System -> Sicherung -> Sichern“ ein Backup der Fritzbox-Einstellungen anzulegen. So können Sie später schneller wieder zum ursprünglichen Zustand zurückkehren. Wenn Sie nicht mehr auf die Fritzbox zugreifen können, lässt sie sich mit einem angeschlossenen Telefon wieder in den Werkszustand zurücksetzen. Dazu wählen Sie die Rufnummer „#991*15901590*“. Hören Sie einen Signalton, legen Sie auf. Danach startet das Zurücksetzen, beansprucht aber ein paar Minuten. Danach sollten Sie wie gewohnt über einen direkt an die Box angeschlossenen Computer wieder die Benutzeroberfläche mittels „http://fritz.box“ erreichen.

Ein Raspberry Pi 3 sollte es sein: Damit Sie eine lückenlose Aufstellung des Datenverkehrs erhalten, muss dieser vollständig durch den Raspberry geleitet werden. Das bedeutet, dass jedes Datenpaket über den kleinen Computer laufen muss. Deswegen sollten Sie zu einem Raspberry der dritten Generation greifen, da dessen LAN-Schnittstelle performanter ist. Mit dem Monitoring produzieren Sie theoretisch einen Flaschenhals im Netz. Bei einem typischen VDSL-Anschluss mit 50 MBit/s wird dies aber auch bei hoher Auslastung aller Clients nicht spürbar sein, bei noch schnelleren Anschlüssen eventuell schon.

Damit der gesamte Verkehr durch den Raspberry läuft, definieren Sie einen virtuellen Adapter.
Vergrößern Damit der gesamte Verkehr durch den Raspberry läuft, definieren Sie einen virtuellen Adapter.

Der Überblick: So funktioniert es

Im Normalfall stellt die Fritzbox nicht nur die Verbindung zum Zugangspunkt des Providers her, sondern übernimmt auch die Adresszuweisung der angeschlossenen Clients. Jedes Gerät, das sich mit dem Internet verbinden will, setzt einen DHCP-Request ab und erhält vom Router die individuelle IP-Adresse. An dieser Stelle setzt das Projekt an. Die DHCP-Funktion an der Fritzbox wird deaktiviert (das funktioniert gefahrlos, ohne einen Eingriff in die Firmware der Box durchführen zu müssen). Stattdessen erhalten künftig alle Geräte ihre IP-Adresse vom Raspberry Pi. Außerdem wird konfiguriert, dass alle Datenpakete den kleinen Computer passieren müssen. Da der Raspberry über genau eine LAN-Schnittstelle verfügt, muss intern dafür gesorgt werden, dass die Pakete über den gleichen physikalischen Anschluss ein- und ausgeliefert werden. Dazu wird eine Bridge erstellt.

Lesetipp Raspberry Pi: So klappt die Installation und Einrichtung

Zum Einsatz kommen nur Komponenten, die auch auf anderen Linux-Systemen verfügbar sind. Statt des Raspberry käme jeder Linux-Rechner in Betracht, insbesondere andere, ähnlich energieeffiziente Platinenrechner mit Gigabit-Ethernet. Der Raspberry Pi steht hier nur aufgrund seiner Popularität als Hardwarebeispiel.

Da an der grundlegenden Netzwerkkonfiguration des Heimnetzwerks gearbeitet wird, sollten Sie bei allen Geräten, denen Sie eine feste IP-Adresse zugeordnet haben, vorübergehend den Adressbezug per DHCP wieder aktivieren. Wenn alles erst einmal funktioniert, weisen Sie den Geräten dann wieder eine neue IP-Adresse fest zu, die dann aber aus dem neuen Adressbereich stammt.

Netzwerkanschluss am Raspberry vorbereiten

Im ersten Schritt wird der Netzwerkanschluss des Raspberry eingerichtet. Der Workshop geht davon aus, dass Sie an der ursprünglichen Konfiguration der Fritzbox nichts geändert haben. Editieren Sie die Datei „/etc/network/interfaces“ wie folgt:

auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.178.254
netmask 255.255.255.0
network 192.168.178.0
broadcast 192.168.178.255
gateway 192.168.178.1
dns-nameservers 192.168.188.1 192.168.178.1 8.8.8.8
#---------------------
auto eth0:1
iface eth0:1 inet static
address 192.168.188.1
netmask 255.255.255.0
#---------------------
iface br0 inet dhcp
bridge_ports eth0 eth0:1
pre-up ifconfig eth0 0.0.0.0 up
pre-up ifconfig eth0:1 0.0.0.0 up
pre-up brctl addbr br0
pre-up brctl addif br0 eth0
post-down ifconfig eth0:1 0.0.0.0 down
post-down ifconfig eth0 0.0.0.0 down
post-down brctl delif br0 eth0
post-down brctl delbr br0

Im ersten Block haben Sie die erste Schnittstelle (die physikalisch den gleichen Anschluss verwendet) definiert. Sie erhält eine feste IP-Adresse und wird einem Netzwerk („192.168.178.0“) zugeordnet. Dieses Netzwerk werden Sie später auch in der Fritzbox einrichten. Außerdem braucht das Netzwerk ein Gateway, denn Sie wollen ja auch das Internet besuchen. Um die Auflösung der Namen kümmern sich (in der Reihenfolge) drei DNS-Server. Der erste Server, der zuerst befragt wird, trägt die IP-Adresse der zweiten Schnittstelle, die definiert wird. Das ist die Umleitung, auf die es ankommt. Der letzte DNS-Eintrag „8.8.8.8“ kommt Ihnen eventuell bekannt vor – es handelt sich um einen offenen DNS-Server von Google.

In den Netzwerkeinstellungen der Fritzbox deaktivieren Sie UPnP.
Vergrößern In den Netzwerkeinstellungen der Fritzbox deaktivieren Sie UPnP.

Außerdem müssen Sie das IP-Forwarding aktivieren. Dazu öffnen Sie die Datei „/etc/sysctl.conf“ und löschen das Kommentarzeichen vor „net.ipv4.ip_forward=1“.

Im Anschluss werden zwei Pakete auf dem Raspberry-System installiert, die für die Umleitung der Datenpakete, wie wir sie vorhaben, notwendig sind. Das erledigen Sie schnell im Terminal:

apt-get install dnsmasq iptables

DNS Masq ist ein einfacher DNS- und DHCP-Server. Gesteuert wird er über eine Konfigurationsdatei „/etc/dnsmaq.conf“, die unmittelbar nach der Installation völlig auskommentiert und funktionslos ist, Sie könnten also einfach den nachfolgenden Block insgesamt übernehmen und am Dateiende eintragen. Übersichtlicher ist es allerdings, wenn Sie die Einträge jeweils an den inhaltlich passenden Stellen eintragen. Öffnen Sie dazu die Datei „/etc/dnsmaq.conf“ in einem Texteditor Ihrer Wahl für folgende Instruktionen:

interface=eth0
interface=eth0:1
domain-needed
domain=fritz.box
local=/localnet/,/local/,/fritz.box/
dhcp-option=option:router,192.168.188.1
dhcp-option=option:dns-server, 192.168.188.1
dhcp-range=192.168.188.10,192.168.188.50,12h

Jetzt müssen Sie die Umleitungsregel noch im System hinterlegen. Dazu wird das Programm iptables verwendet. Die Konfiguration könnten Sie direkt in einem Terminal eingeben. Problem ist dabei nur, dass diese Regeln nach einem Neustart wieder verschwunden wären. Um das Regelwerk dauerhaft zu speichern, haben Sie mehrere Optionen. Eine davon besteht darin, im Verzeichnis die Datei „/etc/network/if-pre-up.d/iptablesload“ zu editieren. In die Datei tragen Sie Folgendes ein:

!/bin/sh
iptables -F
iptables -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i eth0:1 -j ACCEPT iptables -A OUTPUT -o eth0:1 -j ACCEPT
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0:1 -j ACCEPT

Kontrollieren Sie im Dateimanager, ob die Datei als Script erkannt wurde. Andernfalls schalten Sie die Datei über die „Eigenschaften“ oder mit chmod im Terminal ausführbar. Schalten Sie den Raspberry noch nicht aus.

Mit dem Instrument „IP4-Routen“ machen Sie die Fritzbox mit dem von Ihnen definierten Netzwerk bekannt.
Vergrößern Mit dem Instrument „IP4-Routen“ machen Sie die Fritzbox mit dem von Ihnen definierten Netzwerk bekannt.

Die Konfiguration im Router am Beispiel der Fritzbox

Aktivieren Sie in der Fritzbox zunächst die „erweiterte“ Ansicht, um alle Menüeinträge zu sehen. Wechseln Sie dann in den Bereich „Heimnetz -> Heimnetzübersicht“. Danach rufen Sie den Bereich „Netzwerkeinstellungen“ auf.

  • Suchen Sie hier nach einem Eintrag „Statusinformationen über UPnP übertragen“ und deaktivieren Sie diese Option. Vergessen Sie nicht, die Änderungen mit einem Klick auf „Übernehmen“ zu speichern.

  • Auf der Bildschirmseite „Netzwerkeinstellungen“ klicken Sie ferner auf „IPv4-Adressen“. Deaktivieren Sie dort den Eintrag „DHCP-Server aktivieren“ und bestätigen Sie mit „OK“.

  • Sie gelangen erneut zur ursprünglichen Seite „Netzwerkeinstellungen“ zurück. Klicken Sie jetzt auf den Schalter „IPv4-Routen“. Geben Sie zunächst die IP-Adresse für das Netzwerk ein. Diese lautet „192.168.188.0“. Als Subnetzmaske tragen Sie „255.255.0.0“ ein. Als Gateway nutzen Sie die Adresse „192.168.178.254“, das ist die IP-Adresse, die Sie dem Anschluss des Raspberry zugewiesen haben. Schalten Sie die Route aktiv und verlassen Sie die Dialoge.

Damit sind alle Vorbereitungen abgeschlossen und das Netzwerk sollte funktionieren.

Booten Sie jetzt den Raspberry neu. Erst danach starten Sie auch die Fritzbox neu. Dazu trennen Sie diese einfach vom Stromanschluss, warten einen Augenblick und stellen die Verbindung wieder her.

Lesetipp Raspbian: Das kann das OS für den Raspberry Pi

Hat alles bei der Netzwerkkonfiguration funktioniert, dann sollten die Clients eine IP-Adresse aus dem zu Beginn definierten Adressbereich beziehen. Der wurde mit Adressen zwischen „192.168.188.20“ und „192.168.188.200“ definiert. Arbeiten Sie unter Linux, öffnen Sie auf dem Rechner ein Terminal und nutzen Sie das Kommando ifconfig. Unter Windows zeigt der Befehl ipconfig in der Eingabeaufforderung die Informationen zur bezogenen IP-Adresse.

Sie entpacken das Archiv mit dem Quellcode, wechseln dann in das Verzeichnis und kompilieren dort das Tool mit den üblichen drei Schritten.
Vergrößern Sie entpacken das Archiv mit dem Quellcode, wechseln dann in das Verzeichnis und kompilieren dort das Tool mit den üblichen drei Schritten.

Das Auswertungstool Bandwidthd installieren

Bisher haben Sie lediglich die technischen Grundlagen geschaffen, den Netzwerkverkehr zu beobachten und auszuwerten. Die eigentliche Aufgabe erledigt das Programm Bandwidthd, das entsprechende Grafiken aufbereiten kann und ohne größeren Einrichtungsaufwand auskommt, allerdings einen Apache-Webserver voraussetzt. Ist auf dem Raspberry noch kein Apache (und PHP) installiert, holen Sie dies jetzt nach:

apt-get install apache2
apt-get install php7.0 php7.0-curl
  php7.0-gd php7.0-fpm php7.0-cli
  php7.0-opcache php7.0-json
  php7.0-mbstring php7.0-xml
  php7.0-zip php7.0-mysql ibapache2-mod-php7.0

Sind Apache und PHP bereits installiert, benötigen Sie nur einige Grafikbibliotheken:

apt-get install libcap-dev libgl1-mesa-swx11-dev libpng-dev

Über die Projektseite von Bandwidthd laden Sie sich den Quellcode der App herunter. Extrahieren Sie den Inhalt des Archivs und kompilieren Sie den Code mit dem üblichen Dreischritt (./configure, make, make install). Wenn die grundlegende Konfiguration der IP-Adressvergabe funktioniert hat, brauchen Sie an der Software selbst keine weiteren Änderungen vorzunehmen. Über die IP-Adresse des Raspberry können Sie nach ein paar Minuten per Browser die ersten Auswertungen sehen.

Um die Optionen von Iptables dauerhaft einzurichten, gibt es unter Linux mehrere Arten.
Vergrößern Um die Optionen von Iptables dauerhaft einzurichten, gibt es unter Linux mehrere Arten.

Dazu verwenden Sie im Browser die Adresse „http://[IP-Adresse-des-Raspi]/bandwidthd/“. Sie werden aber noch keine beeindruckenden Zahlen erhalten und auch nicht alle Clients sehen können. Dazu müssen diese erst nennenswerte Downloads und Uploads erzeugt haben. Es handelt sich also um eine erste Momentaufnahme. Wenn Sie sich die erste Auswertung ansehen, werden Sie bemerken, dass die Geräte mit Ihrer IP-Adresse aufgelistet werden. Eventuell genügt dies Ihren Ansprüchen, aber um die Auswertungen „sprechender“ zu machen, können Sie sich auch eines Tricks bedienen: Installieren Sie Netzwerkprotokolle, die zu Ihrem Gerätepark passen. In diesen ist die Übermittlung der Gerätenamen, zum Beispiel „Inges iPad“, integriert. Und Bandwidthd kann auf diese Informationen zugreifen. Passende Protokolle wären etwa mit

apt-get install samba libnss-win bind avahi-daemon avahi-discover avahi-dnsconfd avahi-utils

zu installieren. Diese Pakete sollten für die in einem privaten Haushalt typischen PCs und Tablets auf jeden Fall ausreichen.

Lesetipp Die richtige Linux-Distribution für Einsteiger

PC-WELT Marktplatz

0 Kommentare zu diesem Artikel
2305926