Freifunk/PrivateWLAN

Aus Wiki CCC Göttingen
Wechseln zu: Navigation, Suche

Warnung

Achtung: Diese Seite enthält Anleitungen, die ein sehr weitgehendes Verständnis der eingesetzten Technologien voraussetzen. Beachten Sie, dass ein erhebliches Risiko besteht, dass Sie ihr Gerät in einen nicht-funktionsfähigen Zustand versetzen. Das ist natürlich um so größer, je weniger Sie verstehen.

Getestete Geräte

Die nachfolgenden Anleitungen wurden getestet auf folgenden Plattformen:

  • TP-Link TR-WL841N, Firmware 0.6.3
  • Netgear WNDR3700, Firmware 0.6.3

Vorbedingung

SSH-Zugriff auf einzurichtende Geräte nötig. Dieser muss ggf. im Expert-Mode konfiguriert werden. Da der SSH-Zugang fortan auch im Freifunk-Mesh erreichbar ist, sollte ein starkes Passwort oder viel besser, ein Public Key für SSH eingerichtet werden.

Ob die Konfiguration nach automatischen Firmware-Updates (oder auch manuellen Firmware-Updates) erhalten bleibt, ist derzeit noch ungetestet. Wer keine Überraschungen erleben will, deaktiviert also die automatischen Updates und führt mit ein wenig Zeit ausgestattet das Update selbst in einer ruhigen Minute aus.

Privates WLAN

Vgl.: http://gluon.readthedocs.org/en/v2014.4/features/private-wlan.html

Es lässt sich recht einfach ein "normales" verschlüsseltes WLAN konfigurieren:

  • Dieses WLAN hat eine übliche WPA-PSK-Verschlüsselung. Es sollten ebenso auch komplexere (oder gar: einfachere, also unverschlüsselte) Strukturen einrichtbar sein. Dazu sollte sie OpenWrt-Dokumentation zu Rate gezogen werden - siehe Links unten.
  • Dieses WLAN ist mit der Bridge "wan" verbunden (device name br-wan)
  • Der Router konfiguriert diese Netzwerkbrücke mit dem Namen "wan" und verbindet sie in der normalen Konfiguration ausschließlich mit dem "WAN"-Anschluss des Routers - in der "Privates WLAN"-Konfiguration eben auch mit dem dann neu erzeugten Infrastruktur-WLAN

Konfiguration

uci set wireless.wan_radio0=wifi-iface
uci set wireless.wan_radio0.device=radio0
uci set wireless.wan_radio0.network=wan
uci set wireless.wan_radio0.mode=ap
uci set wireless.wan_radio0.encryption=psk2
uci set wireless.wan_radio0.ssid="private1"
uci set wireless.wan_radio0.key="PRIVATE1"
uci set wireless.wan_radio0.disabled=0
uci commit
wifi

SSID- und Key-Konfiguration müssen natürlich an das gewünschte Ergebnis angepasst werden. "wan_radio0" ist der Name der Interface-Konfiguration. Die sollte sich nicht mit anderen konfigurierten Interfaces überschneiden.

Privates WLAN über mehrere Stationen via 4-Address-Mode

Privates WLAN schön und gut. Aber wer mehr als einen Freifunk-Node aufgebaut hat, profitiert bei Freifunk ja vom Mesh-Mechanismus und dem Adhoc-Netz zwischen den Knoten. So wird es bei Freifunk ja möglich, weitere Router quasi als "Repeater" zu verwenden - ohne eigenen Anschluss an ein LAN.

Infrastruktur-WLAN mit 4-Address-Mode

Privatesinfrastrukturnetz.png (Media:Privatesinfrastrukturnetz.png, Media:Privatesinfrastrukturnetz.svg)

Etwas entfernt ähnliches lässt sich auch für das Private WLAN konfigurieren. Und zwar auf Basis des auch manchmal "WDS" genannten 4-Adressen-Modus. Aber Achtung: Dabei handelt es sich nicht um ein vollwertiges Mesh-Netz, sondern um einen erweiterten Infrastruktur-Betrieb. Konsequenz ist, dass die Verbindungen von Punkt möglichst geplant sein sollten.

Im folgenden soll ein solches Netz "privates Infrastruktur-Netz" heißen. Achtung: Davon können durchaus mehrere eingerichtet werden - was unter bestimmten Voraussetzungen eventuell auch sinnvoll ist. In einem privaten Infrastruktur-Netz gibt es exakt einen Access Point (AP) und einen oder mehrere (naja, oder keine, aber dann kann mans auch lassen) Stations (STA).

Konfiguration eines privaten Infrastruktur-Netz Access Point

uci set wireless.wds1ap_radio0=wifi-iface
uci set wireless.wds1ap_radio0.device=radio0
uci set wireless.wds1ap_radio0.network=wan
uci set wireless.wds1ap_radio0.mode=ap
uci set wireless.wds1ap_radio0.encryption=psk2
uci set wireless.wds1ap_radio0.ssid="wds1"
uci set wireless.wds1ap_radio0.key="PRIVATEKEY"
uci set wireless.wds1ap_radio0.wds=1
uci set wireless.wda1ap_radio0.disabled=0
uci commit
wifi

Dabei können und sollten SSID und Key angepasst werden. "wds1ap_radio0" ist der Name der Konfiguration. Sollen mehrere entsprechende Interfaces konfiguriert werden, ist der Name der Konfiguration natürlich unterschiedlich zu wählen. Das Setting "wds=1" aktiviert lediglich den 4-Address-Mode und enumeriert nicht etwa die Netze (d.h. das muss für alle privaten Infrastruktur-Netze auf 1 stehen und stehen bleiben!). U.U. ist ein Reboot nötig.

Konfiguration einer privaten Infrastruktur-Netz Station

uci set wireless.wds1sta_radio0=wifi-iface
uci set wireless.wds1sta_radio0.device=radio0
uci set wireless.wds1sta_radio0.network=wan
uci set wireless.wds1sta_radio0.mode=sta
uci set wireless.wds1sta_radio0.encryption=psk2
uci set wireless.wds1sta_radio0.ssid="wds1"
uci set wireless.wds1sta_radio0.key="PRIVATEKEY"
uci set wireless.wds1sta_radio0.wds=1
uci set wireless.wds1sta_radio0.disabled=0
uci commit
wifi

Dabei können und sollten SSID und Key angepasst werden und sollten natürlich der Konfiguration des Access Points entsprechen. U.U. ist ein Reboot nötig.

Mehrere Infrastrukturnetze verbinden

Infrastruktur-Netze lassen sich ganz einfach verbinden, indem die o.g. Konfiguration jeweils für eines der Netze auf demselben Gerät ausgeführt wird.

  • Ein Gerät kann gleichzeitig Station in einem privaten Infrastruktur-Netz sein und Station in einem anderen.
  • Ein Gerät kann gleichzeitig Station in einem privaten Infrastruktur-Netz sein und Access Point in einem anderen.
  • Ein Gerät kann gleichzeitig Access Point in einem privaten Infrastruktur-Netz sein und Access Point in einem anderen - aber diese Konfiguration ist nicht sehr sinnvoll, da die Reichweite ja jeweils identisch ist. Ausnahme evtl.: Infrastruktur-Netze auf verschiedenen Radio-PHYs.

Multicast-Routing (unverzichtbar für IPv6)

Standardmäßig konfiguriert OpenWRT Bridges mit dem Flag multicast_snooping=1. Multicast-Snooping ist eine prima Sache für den gedachten Einsatzzweck. Leider sorgt die augenblickliche Implementation aber dafür, dass IPv6-Neighbor-Discovery nicht über die Netzwerkbrücken geht - und damit IPv6 quasi ausfällt - und zwar nicht komplett (Autoconfig geht noch), sondern nur in weiten Teilen.

Um dieses Verhalten zu ändern, kann folgender Workaround auf allen am lokalen privaten Netzwerk beteiligten Geräten durchgeführt werden:

uci set network.wan.igmp_snooping=0
uci commit
reboot

Anmerkungen

Bridge-Loops sollten eigentlich vom Bridging Code im Linux auf den Routern erkannt werden. Glaubt jedenfalls der Autor dieser Zeilen. Ist aber nicht sicher - daher Obacht! Kann auch gut sein, dass das nicht stimmt - Spanning Tree Protocol ist auf den Bridges per default deaktiviert!

Bei nicht via Ethernet/LAN angebundenen Geräten sollte (Freifunk-)"Mesh via WAN" deaktiviert werden. Denn was sonst eigentlich kein großes Problem ist, wenn nichts angeschlossen ist, sieht nun, mit dem privaten Infrastruktur-Netz, ganz anders aus: auf dem WAN-Interface ist nun via Brücke(n) das private LAN und damit auch der häusliche Internet-Anschluss erreichbar. Wenn nun Mesh auf WAN aktiviert wäre, würden die Router via privatem Infrastruktur-Netz Verbindung mit dem Freifunk-Gateway im Internet aufnehmen. Das macht aber besser nur das Gerät, das wirklich selbst per Kabel angeschlossen ist. Die anderen bekommen Freifunk dann via Freifunk-Wireless-Mesh.

Links