dn42-Routen im Mesh

Liebe Freifunker,

vor einigen Jahren habe ich mich mit eurer Technologie auseinandergesetzt und Dokumentation geteilt. Mir wurde damals gesagt, das sei nicht erwünscht, denn viele Leute haben in einen WR841
investiert um einen offenen Hotspot zu erhalten und da soll nichts wackeln.

Ich habe in letzter Zeit geholfen Knoten aufzustellen, die nicht nur Hotspot sind, sondern tatsächlich auch ferne Links zu anderen Knoten hinkriegen. Damit das gelingt, haben wir Ubiquiti Nanostations erstanden, welche deutlich höhere Investitionkosten aufweisen.

Jetzt haben wir eine unsichere Zeit und ich werde ständig gefragt ob das Mesh nicht Menschen mit Diensten ausserhalb des Internets verbinden kann.

Selbstverständlich könnten wir im Mesh VPN über Port-Forwarding machen. Aber viel schöner fände ich es, wenn ich unsere interessanten Subnets im bmx ankündigen könnte. Das hätte dann Mehrwert für alle Freifunk-Teilnehmer. Hiermit möchte ich um Erlaubnis dafür fragen.

Es handelt sich um folgende Ranges:

  • 172.22.99.0/24 (C3D2)
  • 172.20.72.0/21 (Zentralwerk)

Die fallen alle unter RFC1918 (private Netze). Ich verspreche dass ich keine Routen von ausserhalb (172.20.0.0/14) dn42 ankündigen werde. Welche ihr davon überhaupt wollt, könnt ihr sagen.

So wie ich das sehe, brauche ich eine IP aus dem Bereich 10.200.0.1-15 um Routen anzukündigen. Welche ist denn noch frei?

Früher, als ihr noch Anbindung an das Freifunk-ICVPN hattet, bestand schon einmal Connectivity mit den genannten Ranges. Von daher würden wir eh nur alte Funktionalität wiederherstellen.

Viele Grüße,
Astro

Hi Astro,

das Freifunknetz nutzt für die Adressierung nur IPs aus dem 10.200.x.y Bereich. Seit einigen Jahren, gibt es die Möglichkeit nicht mehr, IP Bereiche innerhalb des Netzwerkes bekannt zu geben. Hauptsächlich wegen zwei Gründen. Zum einen gibt es mehrere Freifunker, die ihr Heimnetz komplett im 172er IP Bereich betreiben. Da gab es konflikte. Eine Umstellung deren privat genutzen Bereiche, war nicht gewollt. Wir wollten auch nicht alle privaten IP Bereiche durch Freifunk vorgeben oder die Nutzer dadurch einschränken.

Der zweite Grund war, dass durch die ständigen kernel-updates von openwrt der flash und RAM bedarf zu gross wurden. Daher haben wir uns entschlossen, diese „HNA“ Funktionaltiät aus dem Routing-Daemon zu entfernen. Laut Axel (bmxd Erfinder) war diese HNA Funktionaltiät innerhalb des Routingprotokolls eh der falsche Ort. Das Routing-Protokoll, sollte nur die eigentliche Aufgabe des Routings übernehmen, aber keine Dienste im Netz bekannt geben, da es hier andere Möglichkeiten gibt.

Es gibt zwei Möglichkeiten der Bereitstellung von Diensten:

  1. Freifunk-Router mit Portweiterleitung. Das wäre die einfachste Variante für Leute, die nicht großeren Aufwand betreiben wollen.
  2. Einen Server/VM/Container aufsetzen, der als Server-knoten im Netz auftaucht und eine IP wie jeder Router aus dem 10.200.er Netz hat.
    Hier kann der Dienst dann direkt im Netz verfügbar gemacht werden.
    Unsere Gateway-Server nutzen dazu GitHub - Freifunk-Dresden/ffdd-server: Original Source for Freifunk Dresden Server (ffdd-server) - https://www.freifunk-dresden.de/

Der IP Bereich 10.200.0.1-15 hat keine Sonderfunktion mehr. Der Knotenbereich 1-899 ist für feste Dienste/Server vorgesehen und werden manuell registriert. Jeder der einen ffdd-server aufsetzt, erhält automatisch eine Knotennummer oberhalb von 51000. Es gibt technisch gesehen keinen Unterschied zwischen den Servern in diesem Bereich und aus dem Bereich 1-899, ausser dass die Server im 1-899er Bereich vom Core-Team betreut werden.

Im Netz gibt es zwei DNS Server,wo wir Dienste zu IP 10.200.x.y auflösen können. Webserver können somit auch an Hand der URL unterschiedliche Seiten anbieten, da ein FFDD Server, wie auch ein Knoten die Ports 80/443 bereits belegen (sysinfo.json Abfrage).

ICVPN wurde im HNA damals vor gefühlten 10 Jahren bekannt gegeben. Nach dem Serverumzug, wurde ICVPN erstmal nicht notwendig, da der Aufwand, dieses immer aktuell zu halten, einfach zugröß war. Denn es wurde nurmal zum Testen genutzt, aber es hat keiner wirklich sinnvoll verwendet. Wir haben in der Zwischenzeit schon Vorbereitungen getroffen, um sich wieder an das ICVPN anzuschliessen.
Da fast alle Freifunk Communities sich im 10er Netz befinden (ausser dn42), würde das sicherlich leichter Aufbau sein. Aber auch hier, gibt es IP konflikte, denn MobilfunkAnbieter vergeben ihre IPs ebenfalls aus dem 10er Bereich, so dass hier auch konflikte entstehen. Beim 172er Bereich würde das wieder die Konflikte mit den Privatnutzer aufwerfen. Somit glaube ich nicht, dass das ICVPN in nächster Zeit eine Rolle spielt, da es bisher kein wirklich Grund gibt, um die Communtities zu verbinden…
Im ICVPN sind auch nur ein kleiner Teil der Communties vertreten, so dass hier die Sinnhaftigkeit nicht gegeben ist.

Sind es einfache Dienste, die bereits andere Ports nutzen als 80/443 (und die, die für Backbone/Routing verwendet werden), so ist eine Portweiterleitung zum 172er Bereich einfach zu gestalten.
Ansonsten bietet es sich an, dass Ihr einen LinuxContainer als Gateway zu eurem Netz verwendet und die Dienste transparent im Freifunk anbietet.
Wenn alles Ok ist, können wir DNS Einträge anlegen, wie zum Beispiel „dn42.ffdd“

VG
Stephan

Versuche lieber IPv6 zu machen. Bei der RFC1918er-v4-Space kollidiert mindestens irgendwo immer mit einem existierenden FF-Setup irgendwo.

Ob jetzt public V6 oder private, das kann man dann noch individuell betrachten.

2 Likes

Supercool, hab ich gestern schon angefangen. Ich such mal weiter nach dem Skript um die IP zu reservieren…

Meine IPv6-Adressen fingen mal mit 3ffe an. :slight_smile:

Haben wir zu dir denn einen Link, auf welchem wir parallel batman-adv betreiben können?

Wenn du die Installation aus dem github machst (ffdd-server), dann wird bei der installation automatisch eine registration durchgeführt. Wenn du das manuell machen möchtest, dann
/usr/local/bin/freifunk-register-local-node.sh
/etc/nvram.conf wird da auch automatisch angepasst.

Das script wird durch die Serverinstallation regelmässig aufgerufen.
Beachte, dass verschiedene Scripte und configs gleich oben im Kommentar eine Zeile haben:
#managed by Salt
oder ähnlich. Salt prüft jede 10minuten die konfigurationen und stellt diese wieder her.
Änderungen gehen dann an den Files verloren.
Falls du Firewall Regeln brauchst, kannst du diese in /etc/firewall.user
unterbringen.

Update: Knoten 51073 hängt jetzt im Mesh und bietet dem Zentralwerk NAT-Routing nach 10.200/15. Ich will da noch einen Webserver einrichten und die knotenüblichen JSON-Ressourcen anbieten.

Ich hätte ganz gern c3d2.ffdd und vielleicht auch zentralwerk.ffdd delegiert. Sollte der Nameserver im Mesh oder im Internet erreichbar sein?

1 Like

Hi Astro,
coole sache!

für den internen DNS (.ffdd) findest du die zone hier im server repo und kannst da einfach einen PR mit den neuen Einträgen öffnen.

Beste Grüße

Irgendwie kommt trotz Connectivity kein Traffic vorbei. Die Mühe kann ich mir also sparen?

Du müsstest ihn dann bei deinen Konten bevorzugen…

Mit der automatisch Auswahl ist das so eine Sache. Scheinbar habe ich ein gutes Blech erwischt, trotz NAT Konsturkion wählen ihn die meisten Router aus. Das Verrücke, je mehr Kerne ich dem Teil wegnehme, umso mehr wird er ausgewählt und umso besser scheint die Virtualisierung zu arbeiten.

Aber eine schöne Konstruktion habt ihr da im Zentralwerk gebaut. :raised_hand: Ich habe meine Nano mal gedreht (das Haus ist nun leider im Weg), sie hängt aber an einem Bindfaden, d.h. ich weis nicht wie lange die so „ausgerichtet“ ist. grafik

du brauchst nur 10.200.0.0/16 weiterleiten,
da die 10.201.0.0/16 nur Link Lokale ip Adressen sind. diese werden nicht geroutet.
jedes Interface, was von bmxd genutzt wird,
hat eine ip aus 10.201.x.y.
das erste Interface was bei bmxd angegeben ist,
ist hier eine leere Bridge. die ip dieses Interfaces
ist das, was im gesamten Netz bekannt ist und ist die Knoten IP.

Die 51073 sehe ich in unsere Knoten liste gar nicht.
Ping auf die ip Funktioniert.
ein Json bekomme ich aber nicht.
schau da noch mal nach

Jetzt besser?

Da kam eben den ganzen Tag kein Client vorbei. Deswegen hab ich das auch noch nicht umgesetzt. Wuerde ich aber sobald es Sinn ergibt.

Als Teilnehmender Knoten im Netz müsste deine vm das hier: Knoten Spezifikation – Freifunk Dresden - Anwender-Wiki schon berücksichtigen. nicht böse gemeint.

@astro Traffic geht ja jetzt schon drüber wenn ich das richtig sehe. Die sysinfo ging die nacht bis 0 uhr auch mal kurz^^

Das war noch mit einer statischen File. Mittlerweile habe ich euer Sysinfo-Skript zum laufen gebracht.

Ausserdem habe ich meine Reregister-Timer von täglich auf minütlich geändert. Trotzdem war 51073 in der Knotenliste der Hopglass-Karte rot.

Mittlerweile ist der Knoten ganz aus der Knotenliste in der Karte rausgefallen. In der Knotenliste ist er aber. Habe zwei verschiedene Source-IPs gesehen die das JSON pollen.

Bitte lass das Interval für die Registration. diese ändert sich ja nicht, da reicht 1mal am Tag aus.
Wenn das jede minute passiert, kann dadurch die Datenbank sehr häufig blockieren.
Dann können andere Knoten sich nicht mehr alle 2h (oder 1h weiss es gerade nicht) mehr registrieren, da die ins timeout laufen.
Versuche bitte so nah an dem Stand ffdd-server zu bleiben, da dieses getestet ist.

Dein Server ist aktuell sichtbar.


was mir aber auffällt, ist, dass dort keine Version steht. Nutzt du garnicht ffdd-server vom github?

das empfielt sich sehr, da so die updates (selbst manuell) gut funktionieren. Wir arbeiten daran
fastd durch wireguard zu ersetzen. Das hat einfluss auf Webserver, der dort lokal laufen muss (bedingt durch unterschied von fastd zu wireguard - key austausch zwischen noten und server).

Zustätzlich wird auch an bmxd gearbeitet (sehr langsam). da soll eine sicherung rein, dass andere comuntities (was noch nicht ist),welche vielleicht unsere installation nutzen wollen, sich nicht „quer“ verbinden können und plötzlich 1000 knoten mit einem schlag dazu kommen. Das würde das netz nicht verkraften, und wir können nicht mehr reagieren. Es ist also eine Trennung in arbeit.

ein was ist mir noch aufgefallen.
Die sysinfo ist bei dir noch eine alte Version sie ist unter sysinfo-json.cgi erreichbar.
wir haben das mal auf sysinfo.json gekürzt.

Aber der Rest scheint zu laufen. hab mich mal etwas in dem Grafana umgeschaut :slight_smile:

Ok, gemacht. Für die Knoten sah mir die Crontab nach minütlich aus.

Ich habe bmxd und sysinfo-json.cgi aus eurem Repo. Salt Stack hat mich in der Vergangenheit zu sehr frustriert um mir noch eine Installation damit ans Bein zu binden.

Am Backbone habe ich eigentlich kein Interesse. Ganz im Gegenteil: hier in unserem Mesh werden zu oft Wege über Tunnel genommen, da diese vermutlich weniger Packet Loss haben. Die 2.4GHz-Links sind allerdings schneller. bmxd überlegt sich den besten Weg auch alle paar Minuten neu. Kann man da mehr Kontrolle ausüben?

Ok, die liefere ich jetzt beide aus. Allerdings wurde bisher der alte Pfad abgefragt.