Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
infrastruktur:gateway:babel-gateway [22.11.2017 00:11] – [Routing] christf | infrastruktur:gateway:babel-gateway [10.06.2021 12:25] (aktuell) – igor | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Gateway für das Freifunk-Babel Netz ====== | ||
+ | <WRAP center round todo 60%> | ||
+ | Diese Seite ist veraltet da FFFFM aktuell kein Babel Netz betreibt. | ||
+ | </ | ||
+ | |||
+ | |||
Gateways für das Freifunk-Babel-Netz orientieren sich am Setup für Batman-Gateways. | Gateways für das Freifunk-Babel-Netz orientieren sich am Setup für Batman-Gateways. | ||
Der Server nimmt fastd-Verbindungen von Freifunk-Routern mit der Babel-Firmware an und verteilt Informationen zur Infrastruktur des Netzes (früher: IP-Adressen & Routen, mittlerweile lediglich Routen, wobei das streng genommen optional ist), damit das Gesamtnetz funktionieren kann. | Der Server nimmt fastd-Verbindungen von Freifunk-Routern mit der Babel-Firmware an und verteilt Informationen zur Infrastruktur des Netzes (früher: IP-Adressen & Routen, mittlerweile lediglich Routen, wobei das streng genommen optional ist), damit das Gesamtnetz funktionieren kann. | ||
Es gibt ein paar Unterschiede zu Batman-Gateways: | Es gibt ein paar Unterschiede zu Batman-Gateways: | ||
- | * es ist kein dhcp-Server erforderlich | + | * es ist kein dhcp-Server erforderlich |
- | * es ist kein radvd erforderlich | + | * es ist kein radvd auf den Gateways |
* Batman wird nicht installiert | * Batman wird nicht installiert | ||
* Es müssen zusätzliche Komponenten (mmfd, l3roamd) ausgeführt werden | * Es müssen zusätzliche Komponenten (mmfd, l3roamd) ausgeführt werden | ||
* Über fastd wird das babel mesh-Protokoll gesprochen. Dadurch ist eine theoretische minimale MTU von 1288 möglich (1280 minimale IPv6-Größe + ein UDP-Header für mmfd-Pakete, | * Über fastd wird das babel mesh-Protokoll gesprochen. Dadurch ist eine theoretische minimale MTU von 1288 möglich (1280 minimale IPv6-Größe + ein UDP-Header für mmfd-Pakete, | ||
+ | |||
+ | Das Setup ist bereits in salt abgebildet: https:// | ||
+ | |||
+ | |||
+ | |||
+ | Bei dieser Anleitung werden hart eingestellte Adressen benutzt, die per site.conf konfiguriert werden. Dort gibt es unsere site.conf für das babel-Netz: https:// | ||
===== Einrichtung der Frankfurter Gatways ===== | ===== Einrichtung der Frankfurter Gatways ===== | ||
Zeile 37: | Zeile 49: | ||
status socket "/ | status socket "/ | ||
+ | Die fastd-Einrichtung ist auch schon anderswo beschrieben - spannend hier ist, dass man kein komplexes up-script mehr benötigt. Lediglich das mesh-interface muss " | ||
===== l3roamd ===== | ===== l3roamd ===== | ||
- | l3roamd | + | Zur Initialisierung des l3roamd |
- | in / | + | |
[Unit] | [Unit] | ||
Description=l3roamd | Description=l3roamd | ||
Zeile 48: | Zeile 60: | ||
[Service] | [Service] | ||
Type=simple | Type=simple | ||
- | ExecStart=/ | + | ExecStart=/ |
KillMode=process | KillMode=process | ||
ExecStartPost=/ | ExecStartPost=/ | ||
Zeile 58: | Zeile 70: | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
- | Die Bridge br-client muss per / | ||
- | iface br-client inet static | ||
- | address 192.0.2.1 | ||
- | netmask 255.255.255.0 | ||
- | bridge_ports none | ||
Die hinzugefügte Route macht, dass Pakete mit einem Ziel im Freifunk-Client-Netz aber mit unbekannter echter Route an den l3roamd übergeben werden. Dieser kann dann die Route ermitteln. | Die hinzugefügte Route macht, dass Pakete mit einem Ziel im Freifunk-Client-Netz aber mit unbekannter echter Route an den l3roamd übergeben werden. Dieser kann dann die Route ermitteln. | ||
- | Der l3roamd wird angepasst, sodass br-client nicht mehr zwingend erforderlich sein wird, denn auf Gateways ist sie nicht vorhanden und auch nicht sinnvoll. | ||
- | |||
===== Routing ===== | ===== Routing ===== | ||
Tabelle 10 wird fürs Routing genutzt. Wir haben auf dne GAteways folgende ip -6 rules: | Tabelle 10 wird fürs Routing genutzt. Wir haben auf dne GAteways folgende ip -6 rules: | ||
Zeile 83: | Zeile 88: | ||
12 babeld | 12 babeld | ||
+ | Wir trennen node-Netz (2a06: | ||
- | in Tabelle 12 kann man routen rein schreiben, von denen man möchte, dass sie von babeld noch verteilt werden sollen, Tabelle 10 enthält die Routen, die für das Freifunk-Netz gelten, in TAbelle | + | |
+ | in Tabelle 12 kann man routen rein schreiben, von denen man möchte, dass sie von babeld noch verteilt werden sollen, Tabelle 10 enthält die Routen, die für das Freifunk-Netz gelten, in Tabelle | ||
+ | |||
+ | Die default-route für den uplink muss in Tabelle 10 und 12 eingetragen werden (ggf reicht Tabelle 10). Diese Route muss, damit sie mit dem prefixd kompatibel als src-filter das client-Netz gesetzt haben. | ||
===== mmfd ===== | ===== mmfd ===== | ||
Der Dienst wird installiert und muss laufen. Den Rest macht das unten angegebene service-file in / | Der Dienst wird installiert und muss laufen. Den Rest macht das unten angegebene service-file in / | ||
Zeile 105: | Zeile 114: | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
| | ||
+ | |||
+ | ===== Babeld ===== | ||
+ | Babel muss neuer als in Version 1.8 daher kommen. So wird der babeld gestartet: | ||
+ | |||
+ | [Unit] | ||
+ | Description=babeld | ||
+ | Wants=basic.target | ||
+ | After=basic.target network.target | ||
+ | Before=fastd.service | ||
+ | | ||
+ | [Service] | ||
+ | Type=forking | ||
+ | ExecStart=/ | ||
+ | KillMode=process | ||
+ | | ||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | |||
+ | Und so wird er in / | ||
+ | ipv6-subtrees true | ||
+ | reflect-kernel-metric true | ||
+ | export-table 10 | ||
+ | import-table 11 | ||
+ | import-table 12 | ||
+ | local-port-readwrite 33123 | ||
+ | interface gre_gw01 | ||
+ | interface mesh-vpn-1312 type tunnel link-quality true | ||
+ | interface babel-vpn-1374 type tunnel link-quality true | ||
+ | | ||
+ | default enable-timestamps true | ||
+ | default max-rtt-penalty 96 | ||
+ | out ip 2a06: | ||
+ | redistribute ip 2a06: | ||
+ | redistribute ip 2a06: | ||
+ | redistribute ip 2a06: | ||
+ | redistribute src-ip 2a06: | ||
+ | # redistribute ip ::/0 allow | ||
+ | |||
+ | Die Interfaces sind natürlich an die Gegebenheiten so anzupassen, dass alle mesh-interfaces dabei sind. Das beinhaltet ausschließlich dann den Uplink, sofern auf dem babel gesprochen wird. Routen für die next-node-IP (bei unserem Netz 2a06: | ||
===== Yanic ===== | ===== Yanic ===== | ||
- | Auf dem Host mit dem yanic, muss der mmfd laufen. Dessen mmfd0-Interface ist als Interface für die queries anzugeben, wobei eine broadcast-Adresse eingesetzt werden muss: ff05:: | + | Yanic kann unabhängig von den Gateways auf einer anderen Box ausgeführt werden. |
+ | Dessen mmfd0-Interface ist als Interface für die queries anzugeben, wobei eine broadcast-Adresse eingesetzt werden muss: ff05:: | ||
+ | |||
+ | ===== Was braucht man noch ringsrum? ===== | ||
+ | * Das Netz ist IPv6-Only, also benötigt man einen NAT64 und entsprechenden DNS für den Zugriff auf das IPv4-Internet. Jool kann man dafür nutzen. |