Berlin:Tutorial:Mesh via LAN

Aus wiki.freifunk.net
Wechseln zu: Navigation, Suche

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.

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.


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)

Screencast Skizze, step by step unter: https://vimeo.com/140039590 ( Passwort: 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!)
2-1
2-2
2-3
2-4
2-5
2-6
2-7
  • 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.

2-1
2-2
  • 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
2-1
2-2
2-2
  • 5) Oben rechts in der Ecke auf "unsaved changes" klicken
    • SPEICHERN & ANWENDEN (endlich!)
2-1
2-2

Workflow im Terminal via ssh

(Formatierung und Formulierung in progress)

Das gleiche wie oben in UCi via ssh connection

  • 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 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)
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 config/olsr6
  • 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


Ein paar nützliche Tricks

  • Trick 17 bei mehreren Routern:
*namedesrouters*.olsr
  • Praktische Bonus-Anmerkung von Elektra: Firewall in Freifunk-Netz braucht man gar nicht. (d.h. in diesem Aufbau Router 1 sollte noch Firewall haben ab Router 2 nicht mehr)


  • 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

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.