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.

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.