Kabel-Kopplung

Aus Freifunk Leipzig
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Kabel-Kopplung

Einleitung


An einigen Standorten empfiehlt es sich, Freifunkknoten per Kabel zu verbinden, z.B. dann, wenn sich die Nodes an entgegengesetzten Seiten desselben Hauses befinden, oder, um durch eine Backbonestrecke Teilnetze ans reguläre Freifunknetz anzubinden.
Für die Kopplung von Freifunk-Nodes empfehlen wir:

  • dem WAN-Interface jeder zu verbindenden Node eine neue IP aus dem 104er-Bereich zu geben (dazu wird in Leipzig das 88er-Backbone-Projekt verwendet)
  • sich die Technische Erklärung von Marco und Sven-Ola zu Gemüte führen, welche sich allerdings eher an diejenigen richtet, welche sich immer die Frage stellen Wie? und Warum?. ;)

Beispielbild

Kabelkopplung.jpg Bildschirmfoto Kabelkopplung.png

So geht's


  • Im Projekt 88 (Backbone) ein Subnetz (= ein kleiner IP-Bereich mit entsprechender "kleiner" Netzmaske) reservieren und auch gleich dort eintragen!
  • Keine Panik! Hört sich vielleicht kompliziert an, ist aber ganz einfach; zur richtigen Auswahl einer gültigen IP/Netzmaske-Kombination habe ich ein kleines Script gebastelt: --> IP-Rechner
  • Hat man sich einen IP-Bereich "errechnet" sollte man nachschauen ob im Projekt 88 dieses Subnetz inkl. Netz-IP und Broadcast-IP noch frei ist (siehe Muster 88.80/30)
  • Auf dem Node bei [Verwaltung] -> [WAN] jeweils eine IP (104.61.88.xyz) mit der entsprechenden Netzmaske (255.255.255.zyx) eintragen und [WAN-Protokoll] auf "OLSR" stellen
  • Beide Linksys mit Netzwerkkabel über die WAN-Ports verbinden.
  • Neustart...
  • Fertig! Jetzt sollte die 104.61.88.xyz-IP der jeweiligen Gegenseite in der Nodeliste der beiden Nodes stehen. In der Regel mit nem ETX-Wert von 1.00 ;). Beide Nodes sind jetzt per Kabel verbunden und als Route zwischen diesen Nodes wird jetzt immer die vom ETX-Wert bessere Kabel-Kopplung verwendet.

Subnetze

Hinweis! Im Moment sind im 88er-Backbone-Projekt nur wenig Subnetze registriert, weil bis jetzt immer wahllos irgendwelche IPs mit der Netzmaske 255.0.0.0 vergeben wurden. Beim aufmerksamen Lesen von Sven-Olas Posting wird aber klar, warum es sauber und besser ist kleine Subnetze zu vergeben. Als Muster habe ich das Subnetz 104.61.88.81/30 angelegt.

Im Leipziger IP-Bereich sollten die vergebenen IP/Netzmaske-Adressen dann zB. dann so ausschauen:

[Node1:]
 Freifunk-IP: 104.61.17.1,   Netzmaske: 255.0.0.0       
 WAN-Port-IP: 104.61.88.81,  Netzmaske: 255.255.255.252
[Node 2:]
 Freifunk-IP: 104.61.17.3,   Netzmaske: 255.0.0.0
 WAN-Port-IP: 104.61.88.82,  Netzmaske: 255.255.255.252

Kopplung über LAN-Ports (Achtung!!) Generell ist auch eine Kabel-Kopplung über die LAN-Ports möglich (zB. bei Kopplung von >2 Nodes), dazu muss nur unter [Verwaltung] > [LAN] > [LAN-Protokoll] "OLSR" ausgewählt und dort die IPs und Netzmasken eingetragen werden, analog wie oben bei der Kopplung über die WAN-Ports beschrieben. Jedoch sollte in diesem Fall unbedingt die automatische DHCP-IP-Vergabe auf LAN deaktiviert werden (DHCP-Anzahl = 0) und es können an diese Nodes kein Arbeitsplatzrechner per LAN angeschlossen werden - es werden sonst (je nach Einstellung) weitere 88er-Projekt-IPs per DHCP an diese LAN-Rechner vergeben. Am einfachsten ist es die Geräte über den WAN-Port zu koppeln, denn so bleiben die LAN-Ports von dieser Kopplung unbeeinflusst.

Kabel-Kopplung über ein vorhandenes Haus-LAN (noch mehr Achtung!) Wenn eine Kopplung über den LAN-Port sein muss, und ihr im selben LAN auch noch weitere Nicht-OLSR-Geräte hängen habt, zum Beispiel einen Router zu einem Subnetz, dann muss das NAT angepasst werden. Auf dem Node, der das Gateway sein soll, muss folgendes ausgeführt und dann in die /etc/local.fw eingetragen werden:

iptables -t nat -I POSTROUTING -s [IP-Adresse des Rechners]/32 -j MASQUERADE

Kabel-Kopplung ohne den WAN- oder LAN-Port zu "verlieren"

das Problem: ein bereits per LAN-Kopplung mit einem anderen Freifunk-Node verbundener Node soll zusätzlich zum HNA werden. Das Internet soll dabei auch per Netzwerkkabel und nicht per WLAN zum Node kommen. Der dafür eigentlich vorgesehene WAN-Port ist nun aber bereits durch die Kabelkopplung belegt ...

eine Lösung: Naja, das ist etwas komplizierter, weil du eine dritte eigenständige Netzwerkschnittstelle (vlan-Port) brauchst (zusätzlich zu WAN und LAN). Es gibt verschiedene Lösungen, aber ich würde per sog. vlan-tagging einen der vier (unbenötigten) LAN-Ports zu einem unabhängigen, zusätzlichen Port für die gewünschte OLSR-Kopplung "umwandeln".

Voraussetzung ist ein per robocfg konfigurierbarer Switch im Router.

ipkg update; ipkg install robocfg

zuerst überprüfen, wie der interne Switch aktuell konfiguriert ist:

root@17-4:~# robocfg show
Switch: enabled
Port 0(W): 100FD enabled stp: none vlan: 1 mac: 00:00:00:00:00:00
Port 1(4):  DOWN enabled stp: none vlan: 0 mac: 00:00:00:00:00:00
Port 2(3):  DOWN enabled stp: none vlan: 0 mac: 00:00:00:00:00:00
Port 3(2):  DOWN enabled stp: none vlan: 0 mac: 00:00:00:00:00:00
Port 4(1):  DOWN enabled stp: none vlan: 0 mac: 00:00:00:00:00:00
Port 5(C): 100FD enabled stp: none vlan: 0 mac: 00:00:00:00:00:00
VLANs: BCM5325/535x enabled mac_check mac_hash
vlan0: 0 1 2 3 5t
vlan1: 4 5t

Port 0 ist bei Linksysen die WAN-Buchse (je nach Hardware-Revision aber leider auch die 4) Port 1-4 (bzw. 0-3) sind die LAN-Ports Port 5 ist immer der interne Host-Port, mit welchem jeweils die einzelnen Ports verbunden werden, deßhalb taucht immer die 5 auf und ist aktiv (Port 5(C): 100FD enabled stp) das "t" oder der "*" weißt darauf hin, an welchen Port ungetagte Pakete geschickt werden (ist standartmäßig immer vlan0/LAN und sollte auch nicht verändert werden)

Die eigentlichen Portnummern können unterschiedlich sein - die Beschreibung geht von einem WRT54GL aus. erstmal überprüfen, wie dein vlan0=br0=LAN konfiguriert ist:

root@17-1:~# nvram show 2>&- | grep vlan0
vlan0ports=3 2 1 0 5*
lan_ifnames=vlan0
vlan0hwname=et0

dann:

nvram set vlan0ports='2 1 0 5*'   #einen Port dem vlan0=br0=LAN wegnehmen (in diesem Fall: Port 3, also der 2. LAN-Port von rechts)
nvram set vlan2ports='3 5'        #vlan2 mit dem freien Port anlegen
nvram set vlan2hwname=et0         #vlan2 an den internen Switch binden
nvram set olsr_ifname=vlan2       #Name für neues Interface konfigurieren
nvram set olsr_proto=olsr         #Protokoll olsr für vlan2
nvram set olsr_netmask=255.x.y.z  #Netzmaske laut Anleitung im Wiki (s.o.)
nvram set olsr_ipaddr=104.61.x.y  #IP-Adresse für vlan2

nochmal überprüfen und in den nvram schreiben:

nvram show 2>&- | grep 'vlan2\|olsr'
nvram commit

dann noch eine Datei erstellen um die das Interface beim booten zu starten und die Verkehr durch die Firewall zu erlauben:

vi /etc/local.fw-vlan2

mit dem Inhalt [Taste "i", zum schreiben ":w" und verlassen ":q"]

#!/bin/sh

ifup olsr
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

dann brauchen wir noch eine Datei um dem OLSR diese neue Schnittstelle bekannt zu machen:

vi  /etc/local.olsrd.conf-vlan2

mit dem Inhalt (hier etwas Copy&Paste-freundlich)

Interface "vlan2"
{
HelloInterval           5.0
HelloValidityTime       125.0
TcInterval              3.0
TcValidityTime          375.0
MidInterval             25.0
MidValidityTime         375.0
HnaInterval             25.0
HnaValidityTime         375.0
}

Schon solltest du nach einem Neustart ein drittes Interface zur Verfügung haben, welches für die Kabelkopplung verwendet wird. Das neue Interface sollte dann einer der äußeren LAN-Ports sein (eigtl. der Port neben dem WAN-Port, kommt aber auf die Version der WRT an).

Auch möglich: testen an welchem LAN-Port keine DHCP-IP mehr an die Netzwerkkarte vergeben wird, dieser muss dann mit dem jeweiligen Kabelkopplungsport-Port der anderen Node verbunden werden.

Kabelkopplung sichern/wiederherrstellen

Du kannst das neue vlan2 für die OLSR-Kabel-Kopplung nur über nvram-Befehle konfigurieren und nach einem nvram-Reset ist alles wieder weg. Auch vor einem Firmware-Update die local.fw und local-olsrd-conf per (nv)backup sichern, dann ist auch ein Update problemlos möglich. Dazu müsst ihr folgendes in der Node ergänzen:

unter der Zeile [Verwaltung] > [Backup] > Backup-Muster:

/etc/local.olsrd.conf-* /etc/local.fw-*

(also jeweils alle lokalen Firewall- und OLSR-Einstellungen in den extra Dateien, welche automatisch eingebunden werden, aber so in der Firmware nicht vorhanden sind, also nicht auch überschrieben werden können)

Falls die Sache mit der HNA-Ankündigung hinterher nicht klappt, sondern es funky Routing-Suppe gibt, dann könnte das daran liegen, dass der Router zum Internet ICMP-Pakete blockt. Näheres dazu findet sich unter http://wiki.leipzig.freifunk.net/InternetGateway.

Tips zur Kabel-Kopplung und PoE


  • Bei Power over Ethernet Strecken von mehr als 30 Metern sollten besser alle 4 freien Adern benutzt werden.
  • Bei langen Strecken kann die Geschwindigkeit von Hand auf 10 MBit Ethernet heruntergeschaltet werden
  • Es ist möglich aus jedem LAN-Port einen WAN-Port zu machen. Dafür gibt es im WAN-Menü ein Eingabefeld RJ45 Anschlüsse.
 Router-Beschriftung:  WAN 1 2 3 4
 Firmware-Bezeichnung:  4  3 2 1 0

Ethernet Modus Einstellen:

# ipkg update
# ipkg install robocfg
# robocfg show

Das sieht dann ungefähr so aus:

Port 0(W):  DOWN enabled stp: none vlan: 0 mac: 00:00:00:00:00:00
Port 1(4):  DOWN enabled stp: none vlan: 0 mac: 00:00:00:00:00:00
Port 2(3):  DOWN enabled stp: none vlan: 0 mac: 00:00:00:00:00:00
Port 3(2): 100FD enabled stp: none vlan: 0 mac: 00:00:00:00:00:00
Port 4(1):  10FD enabled stp: none vlan: 1 mac: 00:00:00:00:00:00
Port 5(C): 100FD enabled stp: none vlan: 0 mac: 00:00:00:00:00:00
VLANs: BCM5325/535x enabled mac_check mac_hash
vlan0: 0 1 2 3 5t
vlan1: 4 5t
vlan2:

Nun muß der Richtige Port bestimmt werden. Hier ist z.B. Port 4 (Model WRT54GL) der WAN Port.

robocfg port 4 media 10HD

Würde z.B. den WAN Port auf 10 MBit Half-Duplex stellen.

robocfg help

Zeigt alle Parameter

Die eingegeben Befehle z.B. in /etc/init.d/S41network.local eintragen wie hier:

#!/bin/sh
robocfg ....

Die datei mit

# chmod +x /etc/init.d/S41network.local

ausführbar setzten

Links

Aufbau

  • Beispiel mit WAN-Kopplung (blaues Kabel liegt als Schleife hinter den Leiterplatten), und Stromversorgung mit nur einem Trafo (bei WRT54GL vertragen die alten Trafonetzteile 3 Nodes)

113 11 2.jpg