Opennet im VLAN

Aus Opennet
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Überblick

Ein VLAN kann zur Mehrfachnutzung einer vorhandenen Netzwerkverkabelung eingesetzt werden. Beispielsweise ist es möglich, in die heimische Netzwerkverteilung Opennet-Verkehr (inkl. OLSR) einzuspeisen, ohne dass dieser Netzwerkverkehr für den Nutzer spontan sichtbar ist. Praktisch erfolgt diese Überlagerung durch die Markierung (tagging) spezifischer Pakete (z.B. der Opennet-Verkehr) mit einer sogenannten VLAN-ID. Diese markierten Pakete werden nur von Geräten beachtet, die entsprechend konfiguriert werden.

Ein ähnlicher Effekt ist zwar auch durch IP-Aliase erreichbar, allerdings bleiben die Pakete des separaten IP-Netzes für jeden Netzteilnehmer auf den ersten Blick sichtbar. Zudem gestaltet sich die Konfiguration beim Übergang in weitere Subnetze wesentlich komplexer als bei VLANs.

VLANs stellen jedoch keinerlei Zugangskontrolle dar - die Pakete sind bei entsprechender Konfiguration für jeden Client sichtbar.


Anwendungsfälle

Alice und spontanes OLSR

  • Alice verbindet ihr Notebook mit einer beliebigen Netzwerkdose in ihrer Wohnung
  • Alice tippt eine kurze Befehlszeile (z.B. "sudo ifup opennet") ein
  • ihr Notebook hat nun eine reguläre Opennet-IP und nimmt am OLSR-Routing teil
  • ihr normales lokales Netzwerk (inkl. Routing in das Internet) bleibt parallel bestehen

Bob bringt seinen Server ins Opennet

  • Bob betreibt in seinem heimischen Netzwerk einen Server
  • der Server ist nicht direkt mit dem Opennet-AP in Bobs Netz verbunden (Switches und/oder Router liegen dazwischen)
  • Bob konfiguriert auf seinem Server eine statische Opennet-IP (inkl. OLSR)
  • der Server kann nun Dienste im Opennet anbieten oder OLSR-spezifische Operationen (Node-Überwachung, ...) ausführen
  • die anderen Geräte im Netz nehmen diesen Opennet-Verkehr (zwischen Server und AP) nicht wahr


Voraussetzungen

Alle Router in deinem Netz müssen 802.1Q unterstützen. Praktisch jedes Gerät mit Openwrt, sowie konfigurbare Switches und manche (tendenziell recht teure) Router sind dazu in der Lage.

Die untenstehende Beschreibung verwendet die VLAN-ID 10 für den Opennet-Verkehr. Dies ist eine willkürliche Wahl. Prinzipiell ist jede Zahl zwischen 2 und 4095 möglich. Bei manchen Ethernet-Switches (hier ist das physikalische Netzwerk-Interface in einem Router gemeint) treten jedoch mit openwrt Probleme auf, wenn die VLAN-ID größer als 15 ist.


Einrichtung der Opennet-Node

Dies betrifft Alices Notebook und Bobs Server (siehe oben).

Vorbereitung

  • Pakete vlan und olsrd installieren:
   aptitude install vlan olsrd
  • folgende Zeilen in die /etc/network/interfaces einfügen:
    • dabei XXX durch eine beliebige IP ersetzen (bzw. melde deine mobile IP an)
    • eventuell eth0 durch dein lokales Netzwerk-Interface ersetzen
 iface opennet inet manual
   pre-up      if ! ifconfig -a | grep -q "^eth0 "; then echo "First bring eth0 up."; false; fi
   pre-up      /sbin/ip link add link eth0 name opennet type vlan id 10
   post-up     ifconfig opennet 192.168.33.XXX netmask 255.255.0.0
   post-up     invoke-rc.d olsrd start
   post-down   /sbin/ip link delete opennet
   post-down   invoke-rc.d olsrd stop
  • olsrd einrichten:
    • START_OLSRD in der /etc/default/olsrd auf YES setzen
    • interface-Zeile in der /etc/olrsd/olsrd.conf setzen:
 Interface "opennet"

Nutzung

  • Verbindung aufbauen/abbauen:
 ifup opennet
 ifdown opennet
  • die obigen Kommandos erfordern root-Rechte - also musst du eventuell sudo verwenden
  • nun kannst du das OLSR-Routing um deinen Rechner herum betrachten: http://localhost:8080


Einrichtung des VLAN im Netz

Das folgende Procedere muss für alle Router im Netzwerk durchgeführt werden. Einfache Switches erfordern keine spezifische Konfiguration. Konfigurierbare Switches sollten selbsterklärend analog zur folgenden Beschreibung bearbeitet werden.

VLAN erzeugen

Die folgende Beispielkonfiguration kannst du der Einfachheit halber manuell an die Datei /etc/config/network anhängen.

Die verwendeten Portnummern gelten nur für das angegebene Gerät. Du solltest auf jeden Fall bei OpenWRT nachschauen, welche Nummern die Ports deines Routers haben. Diese Portnummern, sowie der virtuelle CPU-Port sind in der untenstehenden ports-Einstellung jeweils mit dem Präfix t einzutragen.

Beispielkonfiguration für Netgear WNDR3700 (/etc/config/network):

 config 'switch_vlan'
       option 'device' 'rtl8366s'
       option 'vlan' '10'
       option 'ports' '0t 1t 2t 3t 5t'

Somit erhält der obige rtl8366s-Switch (recht verbreitet) ein zusätzliches VLAN (mit der ID 10) auf allen Ports, wobei alle ausgehenden Pakete immer mit dieser ID markiert werden.


Bridge über mehrere VLAN-Interfaces

Falls das WAN-Interface des Routers nicht an dem internen Switch des LAN-Interfaces hängt, dann eine Bridge-Konfiguration der VLANs hilfreich.

Füge die folgenden Zeilen an die Datei /etc/network/interfaces an:

 config 'interface' 'opennet'
       option 'proto' 'none'
       option 'type' 'bridge'
       option '_orig_ifname' 'eth0.10'
       option '_orig_bridge' 'true'
       option 'ifname' 'eth0.10 eth1.10'
       option 'auto' '1'
       option 'stp' '1'

Für den Port eth1 (der übliche WAN-Port) wird damit magisch aufgrund des neuen Interface-Namens (eth1.10) ein VLAN mit der ID 10 angelegt. Diese Magie funktioniert nur mit einfachen Ports, also nicht mit internen Switches.

Die Bridge-Konfiguration verknüpft das VLAN des LAN-Interfaces mit dem VLAN des WAN-Ports.

IP-Konfiguration (optional)

Es ist nicht erforderlich, dem Router eine IP aus dem VLAN-Bereich (also eine Opennet-IP) zu geben. Das Interface muss also lediglich aktiviert, nicht jedoch für ipv4 konfiguriert werden.

Falls der Router jedoch auch im Opennet sichtbar sein soll, dann sind noch folgende Schritte erforderlich:

  • statische IP auf dem Interface opennet konfigurieren
  • das Interface opennet einer Firewall-Zone zuteilen
  • Masquerading und Forward-Policies konfigurieren
  • OLSR installieren

Bekannte Probleme (UNBEDINGT LESEN)

Gemischtes VLAN-Tagging mit openwrt (bis einschließlich backfire)

Mit openwrt bis einschließlich backfire schlägt trunking, also die oben beschriebene gemischte Konfiguration von tagged (Opennet-Verkehr) und untagged (sonstiger Verkehr) Ports auf unangenehme Weise fehl. Daraufhin wird er Router nicht mehr über die Ports kommunizieren.

Kurz gesagt: du solltest vorher als unbedingt sicherstellen, dass du im Notfall per WLAN das Konfigurationsinterface des Routers erreichen kannst. Andernfalls wirst du im Problemfall kaum um eine komplette Neu-Einrichtung des Routers herumkommen.

 wget --no-check-certificate https://dev.openwrt.org/raw-attachment/ticket/8867/switch.sh
 chmod +x switch.sh
 scp -p switch.sh root@172.16.X.Y:/lib/network/


Debugging

Wireshark

Der Netzwerk-Sniffer Wireshark] wird alle normalen und VLAN-Pakete auf dem physikalischen Interface anzeigen. Für eine Filterung von vlan-Pakete kannst du beispielsweise folgende Regeln verwenden:

  • Pakete für VLAN #10: vlan.id == 10
  • Pakete mit VLAN-Markierung: vlan.id
  • Pakete ohne VLAN-Markierung: not vlan.id


tcpdump

Mit dem Debian-Paket v4.3 scheint es spontan nicht möglich zu sein, auf dem physikalischen Interface nach VLAN-IDs zu filtern. Oder hat jemand andere Informationen?

tcpdump kann jedoch auf das spezifische VLAN-Interface angesetzt werden (z.B. tcpdump -i opennet -n). Nun werden naturgemäß nur die Pakete mit der passenden VLAN-ID angezeigt.


Port-Konfiguration eines Routers

Das Programm swconfig ist für die Einstellung des internen Switches, sowie für das vlan-Tagging zuständig.

Die üblichste Befehlszeile wird hier folgende sein:

 swconfig dev eth0 show

Der Name des Switch-Interfaces ist bei manchen Geräten jedoch nicht identisch mit dem des Netzwerk-Interfaces. Beispiele für andere Switch-Interfaces sind:

  • rtl8366s
  • ... bitte weitere eintragen

Die Port-Zuteilung eines VLANs lässt sich beispielsweise folgendermaßen ändern:

 swconfig dev eth0 vlan 10 set ports "0t 1t 2t 3t 5t"
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge