VLANs trennen
Wird in der Freifunk-Firmware olsr für die LAN-Ports aktiviert, kann man an diesen Anschlüssen weitere Geräte betreiben. So auch zum Beispiel WLAN-Bridges, die selbst kein olsr können. In diesem Fall ergibt sich der Nachteil, dass die Gegenstellen dann glauben, direkt (ohne den Umweg des Routers wo olsr am LAN-Port aktiviert ist) kommunizieren können. Das ist besonders ärgerlich, wenn dann auf der Karte Links eingezeichnet werden, die gar nicht vorhanden sind. Auch vom Prinzip her widerspricht dieses Setup dem Gedanken eines gerouteten Meshes.
Abhilfe:
Die einzelnen LAN-Ports lassen sich getrennt ansprechen uns so kann man unter ihnen auch routen (nicht nur switchen). Leider gibt es dafür unter der Freifunk-Firmware keine Möglichkeit, die Einstellungen im Webinterface vorzunehmen. Auf der Kommandozeile ist es aber ziemlich einfach:
Mach als erstes Mal ein Backup deiner nvram-Konfiguration:
nvram show
Dann hast du die alten Werte falls irgendwas schief geht.
Vermutlich hast du "vlan0ports=1 2 3 4 5*" d.h. die 4 "LAN"-Ports gehören alle zum LAN dazu (5 ist der interne Switch). Da nehmen wir ihm die 2 Ports für die osbridges weg:
nvram set vlan0ports="1 2 5*"
1 und 2 sind vermutlich die Anschlüsse neben dem WAN-Port, die bleiben so normales LAN, aber das musst du ausprobieren.
Jetzt machen wir aus den anderen beiden Ports getrennte Anschlüsse:
nvram set vlan2ports="3 5" nvram set vlan3ports="4 5"
Der 5er ist jeweils damit die Anschlüsse mit dem inneren Switch kommunizieren können.
Diese Anschlüsse brauchen noch Namen unter denen wir sie in den Startscripten ansprechen können (z.B. osb1 und osb2):
nvram set osb1_ifname=vlan2 nvram set osb2_ifname=vlan3
Außerdem müssen die Scripte wissen, zu welchem physikalen Switch die Dinger gehören:
nvram set osb1hwname=et0 nvram set osb2hwname=et0
(es ist tatsächlich "et0" und nicht "eth0").
Dann konfigurieren wir darauf statische IP-Adressen:
nvram set osb1_proto=static nvram set osb2_proto=static nvram set osb1_ipaddr=NEUE_IP_FÜR_DIE_BRIDGE_AUS_REDEEMER nvram set osb2_ipaddr=ZWEITE_NEUE_IP_FÜR_DIE_BRIDGE_AUS_REDEEMER nvram set osb1_netmask=NETZMASKE_JE_NACH_IP nvram set osb2_netmask=NETZMASKE_JE_NACH_IP
Das ganze speichern wir mal:
nvram commit
und starten neu:
reboot
Dann probieren wir mal ob die Interfaces hochkommen:
ifup osb1 ifup osb2 ifconfig
Wenn das funktioniert hat und du vlan2 und vlan3 als Interfaces siehst, kannst du die beiden ifup-Befehle in /etc/init.d/S40network mit eintragen, dann starten die Interfaces beim Systemstart automatisch.
Jetzt müssen wir ihnen nur noch olsr beibringen. Dazu kopiere einfach aus /etc/olsrd.conf den Block 'Interface "eth1" { ... bis }' zwei mal nach /etc/local.olsrd.conf und ändere den Interfacenamen einmal auf vlan2 und einmal auf vlan3.
olsr neu starten:
/etc/init.d/S53olsrd restart
Zu guter Letzt muss noch die Firewall angepasst werden.
Dazu erstellt man eine Datei /etc/local.fw-vlans, macht sie ausführbar und speichert dort folgende Befehle ab:
iptables -I INPUT -i vlan1 -j ACCEPT iptables -I OUTPUT -o vlan1 -j ACCEPT iptables -I FORWARD -i vlan1 -j ACCEPT iptables -I FORWARD -o vlan1 -j ACCEPT iptables -I INPUT -i vlan2 -j ACCEPT iptables -I OUTPUT -o vlan2 -j ACCEPT iptables -I FORWARD -i vlan2 -j ACCEPT iptables -I FORWARD -o vlan2 -j ACCEPT
Fertig!