WG-Internet überwachen (illegale Downloads)

Seit Monaten mal wieder ein Blog-Beitrag. Bei mir gibt es im Moment viel Stress (Web-Projekte, vor allem ticket i/O und Vodafone Business Partner, Freundin und Klausuren [ach ja, ich studiere ja noch nebenbei]). Zudem habe ich den raspberry-pi für mich entdeckt und experimentiere damit herum, sofern mir noch Zeit bleibt.

Passend dazu hatte mich neulich ein Kollege gefragt, wie man das Internet in einer großen 12er WG überwachen kann. Der Grund liegt auf der Hand: nach deutschem Recht läuft ein Internetanschluss noch immer auf den Namen einer natürlichen Person. Doch wer steht schon freiwillig im Falle eines illegalen Downloads für den Anschluss gerade?

Da ich das Thema recht interessant fand, hatte ich mir überlegt das fritz.box – Internet via Subnetz über den Raspberry PI zu tunneln. So fließt der gesamte Traffic über den kleinen Kraftprotz.

Wir starten also mal. Was wir benötigen ist nicht mehr als ein raspberry Pi, gibt es schon ab 60 Euro inkl. Case, SD-Karte und Netzteil.
Im Prinzip bräuchten wir nicht einmal eine fritz.box, jeder Router auf dem man das LAN-Routing einstellen kann, kann auch genutzt werden.

Zunächst installieren wir ein ganz freshes raspbian-Betriebssystem. Möglichst direkt mit dem neustem Release jessie.

Rasbian-Netzwerkkonfig

Unser raspberry erhält unter dem Netzwerkanschluss eth0 zwei IP-Adresse aus verschiedenen Subnetzen. Diese werden anschließend gebridged. Dafür nehmen wir einfach die letzte valide IP-Adresse aus der Standard-fritz.box-Konfiguration. Diese liegt ausserhalb des zu verteilenden DHCP-Adressbereichs. Diese Adresse wird zugleich das WAN-Interface des pi’s und kann über ein Webinterface konfiguriert werden.

auto lo
iface lo inet loopback

# The primary network interface
# keine 192.168.178.x - Adresse mehr! Drittes Tuppel 178 wird 188!
# (natuerlich weiterhin Class-C Netz)
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-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.188.1 192.168.178.1 8.8.8.8

# Das Sub-Interface
auto eth0:1
iface eth0:1 inet static
address 192.168.188.1
netmask 255.255.255.0

# bridging einschalten
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
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
pre-up brctl addbr br0
pre-up brctl addif br0 eth0

Da wir später den DHCP der fritz.box nicht mehr nutzen und der raspberry die IPs verteilen wird, muss erst einmal ein DHCP-Dienst auf dem raspberry laufen. Dazu installieren wir dnsmasq (jeden anderen DHCP hätte man auch nehmen können, kenne mich aber nur mit dnsmasq aus).

sudo apt-get install dnsmasq

Ist er installiert, kommentieren wir die Zeilen 92, 93, 144 und 311 der Datei /etc/dnsmasq.conf ein. Hier setzen wir die zu überwachenden Netzwerkanschlüsse eth0 (bzw. eth0:1) ein und setzen die Range der zu verteilenden IPs ein:

# neue IP-Range
dhcp-range=192.168.188.20, 192.168.188.250, 168h

# Gateway einstellen
dhcp-option=3,192.168.188.1

Es werden also nun über den raspberry-DHCP die Adresse 192.168.188.20 bis 192.168.188.250 vergeben. Der Lease läuft dabei nach 7 Tagen Inaktivität ab.

Über iptables…

sudo apt-get install iptables

… steuern wir nun den Ein- und Ausgang und die Weiterleitung der Daten. Dafür legen wir unter /etc/network/if-up.d/iptables.sh ein Startskript an und machen es mit chmod +x /etc/network/if-up.d/iptables.sh ausführbar.

fritz.box – Netzwerkkonfig

In der fritz.box schalten wir nun unter Netzwerkeinstellungen (in anderen Routern abweichend) den DHCP ab und ändern den Standard-Gateway von „192.168.178.1“ auf „192.168.178.254“. Das Netz wird von „192.168.178.0“ auf „192.168.188.0″ geändert. Nun fritz.box und raspberry pi neu starten und hoffen das neu geroutet wird ;-).

Auf den schon vorher per DHCP eingewählten Rechnern wird nach einem „Lease erneuern“ eine neue IP-Adresse bezogen. Das geht z.B. unter MacOS so.  Hier sollte nun eine neue Adresse 188.* statt 178.* bezogen werden.

Trafficanalyse

Jetzt sind wir fast fertig – der Traffic wird nun über den raspberry geleitet. Dieser muss nun natürlich noch analysiert werden. Dazu nutzen wir bandwidthD. Eine Konfiguration ist denkbar einfach und wird oft genug im Web erklärt, daher verzichte ich an dieser Stelle darauf.

Wichtig ist nur das die eth0-Schnittstelle überwacht wird. Das Webinterface erreichen wir dann im LAN unter http://192.168.188.1/.

Was noch?

Wenn alles läuft und man Bock auf weitere Experimente hat, könnte man zum Beispiel..

  • seinen Gästen W-Lan über ein Ticketsystem bieten (Hotspot-Funktion). Das geht recht easy mit pfSense. Man kann über einfaches Routing auch die W-Lan Funktionalität der fritz.box nutzen. Ein Webinterface für dieses Voucher-Ticketing existiert ebenfalls.
  • eine UMTS-Fallback-Lösung entwickeln. Wenn mal kein Internet über die fritz.box möglich ist (und das passiert selbst hier in Köln oft) wird automatisch eine UMTS-Verbindung initiiert. LTE- oder UMTS-Stick vorausgesetzt 😉

Viel Erfolg mit dem Tutorial.. bei Fragen: in den Kommentaren fragen! 😉

Flattr this!