Berlin:Tutorials/Mesh via LAN
Sofern mehrere Freifunk-Router nahe beieinander stehen und eine Kabelverbindung möglich ist, ist es sinnvoll, diese auch herzustellen: Zwar können die Router auch via WLAN meshen, allerdings kostet das Bandbreite, die dann nicht mehr zur Anbindung der Clients zur Verfügung steht.
OLSRv1 benötigt leider für jedes meshende Netzwerk-Interface (egal ob WLAN oder LAN) eine eigene IP. Somit ist ein einfaches Verbinden der Router über die LAN-Ports ohne weitere Konfiguration nicht möglich; stattdessen müssen die meshenden LAN-Ports je eine eigene Mesh-IP bekommen, was per VLAN-Setup realisiert werden kann.
Mesh-via-LAN ab Falter 1.2 / OpenWrt 21
Ab OpenWrt 21 haben sich einige Notations der Netzwerk- und Firewall-Konfig geändert. Folgend die aktualisierte Variante der SSH-Einrichtung Mesh-via-LAN ab Falter 1.2:
- 1) per SSH auf den Router verbinden
- 2)
$ vim /etc/config/network
- i tippen, um in den insert-modus/edit-modus zu kommen
- 3) scrollen bis
config device option type 'bridge' list ports 'eth0' # oder ähnlich option name 'br-dhcp'
- 4) den Port rausnehmen, da er im nächsten Schritt für Mesh-via-LAN verwendet werden soll:
config device option type 'bridge' list ports ' ' option name 'br-dhcp'
- 5) wir legen darunter ein neues device an, fürs Meshen:
config device option type 'bridge' list ports 'eth0' option name 'br-lanmesh'
- 6) darunter legen wir das neue mesh-interface für das device an:
config interface 'fflanmesh' option proto 'static' option device 'br-lanmesh' option netmask '255.255.255.255' option ipaddr 'DEINE_KABELMESH-FREIFUNK-IP' option ip6assign '64'
- "esc" drücken um den insert-Modus zu verlassen
$ :wq
tippen und return (steht für write+quit)
- 7)
$ vim /etc/config/firewall
- 8) scrollen bis config zone 'zone_freifunk'
- 9) hier nun 'fflanmesh' zu der Liste der Networks hinzufügen:
... list network 'fflanmesh'
- speichern (ESC + ":wq")
- 10)
$ vim /etc/config/olsrd
- 11)
config Interface option ignore '0' option interface 'fflanmesh' option Mode 'ether' # (ACHTUNG: M bitte Uppercase.)
- dann speichern (esc + ":wq")
- 12) wie 11) in /etc/config/olsrd6
- 13)
$ reboot
Diese Anleitung auf jedem per LAN-meshenden Node ausführen. Nach einem Neustart finden sich die Geräte dank OLSR per Kabel. (Ein identisches Subnetz etc ist dank OLSR nicht notwendig).
Ein paar nützliche Tricks
- Die Datei /etc/board.json enthält Informationen über die vorhandenen Ports und ihre Namen (eth0 / lan1 / lan2 / ...). Weitere hilfreiche Befehle zu Port-Auswahl und -Identifikation/-Status:
$ brctl show $ ip link $ swconfig dev switch0 show | grep link
- Trick 17 bei mehreren Routern:
*namedesrouters*.olsr
- So findet man ein device wieder wenn man sich ausgeschlossen hat (z.B. NanoStation benutzt und Meshing klappt nicht aber man hat den LAN schon aus DHCP raus genommen):
$ ping6 ff02::1%eth0
(evtl. blockiert - siehe: https://github.com/freifunk-gluon/gluon/pull/498 )
- Dann Ergebnis hinter "root@" bei ssh Verbindung eingeben.
- zum testen nach der config und dem setup:
$ logread -f
ab hier: veraltet, gültig bis Falter 1.1.2 / OpenWrt 19.07.X
Der folgende Artikel basiert auf dem auf dem Workshop am 16.09.2015 von André vorgeführten "Mesh via Ethernet"-Setup und erklärt die Konfiguration via Browser-Interface "LuCI" bzw. via Console/Terminal und SSH-Shell sowie die Einrichtung des BATMAN-Protokolls (Abschnitt #Bonuslevel: B.A.T.M.A.N. aktivieren via ssh), das zusätzlich Roaming der Clients zwischen den Freifunk-Nodes erlaubt. Für die aktuelle Falter-Firmware ist der Batman-Teil durch Nachinstallation der benötigten Pakete aktivierbar, der Kerngegenstand des Tutorials, Mesh via LAN, funktioniert für Falter wie beschrieben.
Konfigurationsbeispiele Schritt für Schritt
Beispielfall #1: Zwei FF Router + Mesh via Lan
Wir gehen von folgendem Szenario aus: Wir haben Zugang zu einem DSL Anschluss indoor gegenüber bzw in Sichweite der Unterkunft und wollen a) innerhalb des Raumes in dem der Anschluss ist Freifunk haben aber auch nach outdoor mit etwas gerichtetem Funk das Wifi über die Straße bekommen oder z.B. einen größeren Platz vor dem Fenster bestrahlen. Dafür schließen wir einen Indoor-Router (Router 1) an unseren DSL Anschluss an und meshen via Ethernet-Kabel (weil bessere Verbindung als via Wifi Mesh - was automatisch gehen würde) mit einem Outdoor-Router (Router 2) der am Fenster oder vor dem Fenster hängt:
- Router 1 (Router mit WAN und LAN Port Switch - z.B. TP-Link WDR3600 oder ähnlich)
- Router 2 (NanoStation mit nur LAN)
Das Ziel wäre diese Verbindung zu realisieren:
Heimrouter DSL OUT --> WAN Router 1 --> LAN Router 1 --> LAN Router 2
dazu müssen wir:
- a) LAN in FFLAN umbenennen (lohnt sich wegen Firewall)
- b) Mesh IP für FFLAN eintragen
- c) OLSR config ändern um FFLAN einzubinden
- d) FFLAN in Freifunk Firewall Zone einfügen
Wir können das ganze im Web-Interface LuCI machen oder via ssh im Terminal.
Bonuslevel: (optional)
Um zwischen beiden Routern ohne Verbindungsverlust wechseln zu können, sollten wir außerdem B.A.T.M.A.N. auf beiden Routern konfigurieren. Dafür müssen wir FFLAN dazu bringen B.A.T.M.A.N. zu "sprechen" und allen WIRELESS Interfaces befehlen B.A.T.M.A.N. zu sprechen:
- e) BATMAN adv auf FFLAN + WIFI
- f) bat0 mit DHCP bridgen
BATMAN lässt sich nur via Terminal einrichten.
Workflow in LuCI (dem Web-Interface) ALLE VIDEOS FUNKTIONIEREN NICHT MEHR
Screencast Skizze, step by step unter: https://vimeo.com/140039590 ( Passwort: freifunk )
- 1) Den Router flashen und Grundkonfigurieren.
- dazu siehe:
- oder diesen Screencast (ohne Internet-Teilen/vpn):
- https://vimeo.com/140120841 (pw: freifunk)
- https://vimeo.com/140120840 (pw: freifunk)
- https://vimeo.com/140120842 (pw: freifunk)
- https://vimeo.com/140120843 (pw: freifunk)
- 2) Netzwerk / Schnittstellen
- DHCP wählen
- Entsprechende VLAN Schnittstelle(n) deaktivieren. (eth0 und/oder ether0.x wenn aktiv - wobei x für die Nummer des LAN interfaces steht. Wenn eth0 gewählt wird, werden alle gelben LAN Buchsen deaktiviert. Dann kann man nach dem Anwenden den Router nur noch via WiFi oder WAN erreichen) 1
- Speichern OHNE ANWENDEN! (ohne anwenden ist wichtig, damit wir uns nicht sofort selbst aus dem Router aussperren)
- Neue Schnittstelle hinzufügen
- Wir nennen sie "FFLAN" oder was ähnliches passendes
- Protokoll: Statische Adresse
- eth0 oder eth0.x (die vlan Schnittstelle, die in der DHCP Schnittstelle deaktiviert wurde)
- IP4 Adresse: Hier tragen wir die zweite IP (für KabelMesh) ein, die wir via Mail bzw über den config.wizard bekommen haben (siehe Schritt 1)
- Netzmaske: 255.255.255.255
- IPv6 assignment length: 64
- Speichern (ohne ANWENDEN!)
- 3) Firewall Settings
- Freifunk Zone markieren
- SPEICHERN (OHNE ANWENDEN) klicken um 'FFLAN' in die Freifunk Zone einzufügen.
Nachdem wir auf SPEICHERN (ohne ANWENDEN!) geklickt haben sollte 'FFLAN' in der Liste der Zone mit auftauchen.
ACHTUNG! Beim beschriebenen Ablauf kann es dazu kommen, dass auf der ffuplink Firewall Zone weitergeleiteter Traffic zurückgewiesen wird. Dies führt zu Problemen. Weitergeleiteter Traffic der ffuplink Zone muss zugelassen werden! Das Problem tritt nicht auf, wenn man die Zuweisung zur Firewall-Zone aus den Schnittstellen-Settings vornimmt.
- 4) Dienste / OLSR
- OLSR IPv4 wählen
- Runter scrollen und unter Schnittstellen --> "hinzufügen" klicken
- Internet Protokoll zu IPv4 (sollte normalerweise schon da stehen)
- FFLAN markieren
- Modus: ether
- SPEICHERN (ohne ANWENDEN!)
- 1X wiederholen für OLSR IPv6
- OLSR IPv4 wählen
- 5) Oben rechts in der Ecke auf "unsaved changes" klicken
- SPEICHERN & ANWENDEN (endlich!)
Workflow im Terminal via ssh
(Formatierung und Formulierung in progress)
Das gleiche wie oben in UCi via ssh connection
- 0.1) ssh console installieren wenn nicht auf Linux oder MacOS. Für Windows gern verwendet: https://en.wikipedia.org/wiki/PuTTY
- 0.2) öffne PuTTY oder Terminal
- 1) Assistenten usw.
- 2) ssh root@*namedesknotens*.olsr
- 3) yes
- 4) cd /etc/config
- ( 5) ls (zum gucken wenn de sehen willst )
- 6) network im texteditor öffnen:
vi /etc/config/network i
- tippen um in den insert-modus/edit-modus zu kommen
- 7) Runter scrollen mit cursor bis interface DHCP
- 8) option ifname ' '
- 9) hinzufügen:
config interface 'fflan' option proto 'static' option ifname 'eth0' #oder '*SchnittestellennummerdeinerWahl*' [1] option netmask '255.255.255.255' option ipaddr *IPdiedubekommenhastfürskabelMeshen* option ip6assign '64'
- "esc" drücken um den insert-Modus zu verlassen
$ :wq
tippen und return
- 10)
$ vi /etc/config/firewall
- 11) scrollen bis config zone 'zone_freifunk'
- 12) hier nun 'fflan' unter network in die liste der interfaces hinzufügen
- speichern (ESC + ":wq")
- 13)
/etc/config/olsrd
- 14)
config Interface option ignore '0' option interface 'fflan' option Mode 'ether' # (ACHTUNG: M UPPERCASE!!!)
- dann speichern (esc + ":wq")
- 15) wie 14) in /etc/config/olsrd6
- 16)
$ reboot
- 17) hoffen
Bonuslevel: B.A.T.M.A.N. aktivieren via ssh
(Formatierung und Formulierung in progress)
Dieser Schritt geht nur via Console/Terminal/ssh
- 1) Im Texteditor die network Konfigurationsdatei öffnen:
$ vi /etc/config/network
- 2) Zu "interface wireless0" scrollen
- 3)
i
tippen um in den Insert-Modus zu kommen.
- 4) HINZUFÜGEN:
config interface 'wireless0bat' option ifname '@wireless0' #nimm wireless0 als interface für bat option proto 'batadv' #protokoll sei nun batman! option mesh 'bat0' #meshen im bat0
- 5) bei
config interface 'wireless0" option mtu '1532'
hinzufügen
- 6) (wenn euer Router zwei wireless interfaces (z.b. wireless0 und wireless1) hat, sonst überspringen:)
Wie 4) und 5) zu unter wireless 1 hinzufügen und 'wireless1bat' bennenen.
- 7) Bei
interface 'dhcp'
hinzufügen:
ifname 'bat0'
oder
ifname 'ether0.1' ersetzen durch: ifname 'bat0'
8) save (esc + $ :wq)
9) reboot
weiterführende Links und Fußnoten
[1] Hier könnte man noch detaillierter werden und jeder Buchse einen eigenen Subnamen (z.b. eth0.1 - eth0.4) geben. Vorteil wäre dann dass man einige zum Meshen und andere noch als DHCP Interfaces nutzen könnte.
Ein Tutorial dazu unter: http://wiki.freifunk.net/Switch_VLAN_Konfiguration Hinweis zur NSM5: Wenn ihr auf einer der beiden Buchsen mesh via LAN einrichten wollt und auf der anderen einen DHCP-Zugang (z.B. für Wartungszwecke als Not-Eingang), dann richtet mesh via Kabel auf der Buchse "main" ein und DHCP auf der "Secondary". Umgekehrt hat es reproduzierbar in drei Fällen nicht funktioniert.
Teile dieses Tutorials wurden für Berlin:Tutorial:Mit einer Richtantenne und einem Freifunk-Router in den Berliner Freifunk verwendet.