VLANs trennen

Aus FunkFeuer Wiki
Version vom 21. April 2009, 20:58 Uhr von Dieter (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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 physikalischen Switch die Dinger gehören:

 nvram set vlan2hwname=et0
 nvram set vlan3hwname=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!