Gateways beim Freifunk Stuttgart

Gateways sind in Freifunknetzen die eigentlichen Router, während die Freifunk-Router (Nodes) für die Clients als Switches erscheinen.

Über die Gateways laufen alle Verbindungen, die nicht über direkte Mesh-Beziehungen zwischen benachbarten Nodes abgewickelt werden können, egal ob zu anderen Zielen innerhalb des Freifunknetzes oder ins Internet (Ausleitung). Alle Verbindungen zwischen Nodes und Gateways sowie zwischen den Gateways sind verschlüsselt (VPN).

Gateway-Gruppen

Beim Freifunk Stuttgart werden die Gateways nicht zentral betrieben und verwaltet, sondern unterschiedliche Personen oder/und Vereine können Gateways betreiben. Deshalb benutzen wir Gateway-Gruppen für die einzelnen Betreiber, die ihrerseits mehrere Instanzen (Maschinen), also die eigentlichen Gateways, in der jeweiligen Gruppe einrichten können. Ein einzelnes Gateway hat deshalb z.B. den Namen

  • „gw01n03“ = Gateway-Gruppe 01 (entspricht Gateway des Betreibers 01) und dort die Instanz 03
  • „gw05n02“ = Gateway-Gruppe 05 (entspricht Gateway des Betreibers 05) und dort die Instanz 02
  • „gw08n01“ = Gateway-Gruppe 08 (entspricht Gateway des Betreibers 08) und dort die Instanz 01

Liste der Gateway-Gruppen

Gateway-Gruppe Betreiber Status
gw01 Poldy aktiv
gw02 Flip inaktiv
gw03 Dentaku inaktiv
gw04 FFS e.V. aktiv
gw05 Adrian aktiv
gw06 Adrian temp
gw07 Albi + Roland Onboarder
gw08 Albi aktiv
gw09 inaktiv
gw10 (Adrian) inaktiv

Segmente

Durch die Aufteilung des Freifunk-Netzes in mehrere Segmente (Subnets), kann ein Gateway (GW) bei uns mehrere Segmente bedienen. Im ersten Schritt halten alle GWs alle Segmente, im zweiten Schritt wird ein Routing-Protokoll implementiert, das die dynamische Zuordnung von Gateways zu einzelnen Segmenten ermöglicht.

Pro Segment läuft auf einem GW

  • eine Fastd-Instanz für die VPN-Verbindungen von den Nodes mit MTU 1340 (seit Firmware v1.3)
  • eine Fastd-Instanz für die VPN-Verbindungen von den Nodes mit MTU 1406 (bis Firmware v1.1)
  • eine Fastd-Instanz für die Verbindungen der Gateways untereinander im selben Segment (Segment-Backbone).
  • eine batman-adv Instanz zur Ein- und Auskopplung des Client-Traffic sowie Weiterleitung des Mesh-Traffic von/zu Nodes und anderen GWs im selben Segment

VPN-Verbindung von Nodes zu Gateways

Um die notwendige Zeit zum Aufbau der Verbindung des VPN-Tunnels (fastd) zwischen Node und Gateway möglichst klein zu halten, ist im Node keine vollständige Liste aller möglichen Ziele enthalten, sondern nur eine Liste der GW-Gruppen. Das zugehörige Segment erfährt der Node per DNS-Abfrage auf seine eigene erweiterte Node-ID, woraus er die GW-Gruppenliste im RAM so modifiziert, dass nur Verbindungen zu den Gateways im eigenen Segment aufgebaut werden.

Die DNS-Namen für fastd sehen auf den Nodes im RAM dann z.B. so aus:

  • „gw01s03.gw.freifunk-stuttgart.de“ = GW-Gruppe 01 im Segment 03
  • „gw04s11.gw.freifunk-stuttgart.de“ = GW-Gruppe 04 im Segment 11
  • „gw08s18.gw.freifunk-stuttgart.de“ = GW-Gruppe 08 im Segment 18

Welches konkrete GW (GW-Instanz) aus der GW-Gruppe ausgewählt wird, hängt von der DNS-Antwort auf diese URLs ab. Ein Node weiß von sich aus also weder, zu welchem Segment er gehört, noch welches GW ihn tatsächlich bedienen wird.

Ohne Modifikation der internen GW-Gruppenliste zeigen die URLs auf Onboarder, die für die automatische Registrierung neuer oder geänderter Nodes zuständig sind. Aktuell (Stand 18.02.2018) gibt es zwei Onboarder (gw04 und gw07), die sich gegenüber den Nodes zunächst als GWs ausgeben, die jeden beliebigen Node akzeptieren, aber tatsächlich dann nur die für die Registrierung notwendigen Daten abfragen und die Verbindung wieder trennen. Danach ist eine normale Verbindung zu richtigen GWs möglich.

Für die VPN-Verbindung zwischen Node und Gateway werden je nach Segment und MTU unterschiedliche UDP-Ports benutzt:

Segment MTU 1340 (ab FW v1.3)MTU 1406 (bis FW v1.1)
011020110041
021020210042
031020310043
: : :
091020910049
101021010050
111021110051
: : :
231022310063
241022410064
Onboarder1029910139

IP-Adressen

Jedes Segment soll aus Performance Gründen maximal 800 Clients beinhalten. Durch den Verschnitt bei der IPv4-Adressvergabe per DHCP-Server (lease time) und Reserve für statische IP-Adressen werden die Segmente jeweils für 2048 IPv4-Adressen ausgelegt, das entspricht einem /21 Netz. Für die automatische IP-Vergabe stehen die drei DHCP-Server dhcp01, dhcp02 und dhcp03 zur Verfügung, jeweils mit einem Pool von 512 IP-Adressen pro Segment. Somit kann einer der DHCP-Server ausfallen, ohne dass das Netz beeinträchtigt wird.

Alle Gateways sind per tinc (ffsl3) am zentralen Backbone 10.191.255.0/24 angeschlossen, an dem auch die drei DHCP-Server angeschlossen sind, und über den auch das Routing zwischen den Segmenten abgewickelt wird. Die DHCP Server haben dabei die IPv4 10.191.255.251 .. 253

Die einzelnen Gateways verteilen die IPv4-Adressen per DHCP-Relays an die Clients, haben also keine eigenen Adresspools. Lediglich Standardgateway und DNS-Server wird von den Gateways auf das Segment des anfragenden Clients angepasst.

IPv4-Range der Client-Netze = 10.190.0.0/21 bis 10.191.250.0/21

Für IPv6 senden die Gateways nur Router Advertisements (RA) mit den IPv6-Routen zu den anderen Segmenten, um das jeweilige Subnet und dessen Übergänge zu definieren. Die Adressvergabe als solche übernehmen die Nodes selbst. Es wird kein IPv6-Standardgateway gesetzt, da das Freifunknetz derzeit noch keine IPv6-Anbindung an das Internet hat.

IPv6-Range der Client-Netze = fd21:b4dc:4b01::/64 bis fd21:b4dc:4b60::/64

Jedes GW belegt pro Segment eine IPv6-Adresse fd21:b4dc:4bxx::a38:ggg und eine IPv4-Adresse 10.19x.y.g

Was Bsp Segment 1-32 Segment 33-63
IPv4 Netz 10.190.0.0/21 10.191.0.0/21
IPv6 Prefix fd21:b4dc:4b01::/64 fd21:b4dc:4b33::/64
BatIf bat01 .. bat32 bat33 .. bat63
Bridge Interface br01 .. br32 br33 .. br63
Fastd-If vpn01 .. vpn32 vpn33 .. vpn63
Fastd-Port
bis FW v1.1 10041 .. 10072 und 10139 10073 .. 10103 und 10139
ab FW v1.3 10201 .. 10232 und 10299 10233 .. 10263 und 10299
Fastd-Socket /var/run/fastd-vpn01.sock /var/run/fastd-vpn33.sock
ALFRED script /etc/init/alfred-vpn01.conf /etc/init/alfred-vpn33.conf
Segment Netz IPv6-Prefix Port MAC BatIf Fastd Bridge(Bat/client)
01 10.190.0.0/21 fd21:b4dc:4b01::/64 10041 02:00:38:01:0g:0n bat01 vpn01 br01
02 10.190.8.0/21 fd21:b4dc:4b02::/64 10042 02:00:38:02:0g:0n bat02 vpn02 br02
03 10.190.16.0/21 fd21:b4dc:4b03::/64 10043 02:00:38:03:0g:0n bat03 vpn03 br03
04 10.190.24.0/21 fd21:b4dc:4b04::/64 10044 02:00:38:04:0g:0n bat04 vpn04 br04
05 10.190.32.0/21 fd21:b4dc:4b05::/64 10045 02:00:38:05:0g:0n bat05 vpn05 br05
06 10.190.40.0/21 fd21:b4dc:4b06::/64 10046 02:00:38:06:0g:0n bat06 vpn06 br06
07 10.190.48.0/21 fd21:b4dc:4b07::/64 10047 02:00:38:07:0g:0n bat07 vpn07 br07
08 10.190.56.0/21 fd21:b4dc:4b08::/64 10048 02:00:38:08:0g:0n bat08 vpn08 br08
Segment GW IP4 Betreiber IPv6
01 gw01n03 10.190.0.13/21 Leonard fd21:b4dc:4b01::a38:103
01 gw05n01 10.190.0.5/21 Adrian fd21:b4dc:4b01::a38:501
01 gw05n02 10.190.0.52/21 Adrian fd21:b4dc:4b01::a38:502
01 gw05n03 10.190.0.53/21 Adrian fd21:b4dc:4b01::a38:503
01 gw08n00 10.190.0.8/21 Albi fd21:b4dc:4b01::a38:800
01 gw08n01 10.190.0.81/21 Albi fd21:b4dc:4b01::a38:801
01 gw08n02 10.190.0.82/21 Albi fd21:b4dc:4b01::a38:802
01 gw08n03 10.190.0.83/21 Albi fd21:b4dc:4b01::a38:803
01 gw08n04 10.190.0.84/21 Albi fd21:b4dc:4b01::a38:804
01 gw08n05 10.190.0.85/21 Albi fd21:b4dc:4b01::a38:805
02 gw01n03 10.190.8.13/21 Leonard fd21:b4dc:4b02::a38:103
02 gw05n01 10.190.8.5/21 Adrian fd21:b4dc:4b02::a38:501
02 gw05n02 10.190.8.52/21 Adrian fd21:b4dc:4b02::a38:502
02 gw05n03 10.190.8.53/21 Adrian fd21:b4dc:4b02::a38:503
02 gw08n00 10.190.8.8/21 Albi fd21:b4dc:4b02::a38:800
02 gw08n01 10.190.8.81/21 Albi fd21:b4dc:4b02::a38:801
02 gw08n02 10.190.8.82/21 Albi fd21:b4dc:4b02::a38:802
02 gw08n03 10.190.8.83/21 Albi fd21:b4dc:4b02::a38:803
02 gw08n04 10.190.8.84/21 Albi fd21:b4dc:4b02::a38:804
02 gw08n05 10.190.8.85/21 Albi fd21:b4dc:4b02::a38:805

MAC-Adressen der GWs

Schema: 02:00:ii:ss:gg:nn

iiInterface
ssSegment
ggGateway-Gruppe
nnlaufende Nummer der Gateway-Instanz

Definierte Werte für ii

33Mesh Fastd Nodes mit MTU = 1340 (vpyXX)
34(ex. Mesh Fastd Nodes mit MTU = 1312 (vpxXX))
35Segment-Backbone fastd mit MTU = 1340 (bbXX)
36Zentraler Backbone Tinc (ffsl3) für zentrale Dienste und Inter-Segment-Routing
37(Mesh Fastd Gateways)
38Mesh Fastd Nodes mit MTU = 1406 (vpnXX)
39Client

Verbotene Werte für ii: 4c .. 4f 58 .. 5b 70 .. 73 8d .. 90 c8 .. cb

  • technik/gateways/gateway-liste.txt
  • Zuletzt geändert: vor 3 Monaten
  • von Wilhelm