Monthly Archives: May 2014

Pakete vom Rathaus Neukölln

Es ist wieder Zeit für einen Ich-will-verstehen-wie-Netzwerken-geht-Beitrag. Vor kurzem ist das Rathaus Neukölln im Freifunknetz online gegangen. Der Startschuss also, uns auch wieder mit unserem Freifunk zu beschäftigen. Warum? Weil Freifunken einfach total toll ist. Eigentlich wollte ich hier nur beschreiben, wie wir unsere kleine Nanostation, mit der man sich per Richtfunk mit anderen gleichartigen Geräten verbinden kann, einrichten und etwas über Meshing schreiben. Ich stellte aber fest, dass ich erstmal verstehen musste, wie Pakete überhaupt verschickt werden. Der Artikel enthält also einen echten Turning Point^^ (Vielleicht sollte der Laie meinen ersten Artikel lesen, sonst könnte der erste Teil etwas verwirrend sein)

Eigentlich sollte es so laufen:

  1. Nanostation mit dem Rathaus verbinden
  2. Nanostation mit unserem Freifunkrouter verbinden

Die Nanostation mit dem Rathaus zu verbinden war so einfach, wie es uns auf der Mailingliste beschrieben wurde. Auf dem Rathaus wird ein Access Point betrieben und die Nanostation kann sich mit diesem einfach als Client verbinden. Die Nanostation mit unserem Freifunkrouter zu verbinden hat uns schon mehr Kopfzerbrechen bereitet.  Zur Erinnerung: ein Router ist dazu da mehrere Netzwerke miteinander zu verbinden. Der letzte Stand war, dass auf unserem Freifunkrouter 4 Netze konfiguriert sind (unser Freifunkunternetz für die Nachbarn und Gäste, 2 Freifunkunternetze für Ad-hoc-WLAN-Verbindungen zu anderen Routern und unser Zuhausenetzwerk). Normalerweise verbindet sich der Router per WLAN mit anderen Freifunkroutern, aber mit der Nanostation geht das nicht. Die hat nämlich nur zwei Bauteile: Eine WLAN-Antenne und einen Netzwerkanschluss und die WLAN-Antenne ist schon besetzt, weil die sich ja mit dem Rathaus verbinden soll. Bleibt noch der Netzwerkanschluss. Binco meinte dann, wir machen das so:

Wir richten auf dem Freifunkrouter ein kleines Freifunknetz für die Nanostation und den Freifunkrouter ein. Dazu musste der Router so konfiguriert werden, dass einer der Netzwerkkabelplätze nicht mehr zum dhcp Interface gehört sondern zu einem Neuen, wir haben es rhnk genannt. Dazu haben wir auf dem Router  VLANs eingestellt, das kam mir total spanisch vor und was soll das kleine t in der options port Zeile? Ich wusste, der Binco hatte mir schonmal erklärt was Switches und Hubs sind und wie das mit IP-und MAC-Adressen zusammen hängt, aber ich habe es wieder vergessen… Fragen über Fragen, nur nochmal nachgefragt hatte ich nicht…und wer nicht fragt bleibt dumm (╯°□°)╯︵ ┻━┻

Leider gingen nicht alle Pakete durch das Freifunk-VPN, sondern direkt über unsere Internetleitung. Das war total doof und wir konnten das Problem nicht beheben, aber zum Glück gibt es großartige Freifunkmenschen, die bis weit nach Mitternacht versucht haben den Fehler zu finden. Es stellte sich heraus, dass zwei Firewallregeln nicht gesetzt wurden.

Das Dumme war nur, der Router vergaß die neuen Einstellungen bei jedem Neustart wieder.

:/

Hier ein Bild von allen Geräten und wie sie zu diesem Zeitpunkt zusammen hingen.

netzwerk_v1Wir haben dann eine Nacht darüber geschlafen und uns dann entschieden einen anderen Weg zu gehen. Bei dem müssen wir uns nicht mit der Freifunkfirewall auseinandersetzen, unsere komplette Infratstruktur wird etwas übersichtlicher und wir können alle unsere Geräte auch aus unserem internen Netz erreichbar machen (außerdem konnte ich Binco über VLANs und Pakete verschicken ausquetschen *hrhrhr*).

Hier ein Bild von der Zielarchitektur:

netzwerk_v2Auf Tony, unserer Firewall, haben wir zuerst das Freifunk-VPN eingerichtet. Danach haben wir ein Freifunkinterface und ein neues VLAN für unsere Freifunkgeräte angelegt. Eine Firewallregel legt fest, dass alle Pakete, die über das Freifunk-Interface auf Tony ankommen, schnurstracks ins Freifunk-VPN weitergeleitet werden. Das Freifunk-Interface auf Tony ist im Prinzip dasselbe, was auf dem Freifunkrouter ein Interface ist und was ich im letzten Post schon beschrieben hatte. Es definiert ein kleines Netzwerk, das einem Gerät zugeordnet werden kann und in unserem Fall  genau einem Netzwerkanstöpselplatz von Tony, auf dem das Freifunk-VLAN konfiguriert ist.

Was hat es denn nun mit diesen VLANs auf sich? Die kamen ja schon oben vor, als wir ein neues Interface für den einen Netzwerkanstöpselplatz auf dem Freifunkrouter angelegt haben.

VLAN heißt ausgeschrieben Virtual Local Area Network. Statt VLANs anzulegen könnte man auch pro Netzwerk ein Kabel verlegen. Soviele Kabel führen aber zu Kabelsalat und außerdem hat Tony gar nicht soviele Netzwerkanstöpselplätze. Der Trick ist also VLANs zu definieren und Pakete, die zu einem VLAN gehören zu markieren, das wird auch tagging genannt.

Die meisten Geräte in einem Netzwerk sind über einen Switch miteinander verbunden. Ein Switch ist ein Netzwerkgerät, an das man mehrere Netzwerkkabel anschließen kann. Pakete, die an einem Port ankommen, werden an einem anderen Port wieder rausgeschickt. Manche Leute (Binco) behaupten, Switches seien dumm. Noch dümmer wären nur Hubs, die Pakete, die an einem Port ankommen, einfach an allen anderen wieder raushauen. Ein normaler Switch weiß welche Geräte an welchen Ports angeschlossen sind, das merkt er sich nämlich, wenn sogenannte ARP-Pakete vorbeikommen. In diesen Paketen steht eine MAC-Adresse und diese ist der eindeutige Name einer Netzwerkkarte. Will mein Computer z.B. ein Paket an eine bestimmte IP-Adresse im selben Netz verschicken, fragt er erstmal alle Geräte im Netzwerk nach der MAC-Adresse zu dieser IP. Gibt es ein Gerät mit der angefragten IP, schickt dieses eine Antwort mit seiner MAC-Adresse zurück. Kommt das Paket beim Switch vorbei merkt der sich die MAC-Adresse und den Port, wo es rauskam. Danach schickt mein Computer das eigentliche Paket los und schreibt ran, zu welcher MAC-Adresse es muss. Kommt ein solches Paket beim Switch an, leitet der es über den richtigen Port weiter.

switchSchlaue Switches unterstützen VLANs und das bedeutet Folgendes: Wenn ein getaggtes Paket ankommt, weiß der Switch nicht nur, auf welchem Port das Paket wieder rausgeschickt werden muss. Es bedeutet auch, dass der Switch ein Paket tagged, wenn es über einen bestimmten Port reinkommt, bevor er es weiter schickt bzw. er kann den Tag entfernen, bevor er es weiterschickt .

Ob der Switch an einem Port mit getaggten Paketen umgehen muss, wird durch ein t angegeben. (Aha, was man nämlich über unseren Freifunkrouter noch wissen muss, ist, dass er einen eingebauten Switch hat, der VLANs unterstützt. Manoman!)

Den Wohnzimmerfreifunkrouter haben wir nochmal neu geflashed und alles auf Anfang zurück gesetzt. Dann haben die WLANse so wie beim letzten Mal mit einer Bridge eingerichtet. Man kann das übrigens auch alles über das Webinterface machen. Vielleicht schreib ich im Wiki mal was dazu. Nur eine Sache ist anders: Vorher wurden an den Netzwerkanstöpselplätzen (dem Wohnzimmerrouterswitch wie ich nun weiß) auch Freifunk-IPs verteilt. Jetzt gehören die aber alle mit zum Freifunk-VLAN, das auch auf Tony konfiguriert ist.

Pakete vom Rathaus verschicken funktioniert also so:

Wohnzimmerrouter: Hallo Leute! Ich hab hier übrigens Internet 🙂
Rathaus Neukölln: Hey Wohnzimmerrouter! Ich hab hier ein Paket was ins Internet muss, zeig dem mal wos lang geht!
Wohnzimmerrouter: Klaro! Hey Switch, schick das Paket bitte mal an Tony weiter. Danke 🙂
Switch: *vlan-tag-drauf-pack* TONY! PAKET FÜR DICH!
Das Paket kommt durch die Freifunkinterfacetür bei Tony rein, Tony sieht das große VLAN-tag und das Paket ist vollkommen chancenlos, bekommt einen kräftigen Schubs und fliegt durch die Freifunkvpntür wieder raus.
– Kurze Pause –
Es klingelt an der Freifunkvpntür.
Antwort-Paket: *räusper* Tschuldigung ich möchte gern hier durch.
Das Antwort-Paket zeigt auf die Freifunkadresse wo es gerne hinmöchte. Tony guckt grimmig und verpasst dem Paket einen VLAN-tag und schiebt es Richtung Freifunkinterfacetür.
Switch: *vlan-tag-abreiß* WOHNZIMMERROUTER! PAKET FÜR DICH!
Wohnzimmerrouter: Oh danke. Ach Antwortpaket, du bist es. Das Rathaus freut sich bestimmt, dass du kommst. Hier gehts lang 🙂
Rathaus Neukölln: Da bist du ja endlich! Du musst zu dem Freifunknutzer da, der wartet schon ewig auf dich.

Alles in allem bedeutet das Ganze, dass wir jetzt nicht nur unseren Nachbarn unser Internet zur Verfügung stellen sondern potentiell auch allen, die sich am Freifunk am Rathaus Neukölln (oder irgendwo in Berlin) anmelden und umgekehrt, falls unser Internet ausfällt können wir immer noch über das Freifunknetz Twitter und Co erreichen. Ich sags ja, Freifunk ist total toll n_n

Falls ich etwas falsch beschrieben habe, würde ich mich über Hinweise freuen.

Der Vollständigkeit halber hier noch die Anfangskonfiguration, wie sie unserer Meinung nach eigentlich hätte funktionieren müssen:

Ein Auszug aus der /etc/config/network:

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

config interface 'dhcp'                        
        option ifname 'eth0.0'                 
        option type 'bridge'                   
        option proto 'static'           
        option ipaddr '104.205.0.49'    
        option netmask '255.255.255.240'
        option ip6assign '64'

config interface 'rhnk'                 
        option ifname 'eth0.1'          
        option proto 'static'           
        option ipaddr '104.205.0.77'    
        option netmask '255.255.255.252'

Zuerst wird dem Switch Bauteil mit option enable_vlan ‘1’ mitgeteilt, dass es jetzt VLAN machen soll. Und danach werden die beiden VLANs angegeben. Mit option ports legt man fest, welche Netzwerkanstöpselplätze zum VLAN gehören. Das Erste hat die Ports zwei, drei und vier, das zweite VLAN den ersten Steckplatz. Man beachte das kleine t. (Übrigens: Wo man beim Portzählen anfängt, war für mich etwas verwirrend. Im OpenWrt Wiki gibt es eine allgemeine Seite über die Switch-Config und dann nochmal eine mit der wirklichen Portbelegung für unseren Router).  Für das interface dhcp muss die option ifname in eth0.0 geändert werden (das erste VLAN) und das neue Interface rhnk wird dem zweiten VLAN eth0.1 zugewiesen (ifname bezeichnet die Netzwerkanstöpselplätze). Das Interface rhnk bekommt die IP ‘104.205.0.77’ und netmask ‘255.255.255.252’ gibt an, dass vier IP-Adressen zu dem Netzwerk gehören. Die haben wir auf der Freifunkseite für uns beantragt. Vom Freifunkrouter kann die Nanostation jetzt erreicht werden, aber damit der Freifunkrouter Pakete von der Nanostation durchlässt, mussten wir das interface rhnk noch mit in die Firewallzone aufnehmen. Wie zwei Freifunkerspezialisten herausgefunden haben, wurden zwei Firewallregeln nicht gesetzt. Mit
ip rule add pref 20001 iif eth0.1 unreachable
ip rule add pref 20000 iif eth0.1 lookup olsr-default
auf der Console der Router kann man die hinzufügen. Leider hielten die aber wie gesagt nur bis zum nächsten Neustart.