IPv6 Routing ins Freifunknetz (Franken)

So und nun wollen wir uns an die Königsklasse wagen, wir wollen alle Router in den Hoods die bereits ULA Adressen haben erreichen können. Speziell betrifft das die dezentralen Hoods wie auch beim KeyxchangeV2.

Um diese Anleitung umzusetzen ist es zwingend notwendig ein Gateway in der Hood wo man sitzt selbst betreibt da man Routen ins Freifunknetz announcen muss.

Zuerst generieren wir uns ein eigenes ULA v6 Netz. Am einfachsten geht das z.b. hier, man gibt die MAC Adresse der eigenen Netzwerkkarte ein und erhält dann ein generiertes /48 Netz.

Wenn man nun sein Netz hat, muss man dies zusätzlich auf dem Interface vergeben, wo das lokale Netz dran hängt, in meinem Fall eth1. Man klickt also am Dashboard bei eth1 auf Actions und config. Danach wählt man „Add IP“ und gibt eine Adresse des /48 ein (ich hab ::1 genommen).

Danach das ganze mit Save abspeichern. Danach müssen wir unseren radvd noch sagen, das er dieses Subnetz ebenfalls im privaten Netz verteilen soll. Dazu klicken wir auf configtree und machen folgenden Baum auf (kennen wir bereits von der IPv6 Anleitung):

interfaces – ethernet – eth1 (oder das, wo unser privates Netz dran hängt) – ipv6 – – prefix

und legen dort mit „Add“ ein neues prefix an und geben dort ein /64 aus dem /48 ein (evtl. kann man auch das ganze /48 nehmen, bin mir da unsicher und hab ein /64 genommen also z.b. fdc6:xxxx:xxx::/64).

Nach dem abspeichern sollte man an Endgeräten schon eine IP aus diesem Subnetz erhalten.

Jetzt kommt der interessante Part, wir wollen dieses Subnetz ins Freifunk routen und im Freifunk bescheid sagen, dass diese Subnetz über unser Gateway erreichbar ist. Dies machen wir indem wir es ins Babel announcen. Hier sollte man sich bewusst sein, dass man dadurch sein privates Netz im Freifunk öffnet. Daher stellen wir weiter unten noch eine Firewall ein, damit niemand aus dem Freifunknetz ins private Netz kommen kann.

Wir legen also zuerst mal in unserem Router eine statische Route ins Freifunknetz an, dazu nutzen wir wie immer bei IPv6 den configtree:

protocols – static – route6

hier legen wir eine neue Route an, wir wollen alles zu fc00::/7 auf das Freifunk routen, also geben wir fc00::/7 ein. Danach auf „Update List“ klicken und links kann man dann als Unterpunkt von fc00::/7 „next-hop“ auswählen.

Hier muss die IP Adresse des Freifunkgateways eingeben werden. Wir haben in Franken typischerweise fd43:5602:29bd::/48, ich hab in meiner Hood das fd43:5602:29bd:5::/64 Subnetz und mein Gateway hat fd43:5602:29bd:5::6466:b3de:f861 somit habe ich diese Adresse genutzt. Ihr müsst dies natürlich auf eure eigenen Adressen anpassen, danach das ganze noch abspeichern. Aussehen sollte das ganze nun so:

Somit haben wir eine route in das Freifunknetz, allerdings „weiß“ das Freifunknetz natürlich nicht, wie es uns findet, wir müssen also auch einen Rückweg bekannt geben.

Wir legen also auf unserem Gateway eine statische Route in die Tabelle fff mit „proto static“ damit Babel das ganze auch redistributed. Die route sollte so aussehen:

fdc6:xxxx:xxxx::/48 via fd43:5602:29bd:5:de9f:dbff:fe29:44c9 dev br-mesh proto static

Die erste Adresse ist unser eigenes Subnetz, bei via muss die Adresse rein die sich unser Edgerouter auf das eth2 Interface gelegt hat. Als device das nutzen worüber der Edgerouter erreichbar ist (da mein Gateway ein LEDE System ist und in der br-mesh bridge das Clientnetz mit drinnen hängt, habe ich dieses Interface verwendet).

Danach muss man Babel nur noch sagen das man diese route auch wirklich redistributen will. Unter LEDE z.b. die /etc/config/babel anpassen und folgendes hinzufügen:

config filter
option type ‚redistribute‘
option local ‚true‘
option ip ‚fdc6:xxxx:xxxx::/48‘

config filter
option type ‚redistribute‘
option ip ‚fdc6:xxxx:xxxx::/48‘

Als IP natürlich unsere eigene IP nutzen. Unter Debian muss dies natürlich in der /etc/babeld.conf gemacht werden, etwa so:

 

redistribute local ip fdc6:xxxx:xxxx::/48
redistribute ip fdc6:xxxx:xxxx::/48

Wenn man nun Babel neu startet, sollte diese route mit redistributed werden. Wie oben bereits gesagt ist das private Netz aber nun offen wie ein Scheunentor, man sollte tunlichst die Firewall dazu erweitern.

Dazu gehen wir wieder in den configtree und gehen dort nach:

firewall – ipv6-name

Zuerst legen wir einen neuen Unterpunkt FREIFUNKv6_LOCAL an. Dieser beschreibt den localen Zugang zum Edgerouter (NICHT das routing dahinter). Da man vom Freifunknetz keinesfalls NIE auf den Edgerouter kommen soll, droppen wir einfach alles bis auf ipv6-icmp (ping).

Bei default-action geben wir also erstmal „drop“ ein.

Danach legen wir eine rule an, nennen sie „10“ bei „action“ -> „accept“ und bei „protocol“ -> ipv6-icmp. Damit erlauben wir nun IPv6 Pings.

Dies sperrt aber noch nicht den Zugang hinter dem Edgerouter, also das ganze private Netz. Dies wird mit der Regel „IN“ erledigt. Wir legen also wieder unter ipv6-name einen neuen Punkt an und nennen diesen .

Hier können wir natürlich nicht alles sperren, denn sonst kommen wir ja nicht mehr raus. Dazu gibt es bei der Firewall state was wir nutzen.

Zuerst legen wir wieder eine rule 10 an und erlauben ipv6-icmp wie schon oben bei local. Danach legen wir eine rule 20 an, setzen diese auch auf accept. Hier lassen wir protocol aber leer und wählen den Unterpunkt „state“. Die Punkte „established“ und „related“ auf „enable“ stellen:

Danach mach es noch Sinn, UDP Port 33434-33523 freizugeben damit traceroutes ordentlich funktionieren. Wir legen eine rule 30 an, setzen diese auch wieder auf accept, protocol auf udp und unter destination -> port auf 33434-33523 stellen. Danach alles abspeichern.

Die ganzen Regeln müssen wir jetzt nur noch auf dem eth2 Interface anwählen. Dazu öffnen wir

interfaces – ethernet – eth2 – firewall

unter „IN“ schreiben wir bei „ipv6-name“ -> „FREIFUNKv6_IN“ rein und unter „LOCAL“ bei ipv6-name -> „FREIFUNKv6_LOCAL“.

Abspeichern und nun sollte die Firewall aktiv sein. Man kann nun zwar aus dem Freifunknetz Geräte im privaten Netz pingen aber da alle Ports gesperrt sind ist kein Service im privaten Netz erreichbar. Andersherum sollte man aus dem privaten Netz heraus aber alle v6 ULA Adressen im Freifunknetz erreichen. Man sollte dies auf jeden Fall nochmal intensiv testen um sicher zu sein das man nichts verkehrt gemacht hat.

 

 

IPv4 ins Freifunknetz mit NAT über den Edgerouter

Die Fortsetzung der Geschichte rund um meinen Edgerouter. Diesmal eine kurze Erklärung wie man sein priv. Netz ins Freifunknetz NATtet.

Wie im letzten Beitrag schon erklärt, hängt bei mir am eth2 der Clientport eines Freifunkrouters dran. Wenn man das Interface nun auf IP per DHCP beziehen stellt, bekommt man auch schon eine IP aus dem Freifunknetz. Alternativ kann man auch eine feste IP setzen.

Danach klickt man auf Routing und „Add static route“ denn wir wollen ja eine statische Route ins Freifunknetz setzen. Destination Network beschreibt das Zielnetz, in unseren Fall also 10.0.0.0/8. Als Next Hop müssen wir uns ein Gateway aus unserem Freifunknetz suchen. Wenn man es nicht kennt, verbindet man sich mit einen Laptop o.ä. ins Freifunknetz und schaut was man als Gatewayip zugewiesen bekommt. Diese kann man dann verwenden und bei Next Hop eintragen.

Jetzt steht schon die statische Route von allen Clients im privaten Netz ins Freifunknetz. Da das Freifunknetz aber den Rückweg ins eigene Netz nicht kennt, müssen wir unsere Pakete noch NATten. Dies erreichen wir im Menü „Firewall/NAT“ und dort im Reiter „NAT“.

Dort klicken wir auf „Add Source NAT“ und geben folgendes ein:

Description: Irgendeine Beschreibung, z.b. „NAT ins Freifunk“

Enable: Den Haken setzen, wir wollen es ja aktivieren

Outbound Interface: eth2 (bzw. das Interface wo Freifunk drauf hängt)

Bei „Use Masquerade“ und „All protocols“ jeweils einen Haken setzen.

Abspeichern und sich freuen das man nun von seinem privaten Netz aus das IPv4 Netz im Freifunk erreichen kann.

Für IPv6 geht das ganze noch ein gutes Stück schöner, da man hier auf das NAT verzichten kann. Wie das geht erkläre ich im nächsten Beitrag.

Konfiguration Edgerouter

So ich hab das Ding nun komplett fertig eingerichtet und möchte hier mal meinen Netzaufbau erklären.

Anschlüsse:

  • eth0: DSL Modem
  • eth1: privates Netz (hier hängt bei mir ein 24 Port managed NETGEAR GS724T)
  • eth2: Clientport Freifunkrouter

IPv4 ist die Einrichtung noch recht leicht. Ich hab ein PPPoE Interface angelegt, meine Telekomzugangsdaten reingeklopft, als Interface eth0 ausgewählt und schon hat sich das Ding über mein DrayTek Vigor 130 verbunden.

Aufpassen muss man, das man auf dem eth0 (also dort, wo das DSL Modem hängt) DHCP Client ausschaltet. Sonst holt sich der Edgerouter eine 192.168.1.X IP vom DSL Modem und will darauf routen. Da das Modem aber kein Router ist, kommt man darüber natürlich nicht ins Internet. Nachdem ich DHCP aus hatte, hat der Edgerouter es dann auch verstanden das er die default route auf das PPPoE Interface werfen soll.

Die Konfiguration des DHCP Servers sollte selbsterklärend sein, dazu einfach mal oben auf Services klicken und dann kommt man direkt auf den DHCP Punkt.

Danach hab ich mich mal ein wenig mit den config tree auseinander gesetzt. Wirklich einfach zu bedienen ist er nicht, aber wenn man es mal verstanden hat geht es eigentlich. Ich will hier mal kurzfassend die größten Probleme erklären.

Mit dem > Pfeil vor dem Text kann man das Untermenü aufmachen

Mit dem + kann man einen Unterpunkt anlegen

Mit dem – deaktiviert man den Unterpunkt wieder

Text in rot ist eine Änderung die noch nicht gespeichert wurde

Mit discard verwirft man alle Änderungen, mit preview übernimmt man sie.

Hier ist IPv6 aktiviert und daher ein Minus davor (damit könnte man es wieder deaktivieren)

Wenn man das Prinzip mal verstanden hat, ist es eigentlich ganz angenehm damit zu arbeiten. Als erstes aktivieren wir IPv6 auf dem PPPoE Interface. Dazu öffnen wir folgenden Baum mit dem Pfeil: Interface – ethernet – eth0 (oder das Interface wo das Modem dran hängt) – pppoe – 0 – ipv6 – address. Bei dem Unterpunkt autoconf der dann erscheint klickt man auf das + und aktiviert somit IPv6. Danach mit preview abspeichern, bestätigen und einmal auf dem Dashboard neu die PPPoE Verbindung aufbauen. Voila schon sollte eine IPv6 Adresse auf dem PPPoE Interface sein, wo vorher nur eine v4 drauf war.

Diese wird aber immer noch nicht ins private Netz geroutet dazu müssen wir noch ein paar Sachen setzen, genaugenommen ist es der Unterpunkt dhcpv6-pd im selben Baum (auf dem Bild rechts 4 Punkte über ipv6).

Wir setzen hier dhcpv6-pd – pd – 1 – interfaces auf eth1 (oder das Interface, wo unser PC dran hängt) und aktivieren den Unterpunkt prefix-only. Wenn wir nun die Interfaces neu starten, sollte nun das eth1 Interface eine IPv6 bekommen haben.

Wenn dies der Fall ist, muss nur noch radvd gestartet werden, damit auch Adressen per SLAAC an die Endgeräte vergeben wird. Dazu bewegen wir uns wieder im configtree unter interfaces – ethernet – eth1 (oder das, wo unser privates Netz dran hängt) – ipv6 – – prefix und geben dort das Prefix an, das wir auf eth1 bekommen haben, also z.b.: 2003:a:abcd:abcd::/64.

Danach das Zeug abspeichern und schon sollte der PC eine IPv6 bekommen, mit der man auch ins Internet kommt. Glückwunsch man hat den Edgerouter nun konfiguriert 🙂

Natürlich kann man das ganze auch auf der Konsole machen, das ist allerdings auch ein wenig gewöhnungsbedürftig und gerade für den Anfang fand ich die den configtree ganz schick. Ohne den configtree ist nach meinen Kenntnisstand IPv6 nicht zu konfigurieren.

In einen weiteren Beitrag werde ich noch beschreiben, wie man auf eth2 wo bei mir ja das Freifunknetz drauf hängt, eine statische Route mit NAT bzw. mit IPv6 sogar richtiges Routing (aber nur wenn man im Freifunk Franken Layer 3 Babel Netz aktiv ist) setzen kann.

Edgerouter Lite

Nachdem ich in letzter Zeit immer wieder mit IPv6 an einem Telekomanschluss mit meinen wdr4900 und LEDE gehabt habe, heute mal den Edgerouter Lite der hier noch rumflog angeklemmt und konfiguriert.

Mit bisschen Hilfe läuft das Ding nun und macht auch ordentlich IPv6 sowie Routing ins Freifunknetz (zumindest auf v4 Basis, mit ULA v6 muss ich mich nochmal auseinander setzen).

Wenn das alles fertig ist und ich mit dem Teil zufrieden bin, werde ich die configs sowie Tricks hier mal in einen weiteren Beitrag aufzeigen.

Ansich gefällt mir die Kiste jetzt schon ganz gut, mal sehen wie sie sich die nächsten Tage macht.

Größter Nachteil: Ich hab jetzt kein eigenes WLAN mehr. Jetzt muss die Entscheidung her ob für mein Handy und AmazonFireTV Stick Freifunk reicht oder ob ich irgendeinen guten Accesspoint anklemme, eine Ignite Skyfire fliegt hier ja noch sinnlos rum, die würde sich bestimmt gut machen 🙂