Vorgeplänkel

Das BATMAN Protokoll ist auf unseren Images so konfiguriert, dass es über das "adhoc0" (drahtlos) und "freifunk_vpn" (Tinc über den DSL) Interface mesht. Stehen jetzt aber aus irgendwelchen Gründen zwei Router so dicht zusammen, dass sie über Patch-Kabel verbunden werden könnten, dann kann man damit den Overhead über die Funk-Schnittstelle mindern, indem man das "meshen" zwischen den Routern über einen LAN-Port leitet. Davon haben viele Geräte 4 Stück.

Was muss man tun?

Das Kabel einfach in einen LAN-Port 1..4 zu stecken auf beiden Seiten bringt nicht. BATMAN muss man sagen das da eine "Brücke" ist über die er arbeiten kann. Dazu muss man die NETWORK-Config im Ordner /etc/config bearbeiten.

Erst mal die Agenda

  1. Wir nehmen aus dem "switch" einen der 4 Ports heraus.
  2. Wir machen ein zusätzliches "vlan" (virtuelles LAN) auf und bauen ihn dort ein
  3. Wir machen ein neues mesh Interface mit dem Namen "mesh_lan" auf
  4. Jetzt Kabel einstecken und booten
  5. Prüfen: geht was übers Kabel? Wie sehe ich das?

Dann wollen wir mal loslegen

Erst mal noch etwas Theorie. Zum Verständnis ist es wichtig zu wissen wie die LAN-Ports im Router durchnummeriert werden. Da geht es nämlich schon los. Die muss man sich nämlich pro Gerätetyp erst einmal besorgen. Jedes Modell hat da unter Umständen eine andere Zählweise. Das OpenWrt-Wiki gibt hier aber Auskunft. Als erstes lernt man dort, dass es mehr als nur die sichtbaren Ports gibt, da spielt die CPU nämlich noch mit rein.

Beispiel anhand des TP-WD1043ND wiki.OpenWRT

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'   
 
config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '1 2 3 4 5t'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '0 5t'

So sieht das Ende der network Konfiguration aus. Der erste Block macht einen Reset auf den "switch0" und aktiviert das "vlan". Nun werden zwei virtuelle Interfaces angelegt. Block vlan 1 ist für den LAN-Teil zuständig und Block vlan 2 für das WAN (DSL-Anschluss).

LAN-Block (vlan 1)

Wir sehen in der Zeile "ports" die Zahlen 1 bis 5 mit Blanks separiert. Die 5 hat auch noch ein "t" angehängt. Im hardwarespezifischen Teil des OpenWRT-Wikis zu diesem Router-Modell bekommen wir gesagt, dass die Zahlen 1..4 den Nummern der Steckplätze auf der Rückseite entsprechen. Die 5 ist der Router mit einem unsichtbaren Port selber und "t" zeigt an, das die Pakete die an ihn gerichtet sind "getaggt" (gekennzeichnet) sind. Mehr zum Thema "tagged-Packets" könnt ihr im OpenWRT-Wiki nachlesen.

WAN-Block (vlan 2)

Hier steht unter "ports" eine "0" und die "5t". Was die 5 ist, haben wir eben erfahren. Jedoch die "0" steht hier für den WAN-Port. Da wir von dem hier nichts wollen, lassen wir "vlan 2" in Ruhe.

1. Wir nehmen aus dem "switch" einen der 4 Ports heraus

Wir suchen uns einen Port aus und nehmen den aus der ports-Kette im vlan 1 raus. Dieser Port ist dann nicht mehr für einen normalen Client zu gebrauchen. Am Besten den dann auf dem Gerät markieren. Ich wähle den Steckplatz LAN 4 aus. Beim 1043 hat er auch die Nr. 4. Dann sieht vlan 1 dann so aus:

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '1 2 3 5t'

2. Wir machen ein zusätzliches "vlan" auf

Wir kopieren den ganzen Block mit dem vlan 1 direkt darunter und bauen ihn als vlan 3 um (nächste freie Nummer nehmen). Dann setzen wir den herausgenommenen Port 4 dort wieder ein (Wichtig: die CPU "5t" bleibt drin).

config switch_vlan
        option device 'switch0'
        option vlan '3'
        option ports '4 5t'

3. Wir machen ein neues mesh Interface mit dem Namen "mesh_lan" auf

In der network Konfiguration befindet sich dieser Block:

config interface 'mesh'
        option ifname 'adhoc0'
        option mtu '1528'
        option proto 'batadv'
        option mesh 'bat0'

Diesen kopieren wir ebenfalls komplett noch einmal dahinter und ändern ihn ab:

config interface 'mesh_lan'
       option ifname 'eth0.3'
       option mtu '1500'
       option proto 'batadv'
       option mesh 'bat0'

Was hat sich hier geändert? Wir haben diesem Block den sinnvollen Namen "mesh_lan" gegeben. Das wollen wir schließlich ja auch. Dann sagen wir mit "ifname", dass wir damit das dritte virtuelle "Unter-Interface" von eth0 ansprechen. Die durchnummerierten vlan-Blöcke werden hier nämlich angehängt. Von der Router-Ersteinrichtung wissen wir ja noch, dass "eth0.1" das LAN Interface - also unser "switch" ist und eth0.2 der WAN-Ausgang. Zur Erinnerung: wir haben eben das "vlan 3" erstellt, was wir hier mit "eth0.3" auch benutzen. Wir sagen mit "proto batadv" auch, dass dieses Protokoll auf dem Port gesprochen wird.

4. Jetzt Kabel einstecken und booten

Die "network" Konfiguration nun speichern, ein Kabel in den Port 4 einstecken und in dem anderen Router den dafür reservierten LAN-Port verbinden. Nach dem "reboot" sollte alles aktiv geworden sein.

5. Prüfen: geht was übers Kabel? Wie sehe ich das?

Nach dem Boot-Vorgang also schnell wieder einwählen mit SSH oder PUTTY und dann den Befehl absetzen:

batctl if

Wir sehen dann hoffentlich:

adhoc0 activ
mesh_lan activ

So weit - so gut. Was ab geht auf der "Brücke" kann man sich anzeigen lassen mit:

batctl td mesh_lan

Zum Anhalten CTRL-C drücken.

Kleiner Auszug (stark gekürzt am Zeilenende):

21:40:29.661984 BAT 92:f6:52:f4:71:ed > a0:f3:c1:48:d5:51: TT response, ttvn 122, entries 3, ttl 50, v 14, 
21:40:29.673194 BAT 92:f6:52:f4:71:ed > 66:66:b3:59:5a:a8: TT response, ttvn 122, entries 3, ttl 49, v 14, 
21:40:29.741951 BAT b2:48:7a:c5:d2:e6: OGM IV via neigh 66:66:b3:59:5a:a8, seq 607981500, tq 138, ttvn 27, 
21:40:29.744361 BAT 3e:f0:4d:12:b8:ae: OGM IV via neigh 12:fe:ed:4f:f9:35, seq 1346194223, tq 195, ttvn 197
21:40:29.746917 BAT 66:70:02:84:e0:dc: OGM IV via neigh a2:f3:c1:48:d5:52, seq 1179044385, tq 109, ttvn 6, 
21:40:29.751886 BAT f6:4f:5a:88:4f:2c: OGM IV via neigh 66:66:b3:59:5a:a8, seq 1380860194, tq 138, ttvn 77,
21:40:29.757191 BAT f6:4f:5a:88:4f:2c: OGM IV via neigh a2:f3:c1:48:d5:52, seq 1380860194, tq 109, ttvn 77,...



Todo: Liste der internen Port-Nummern anderer Router-Modelle sammeln und anbieten
Solltest du zu den Helden gehören, die ein Todo gelöst haben, darfst du diesen Hinweis löschen.