Diese Anleitung erklaert die Konfiguration eines Backbone Standorts anhand eines LeMaker BananPi (nicht Router Version) in Zusammenarbeit mit einem Mikrotik RB260GSP Managbarer POE-Switch. Die Methode sollte sich jedoch auch einfach auf einen beliebigen andere Kombination aus Gluon Router und managbarem VLAN Switch uebertragen lassen.

Motivation

Szenarien

BananaPirouter dia.png

Backbone-Standort Router

An Backbone Standorten benoetig man einen Router der in der Lage ist die verschiedenen Batman Stroeme, welche ueber unterschiedliche Quellen reinkommen, zu vermitteln (Richtfunkantennen). Benutzt man eine POE faehige Switch so kann man sich den Kabelaufwand fuer die POE-Injektoren sparen und die Installation passt sauber in einen kleinen Wandkasten. Wuerde man auf die gesamte Switch einfach als Eingangsschnitstelle dem bat0 Geraet hinzufuegen so koennte innerhalb des Backbone-Netzes jeder mit jedem auf Layer2 kommunizieren ohne das der Batman-Dienst auf das Routing einfluss nehmen kann.Diese vielzahl an Verbindungen steigert unoetigerweise den Routingaufwand innerhalb des Netzwerks. Deshalb erstellt man fuer jede einzelne Richtfunkstrecke ein eigenes VLAN, welches man dann dem Batman Geraet als Eingangsschnitstelle zuweist. Zudem gibt es ein Standortweites Managment-VLAN welches an allen Geraeten anliegt und mit dem Freifunk-Client Netzwerk gebridge ist. Dadurch sind alle nicht Gluon-Geraete ueber das Freifunk-Netzwerk konfigurierbar. Sollten an den Standort auch Gluon-Geraete zur Versorgung der Nachbarschaft oder von Innenraeumen vorgesehen sein, so kann man diese im MeshOnWan-Modus bestreiben. Fuer die einzelnen Geraete erstellt man dann ebenso dedizierte Batman-VLANs auf dem BananaPi und konfiguriert auf der Switch einzlenen Ports so, dass das entsprechende VLAN auf diesem ungetagged ausgegeben wird.

VPN Offloader mit inhouse WLAN-Verteilung und Backbone Anbinung auf Gluon-Router Basis

Installation des Gluon Systems

Zur Zeit bieten wir ein Image fuer das BananaPi nur im experimental Zweig an:

lemaker-banana-pi.img

Das Image enpackt man und uebertraegt es per dd auf die SD-Karte:

 gunzip gluon-ffmz-0.3-experimental-2016.01.25-lemaker-banana-pi.img.gz
 dd if=gluon-ffmz-0.3-experimental-2016.01.25-lemaker-banana-pi.img of=/dev/mmcblk0 bs=1M 

Nun startet man das BananaPi mit der SD-Karte und verbidet sich per Netzwekkabel mit dem Pi. Unter der URL [1] fuehrt man die Gluon config incl. Remotezugriff durch. Das BananPi kann auch als VPN-Offloader benutzt werden hierfuer aktiviert man das VPN-Mesh.

Nun verbindet man das Pi mit dem lokalen Netzwerk und startet es neu. Es bezieht nun eine IP aus dem lokalem Netzwerk und ist unter dieser per ssh erreichbar. Alternativ kann man sich, wenn der VPN zugang konfiguriert ist, ueber die Freifunk-IPv6-Addresse mit dem Pi verbinden.

Konfiguration der VLANs im Gluon Router fuer Client und WAN

Da das BananaPi nur ein Netzwerkschnitstelle hat, muss man die Datenstroeme in verschiedene VLANs aufteilen.

In diesem Beispiel wollen wir das WAN-Netzwerk auf das VLAN 2 und das Client-Netzwerk auf VLAN 3 legen. Ab VLAN 4 aufwaerts kann man dann VLANs fuer die einzelnen Funkstrecken definieren.

Als erstes aendern wir die VLANs des Client- und WAN-Netzwerks. Hierzu oeffnet man die /etc/config/network und aendert den br-client und br-wan Eintrag ab:

config interface 'wan'
    option igmp_snooping '0'
    option ifname 'eth0.2' #<= eth0 in eth0.2 abaendern
    option auto '1'
    ...
    option mtu '1500'
config interface 'client'
    option type 'bridge'
    option reqprefix 'no'
    option proto 'dhcpv6'
    list ifname 'bat0'
    list ifname 'eth0.3' #<= hier den eth0.3 Eintrag hinzufuegen
    option igmp_snooping '0'
    ...
    option mtu '1500'

Nach einem /etc/init.d/network reload ist das Pi dann nur noch unter den entsprechenden VLANs erreichbar. Daher muss man nun entweder auf seinem Rechner die entsprechenden VLANs einrichten, oder man Konfiguriert die Switch so, dass man die entsprechenden VLANs auf bestimmte Ports legt, aus denen der Traffic dann ohne das entsprechende VLAN-Tags herausfliest (untagged).

VLANs auf der Switch

Wir wollen erreichen, das auf Port5 später ungetagged WAN-Netz, auf Port4 ungetagged Client-Netz und auf Port2 das getagged VLAN4 für das dedizierte Batman VLAN laeuft. Der BananaPi wird über Port1 angeschlossen. Unter dem Punkt VLAN kann man die einzelnen VLANs konfigurieren. Wir legen hierzu ein VLAN2 fuer den WAN-Verkehr an. Ein VLAN3 fuer den Freifunk-Client-Verkehr und ein VLAN4 fuer die dedizierte Batman Kommunikation auf einem Port (z.B. Richtfunkstrecke, etc.).

 

Als nächstest kann man die Ports unter dem Reiter VLAN Konfigurieren. Soll ein Port ein ungetaggedes VLAN ausleiten, muss er wie Port4/Port5 Konfiguriert werden und die VLAN id entsprechend angepasst werden. Ist ein Port nur für dedizierten Batman-Verkehr vorgesehen, kann man ihn auf "only tagged" setzen, wie bei Port2.

 

Um die Switch im Freifunk Netz erreichbar zu machen, konfiguriert man unter System den Zugriff auf VLAN3 und gibt ihm eine feste IPv4 aus dem Backbone Netzbereich.

 

Konfiguration der VLANs fuer einzelnen Funkstrecken

Jede 5Ghz Antenne, die an den Standort angeschlossen wird, haengt in zwei VLANs, einmal das VLAN3 in dem sich das Client-Netz befindet, welches auf allen Antennen das gleiche ist und einem dediziertem VLAN pro Antenne, in dem nur der Batman Verkehr fuer die Clients hinter den entsprechenden Antenne laeuft. Das VLAN3 haben wir schon bei der Konfiguration des Client-VLANs angelegt. Daher muessen wir jetzt nur noch ein VLAN pro Antenne anlegen und als Eingangsgeraet zu der Batman Schnitstelle hinzufuegen. Fuer jede Antenne wird ein solcher Block nach der Bat0 Direktive hinzugefuegt:

config interface 'meshvlan4' #<= Fuer jedes VLAN einen anderen Interface Bezeichner angeben          
    option auto '1'                        
    option ifname 'eth0.4' #<= Hier waehlt man die VLAN-ID aus in diesem Fall 4               
    option mesh 'bat0'                    
    option proto 'batadv'                 
    option macaddr '02:53:05:00:A1:A9' #<= Jedes VLAN braucht seine eigenen MAC-Addresse damit Batman sie unterscheiden kann
    option mtu '1538' #<= Die MTU wird auf 1500(Ethernet)+34(Batman)+4(VLANID)=1538 gesetzt um Fragmentation zu vermeiden

Fuer die MAC Addresse zaehlt man am besten die erste Ziffer des zweiten Blocks hoch oder runter (0-9,a-f) [Gluon veraendert die zweite Ziffer]. Man muss aufpasssen, dass man keine bereits belegten MAC-Addresen an diesem Geraet erwischt. Am einfachsten geht dies nach einem "/etc/init.d/network reload" per:

# ifconfig -a |grep HW 
bat0       Link encap:Ethernet  HWaddr 02:43:05:00:A1:A9  < Gleiche MAC zwischen bat0 und br-client 
br-client  Link encap:Ethernet  HWaddr 02:43:05:00:A1:A9  < sowie eth0, eth0.2 und eth0.3  ist O.k. 
br-wan     Link encap:Ethernet  HWaddr 02:44:05:00:A1:A9  
eth0       Link encap:Ethernet  HWaddr 02:43:05:00:A1:A9  
eth0.4     Link encap:Ethernet  HWaddr 02:53:05:00:A1:A9  << Diese MACs muessen sich unterscheiden
eth0.5     Link encap:Ethernet  HWaddr 02:63:05:00:A1:A9  << Diese MACs muessen sich unterscheiden
eth0.2     Link encap:Ethernet  HWaddr 02:43:05:00:A1:A9  <
eth0.3     Link encap:Ethernet  HWaddr 02:43:05:00:A1:A9  <
local-node Link encap:Ethernet  HWaddr 02:00:0A:25:00:01  

Dies liefert eine Liste an allen vergebenen MAC-Addressen. Bei den angelegten VLANS fuer den Batman Verkehr darf es keine Ueberschneidungen mit den vorab von Gluon vergebenen MAC-Addressen geben. Innerhalb der nicht VLAN Schnitstellen duerfen jedoch gleiche MAC-Addressen auftauchen.

Sollte denoch mal eine doppelte MAC-Addresse dabei sein meckert Gluon nach einem Neustart im dmesg darueber und man erlebt die komischsten Effekte, da Batman nicht in der Lage ist Traffic von diesen beiden Schniststellen voneinander zu unterscheiden.

Setzen der MTU der eth0 Schnitstelle

Damit die MTU der VLANs auch gesetzt werden kann muessen wir einen Block zur /etc/config/network hinzufuegen in dem wir die MTU Groesse auf dem physischen Interface setzen.

config interface 'physlan'                                   
    option ifname 'eth0'                               
    option proto 'none'                 
    option mtu '1538

Zugriff ueber Serielle Schnitstelle

http://linux-sunxi.org/LeMaker_Banana_Pi

Anbindung andere Gluon Geraete "VLAN-Spider"

Will man andere Gluon-Geraet per Kabel mit dem BananaPi-Router verbinden, so bietet es sich an diese auch in verschieden VLANs laufen zu lassen. Dafuer konfiguriert man die Gluon Geraete auf Mesh-on-Wan. Beim BananaPi-Router legt man jetzt pro Batman Geraet ein zusaetzliches separtes VLAN an wie in Abschnitt? beschrieben. Auf der Switch konfiguriert man nun den Port in dem das Batman-Geraet steckt so, dass auf dem Port das entsprechende VLAN ungetagged ausgegeben wird. Somit ist keine vom Standart abweichende Konfiguration auf dem Gluon Geraet von noeten, ausser man stellt die MTU auf 1538, um Fragmentation zu vermeide. Wie die Konfiguration der Switch aussieht ist in Abschnitt? beschrieben, hier muss man nur die entsprechend konfiguriert VLAN-ID angeben.