Router-Konfiguration: Unterschied zwischen den Versionen

Aus Freifunk Köln, Bonn und Umgebung
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Konfiguration der Router des Freifunk-Netzes
[[Kategorie:Archiv]]
{{:Archiv-Hinweis}}


''' ''WIP - Work-in-Progress. Bitte keine Änderungen ohne Rücksprache - das ist erstmal mein privater Notizzettel :-)  '' '''


== Einleitung ==
== Einleitung ==
Zeile 22: Zeile 22:


Die verschiedenen Teile der Konfiguration werden auf verschiedene Weise deployed ('' '''Todo: Deployment-Diagramm malen''' '')
Die verschiedenen Teile der Konfiguration werden auf verschiedene Weise deployed ('' '''Todo: Deployment-Diagramm malen''' '')
* Der unabhängige Teil wird als OpenWRT-Paket eingebunden.
* Der unabhängige Teil wird als plattformunabhängiges OpenWRT-Paket eingebunden.
* Der abhängige Teil wird von einem zentralen Server (Paul) geladen.
* Der abhängige Teil wird von einem zentralen Server (Paul) per http geladen.
 
Insbesondere ermöglicht das OpenWRT-Paket den Download der Node-abhängigen Konfiguration und dessen Aktualisierung. Das OpenWRT-Paket selbst wird in einem Repository bereit gestellt, damit es auch direkt installiert oder aktualisiert werden kann.
 
Hierbei sehen wir die folgenden Dinge vor:
* Jeder Node auch ohne den abhängigen Teil im Freifunk-Netz betrieben werden können. Insbesondere soll es möglich sein, auch dann das Mesh zu betreiben, wenn der abhängige Teil nicht geladen werden.
* Die Konfiguration soll von jedem der Server im Freifunk-Netz geladen werden können (z.Z. nur Paul)
* Der abhängige Teil soll dann geladen werden, wenn ein Node über eine direkte Verbindung zum Internet verfügt. Somit kann er:
** Einen VPN-Tunnel über das Internet aufbauen - (Zertifikate & Keys) sind Teil der Node-abhängigen Konfiguration
** Prefixes zur Verteilung (dhcp o.ä.) anfordern können - da sich Prefixes zwischen den Nodes unterscheiden, müssen sie abhängig sein.
 
Dies legt nahe, das ein Node, der keine direkte Verbindung zum Internet hat, den abhängigen Teil ggf. nicht laden muss (abhängig von der [[Netzwerk-Konfiguration]]) und ohne weitere Daten
(wie bspw. Prefixes) ein batman-adv basierte OSI-2 Netz weiterleiten kann.
 
Wichtig ist weiterhin, dass die Konfiguration eines Nodes für den Benutzer transparent erfolgt: Jeder Nutzer muss nachvollziehen können wie sein Router arbeitet. Insbesondere wäre es gut, keine Nodes per SSH manuell zu konfigurieren, damit der Nutzer den Verdacht hat, dass wir sein Netz auspionieren können.
Es muss klar sein, welche Dateien node-abhängig per http geladen werden - für jeden muss einsehbar sein, wie deren Inhalt ist. Insbesondere sollten daher alle Quelltexte aller Pakete und deployment-Anwendungen für jeden offen sein.


== Node-unabhängige Konfiguration ==
== Node-unabhängige Konfiguration ==


== Node-abhängige Konfiguration ==
== Node-abhängige Konfiguration ==

Aktuelle Version vom 28. August 2019, 11:28 Uhr

Hinweis: Diese Seite wurde in das Archiv verschoben. Die Informationen sind größtenteils veraltet und nur für Spezialfälle relevant.


Einleitung

Zur Implementierung der Netzwerk-Konfiguration müssen die Router entsprechend Konfiguriert werden. Die Konfiguration erfolgt auf Basis von OpenWRT. Nach Möglichkeit sollen alle von OpenWRT unterstützten Hardware-Architekturen mit Freifunk nutzbar sein.

Dieser Artikel beschreibt die Konfiguration der Nodes(*). Entsprechende Konfigurationsdateien werden referenziert (**). Er dient als Grundlage zur konkreten Implementierung

(*) Erstmal meine Ideen dazu ;-) - (**) Soweit sie jetzt schon existieren

Aufbau der Konfiguration

Die Konfiguration der einzelnen Nodes gliedert sich in zwei verschiedene Bereiche:

  • Der Node-unabhängige Teil ist bei allen Nodes identisch. Hier sind keine Node-spezfischen Einstellungen vorhanden.
  • Der Node-abhängige Teil unterschied sich von Node zu Node. In diesem Teil befinden sich Node-spezifsche Einstellungen.

Die Aufteilung ergibt sich aus der Notwendigkeit Node-spezifische Einstellungen ausliefern zu müssen (bspw. Key und OpenVPN-Zertifikat). Da auf der andereren Seite auf allen Nodes eine vergleichbare Firmware aufgespielt werden soll, können die spezifische Einstellungen nicht im Firmware-Image gesetzt werden - dies würde die Erstellung eines individuellen Firmware-Images pro Node erforderlich machen.

Todo: Bild malen .

Deployment der Konfiguration

Die verschiedenen Teile der Konfiguration werden auf verschiedene Weise deployed ( Todo: Deployment-Diagramm malen )

  • Der unabhängige Teil wird als plattformunabhängiges OpenWRT-Paket eingebunden.
  • Der abhängige Teil wird von einem zentralen Server (Paul) per http geladen.

Insbesondere ermöglicht das OpenWRT-Paket den Download der Node-abhängigen Konfiguration und dessen Aktualisierung. Das OpenWRT-Paket selbst wird in einem Repository bereit gestellt, damit es auch direkt installiert oder aktualisiert werden kann.

Hierbei sehen wir die folgenden Dinge vor:

  • Jeder Node auch ohne den abhängigen Teil im Freifunk-Netz betrieben werden können. Insbesondere soll es möglich sein, auch dann das Mesh zu betreiben, wenn der abhängige Teil nicht geladen werden.
  • Die Konfiguration soll von jedem der Server im Freifunk-Netz geladen werden können (z.Z. nur Paul)
  • Der abhängige Teil soll dann geladen werden, wenn ein Node über eine direkte Verbindung zum Internet verfügt. Somit kann er:
    • Einen VPN-Tunnel über das Internet aufbauen - (Zertifikate & Keys) sind Teil der Node-abhängigen Konfiguration
    • Prefixes zur Verteilung (dhcp o.ä.) anfordern können - da sich Prefixes zwischen den Nodes unterscheiden, müssen sie abhängig sein.

Dies legt nahe, das ein Node, der keine direkte Verbindung zum Internet hat, den abhängigen Teil ggf. nicht laden muss (abhängig von der Netzwerk-Konfiguration) und ohne weitere Daten (wie bspw. Prefixes) ein batman-adv basierte OSI-2 Netz weiterleiten kann.

Wichtig ist weiterhin, dass die Konfiguration eines Nodes für den Benutzer transparent erfolgt: Jeder Nutzer muss nachvollziehen können wie sein Router arbeitet. Insbesondere wäre es gut, keine Nodes per SSH manuell zu konfigurieren, damit der Nutzer den Verdacht hat, dass wir sein Netz auspionieren können. Es muss klar sein, welche Dateien node-abhängig per http geladen werden - für jeden muss einsehbar sein, wie deren Inhalt ist. Insbesondere sollten daher alle Quelltexte aller Pakete und deployment-Anwendungen für jeden offen sein.

Node-unabhängige Konfiguration

Node-abhängige Konfiguration