Begrifflichkeiten
- Gatewayserver => Layer 3 Router in einem Rechenzentrum mit fester IP der Peerings per vxlan entgegen nimmt
- L3Router => Plastikkasten in der Stadt, das über eine dynamische IP Adresse einen Tunnel ins Freifunknetz aufbauen soll
Aufbau
Hier soll eine neue Idee entstehen, wie das Freifunk Franken Layer 3 Netz automatisiert eingerichtet werden kann.
MQTT System
Der MQTT Server den ein L3Router verwenden soll ist vom User frei einstellbar so das es von keinem zentralen MQTT Server abhängig ist und selbst wählen kann wo er seine Liste von Gatewayservern beziehen will. Es wird z.b. von der Community ein MQTT System dezentral betrieben über ein MQTT Cluster wo jeder dran teilnehmen kann so das jeder auch einen eigenen MQTT Server betreiben kann aber auch alle Nachrichten von anderen MQTT Servern erhält und weiterleitet.
Es kann jeder seine eigenen Gatewayserver zum verbinden in irgendeinen MQTT Server pushen so das sich jeder mit zb. einen Hetznerserver o.ä. als Peeringpartner zur Verfügung stellen kann.
L3Router Firmware und Einrichtung
Der L3Router wird geflasht, der User muss einen MQTT Server eingeben und erhält dann per MQTT eine Liste von Gatewayservern wo er sich hinverbinden kann. Nachdem der L3Router eine Liste von Gatewayserver erhalten hat wohin er sich verbinden kann wird entweder automatisch zufällig einer (oder mehrere) ausgesucht oder der User kann selbstständig wählen zu welchen Gatewayserver(n) er sich verbinden will.
Zu den gewählten Gatewayserver(n) wird ein vxlan aufgebaut. Der Gatewayserver schickt per DHCP eine v4 Adresse an den L3Router welche er verwenden kann (restliches v4 passiert einfach mit NAT und ist auf jeden L3Router die gleiche Adresse) und per dhcpv6-pd ein v6 Netz. Der L3Router konfiguriert sich diese Netze ins Babel und nutzt es.
AutoMesh
Theoretisch kann so ein L3Router auch als dhcpv6-pd Relay konfiguriert werden, so das Meshrouter ohne Internetuplink sich eine Adresse vom Gatewayserver beziehen können über den UplinkL3Router als Relay. Wenn auch diese Meshrouter als Relay konfiguriert sind, kann so eine Kette theoretisch unbegrenzt lange werden.
Aufbau der Firmware für L3Router
- User muss aktiv auswählen das er autol3 nutzen will im WebUI
- User muss im WebUI einen MQTT Server angeben
- Im WebUI erscheint eine Liste von Gatewayserver wo der User einen auswählen kann oder ihm ist es wurscht und es wird automatisch einer gewählt oder oder (Zur Diskussion)
- /etc/config/gateway wird komplett automatisch generiert
- bei IP Adressen wird "auto" eingetragen, configure-layer3 Scripte müssen das beachten und die IP Adressen von DHCP/dhcpv6-pd nutzen
- über dieses Patch werden die VLANs konfiguert https://git.freifunk-franken.de/freifunk-franken/firmware/pulls/2
- Es wäre toll, wenn dies nur optional genutzt werden kann, so kann der User auch die VLANs frei einstellen wenn er es gerne anders möchte
- DNS Server steht noch zur Diskussion
- configure-layer3 wird automatisch ausgeführt
- Der Router ist fertig konfiguriert