Billig-Router als Netzfilter

Seite 2: Software-Implantat

Inhaltsverzeichnis

Mit der Werks-Firmware des TL-WR841N kann man zwar die vorn zitierte Router-Kaskade bauen, aber keinen Ethernet-Filter. Das klappt dagegen mit dem quelloffenen Router-Betriebssystem OpenWRT, wenn man es um die Ethernet-Firewall ebtables ergänzt.

Das OpenWRT-Wiki warnt, dass ebtables reichlich CPU-Leistung fordert, weswegen es nicht im Standard-OpenWRT-Kernel enthalten ist. In unserem Setup mit der aktuell im Handel befindlichen Version 8 konnten wir von LAN zu WAN immerhin 94 MBit/s mit iperf durchschleusen. Für Mediastreaming reicht das völlig aus, und mehr geben die Fast-Ethernet-Ports des Filters eh nicht her.

Nun ist der TL-WR841N in den verschiedenen Hardware-Versionen mit unterschiedlichen CPU-Kernen bestückt, die auch verschieden schnell getaktet werden. Der Router erreicht aber laut Wiki überall die gleiche Integer-Rechenleistung von 260 BogoMIPS. Wenn Sie ein älteres Gerät besitzen oder geliefert erhalten, sollte es folglich ebenso schnell filtern wie das hier beschriebene Testmuster.

Zwar lässt sich bei OpenWRT 12.09 das Paket ebtables aus dem Packages-Repository nachinstallieren. Ein Aufruf des Userland-Tools ebtables führt aber nur zu einer Fehlermeldung, weil ebtables im Kernel fehlt. Das bekommt man durch Selbstübersetzen von OpenWRT hinein. Die Arbeit haben wir Ihnen für den TL-WR841N v8 abgenommen: Führen Sie auf einem fabrikfrischen Gerät ein Firmware-Update mit dem Factory -Image aus ( SHA256-Summe c0afa8af…71ec907b). Falls Sie schon ein OpenWRT 12.09 ohne ebtables installiert haben, nehmen Sie das Sysupgrade (d35c6a1c…31dddf01). Das zugehörige Userland-Tool haben wir mit hinein gepackt, weil für die ganz frische OpenWRT-Version 12.09.1 zum Redaktionsschluss noch keine Packages bereitstanden.

Damit Hosts in der gefilterten Zone transparent im Heimnetz erscheinen, muss ihr Verkehr mit ganz wenigen Ausnahmen ungehindert durchgehen, was eine Bridge auf Ethernet-Ebene zwischen dem WAN-Port (intern eth0) und den LAN-Schnittstellen (wlan0 und eth1) des TL-WR841N gewährleistet.

Damit Streaming und Fernsteuerung mit vom Internet isolierten Smart-TVs weiter funktionieren, darf der Filter nur DHCP und IPv6 sperren.

Die Ausnahmen sind DHCP und IPv6: Gefilterte Geräte beziehen üblicherweise IP-Adressen per DHCP, und zwar eine für sich selbst, eine für das Default Gateway (Internet-Router) und DNS-Server (Router und eventuell weitere). Diese DHCP-Anfrage muss der Filter beantworten und sich selbst dabei als Gateway und DNS-Server ausgeben. Das tut OpenWRT für sein internes Netz (LAN und WLAN) automatisch. Der Filter muss zusätzlich auf Ethernet-Ebene DHCP an der WAN-Schnittstelle aussieben, damit nicht etwa Broadcast-Antworten des Routers im gefilterten Netz erscheinen. Umgekehrt darf der Filter auch keine DHCP-Anfragen aus dem Heimnetz beantworten.

IPv6 wird auf allen Schnittstellen blockiert, damit wirklich smarte TVs nicht etwa darüber ins Internet gelangen. Wenn Geräte ausschließlich im Heimnetz kommunizieren sollen, ist IPv6 überflüssig; dort wird IPv4 vermutlich noch lange Zeit erhalten bleiben.

Die IP-Firewall ist auf Durchzug gestellt, damit alle Dienste des Heimnetzes im Filtersegment weiterfunktionieren.

OpenWRT macht regulär IPv4-Forwarding zwischen seinen Netzbereichen, womit gefilterte Geräte über den als Default Gateway gesetzten Filter als Zwischenschritt zum Router ins Internet kämen. Beim Setup bindet der Filter seine WAN-Schnittstelle in die LAN-Bridge ein. Und hier liegt der Kniff: Dabei verliert er seine bis dahin existierende Default-Route. Von den gefilterten Geräten eingereichte Pakete mit Ziel Internet reicht der TL-WR841N schlicht nicht weiter.

DNS geht weiter durch, denn ein testweise eingesetztes LG-Smart-TV (42LA6608 mit Firmware 04.22.11) war unglücklich, wenn es keine Servernamen auflösen konnte. Das TV-Gerät ließ dann die LAN-Verbindung trotz erfolgreich bezogener IP-Adressen gleich wieder fallen. Damit auch solche TV-Geräte als Mediensenken im Heimnetz dienen, mussten wir den DNS – mit dem Filter als Proxy – erlauben. So konnte es Adressen externer Server erfragen. Aber ob es die dann auch tatsächlich erreichen konnte, war ihm offensichtlich schnurz.