3 SuperNode Spezifikation
alex edited this page 2022-04-07 19:57:18 +02:00

Spezifikation Gluon Supernode FFLE

Fastd für Nodes

  • Version v22
  • Jeder Supernode benötigt einen eigenen privaten Schlüssel
  • Der Port ist frei wählbar
  • Als MTU ist 1300 zu verwenden
  • Als Verschlüsselungsmethode muss mindestens salsa2012+umac aktiviert sein
  • Der Node sollte über einen Domainnamen erreichbar sein

Kommunikation zwischen Supernodes

  • Zu diskutieren
  • Openvpn?
  • Version
  • Konfiguration

BATMAN adv

  • Auf Fastd + Openvpn Devices
  • Version, aktuelle
  • Konfiguration

DHCPd v4 für die Clients (Nodes)

RADVd und/oder DHCPv6

  • Brauchen wir?
  • Unbekannt, weil keine IPv6 Erfahrungen
  • Vermutlich kein Support in BATMAN
  • Nächste Iterationsstufe

Wireguard

  • Ausleitung an mullvard
  • Martin stellt uns mindestens 2 mullvard VPNs zur Verfügung
  • Michael stellt uns mindestens 2 mullvard VPNs zur Verfügung
  • Alex stellt uns mindestens 2 mullvard VPNs zur Verfügung
  • Optional, nicht Teil der Spezifikation. Obliegt dem Betrieber des Supernode, ob er über VPN ausleitet

Firewallregeln

  • Enforcement auf Wireguard, ohne den kein Internet für Nodes
  • DHCP-Traffic auf dem fastd (von nodes) verhindern
  • RADVd-Traffic auf dem fastd (von nodes) verhindern

Vorschläge zur Architekur

alex

Iteration 1 (Bootstrap)

Wir betrachten jede Supernode zunächst als Insel, d.h.

  • eigenes IPv4 Netz, was bei jeder Supernode gleich ist
    • bspw. 10.50.0.0/21
    • einzelner DHCPv4 Server pro Supernode
  • eigenes IPv6 Netz, was für jede Supernode einzigartig
    • bspw. fdef:ffc0:7030:::/64
    • HOOD-IDs werden im Wiki gepflegt
    • einzelner DHCPv6 Server pro Supernode
  • alle Pakete, die nicht als Destination das eigene IP-Netz haben, werden markiert und über Wireguard ausgeleitet
  • interne HTTP-Server für Download der Firmware mit fester URL
  • rundimentären DNS server für bereitstellung des Downloadmirrors, ansonsten Ausleitung an externen DNS-Server bspw. von Mullvad)
  • Hood-Node hat explizit keine Redundanz
  • einzelne Services werden über Docker Container bereitgestelt, ganzes Deployment wird über Kubernetes Beschreibung zusammen gebaut -> Plan wäre installiere k3s und führe folgendes Deployment darauf aus

Interation 2 - Interconnect und Services

Wir nutzen die einzigartigen IPv6 Netz der Nodes, um untereinander über wireguard zu Routen, dadurch haben wir kein Layer2-Traffic, der über die Nodes hinausgeht. Warum:

  • fastd passt besser für Router und batman
  • müssen uns weniger um Firewall Regeln kümmern, da nur Layer3 betrachtet wird

Wer eine weitere Hood zusteuern will, muss mit uns in Verbindung treten und wir schalten das Routering für das Netz frei zum bestehenden Netz zu. Einzige Voraussetzung ist, dass "externe" Nodes sich um die Ausleitung zunächst selbst kümmern sich an das IPv6-Adress-Schema halten müssen und dann die entsprechenden Routen kümmern müssen.

Weitere Funktionen, die ich sehe:

  • DNS namen Registrierung über DHCP
  • NTP Server

Iteration 3 - Failover

Wir bringen Redundanz ins Netz rein, d.h. wir splitten alle Nodes in zwei, d.h.

  • synchronisierte DHCP-Server
  • synchronisierte DNS-Server
  • wireguard-Failover -> zz. hab ich da noch kein konkretes Konzept