Diese Seite strukturiert die Konzeptidee eines Firmwarepaketes, welches eine Konfiguration eines oder mehrerer Knoten per automatischem Einspielen ähnlich von Firmwareaktualisierungen ermöglichen könnte.

Die Fernkonfiguration soll mittels Signaturen genauso wie der Autoupdater mehrfach abgesichert sein, sodass das Kernteam nur gemeinsam einee solche Änderung durchführen kann, indem die Änderungssätze mehrfach signiert werden müssen.

Zielsetzung

Statt Konfigurationsänderungen per Autoupdater mit Hilfspaketen einzuspielen, was bereits jetzt möglich ist um z. B. Knoten SSH-Schlüssel per Firmwareupdate unterzujubeln und dann beliebige Änderungen per Fernwartung vorzunehmen, soll das Paket eine elegante Methode bieten Konfigurationsänderungen in Knoten einzuspielen ohne dauerhaften Zugriff zu benötigen.

Anwendungsfälle

  • serverseitiges Auswählen der Domäne (Multidomänenfirmware)
  • Korrektur von Koordinaten oder Ausblenden von Knoten, die offensichtlich falsche Koordinaten haben

Ist das böse?

Da es bereits jetzt möglich ist Knoten per Autoupdate zu  „öffnen“ und SSH-Schlüssel einzuspielen, ist es funktional nichts Neues.

Funktionsumfang

Die Gesamtfunktionalität lässt sich dreifaltig strukturieren:

  • uci Einstellungen setzen und übernehmen
  • bash-Befehle absetzen
    • simplen Neustart durchführen um hängende Knoten durchzustarten
  • Lua/Bash-Skripte laden und ausführen

Implementierungsansätze

Anders als beim Autoupdater, wo immer die neueste Version eingespielt wird, müsste sichergestellt sein, dass ein Änderungssatz nur einmal ausgeführt wird.

Dazu könnte man sich verschiedene Ansätze vorstellen:

  • Änderungssätze enthalten Zeitintervall für die sie gültig sind
    • Mehrfachausführung innerhalb des Zeitraumes werden in Kauf genommen
    • Problem: Änderungen müssten idempotent sein
      • Für Neustarts nicht wirklich möglich
  • Client speichert die letzten drei abgearbeitete Änderungssätze und wiederholt diese nicht
  • Backend bauen, welches die passenden Änderungen an den Router gibt und sich merkt, welche schon ausgespielt worden sind

Struktur

Vorschlag wäre Lua-Wörterbuch genau wie die site.conf und die Datei wird am Ende mit den ecdsautils im Stil der Manifeste signiert. Der Vorteil ist hier, dass Parser und Signierung schon Gluon-Bestandteile sind.

Um im Gegensatz zu Änderungen durch die Firmware mit dem neuen Paket Transparenz zu schaffen, werden die Änderungssätze zentral in einem öffentlich einsehbaren Git-Repository gespeichert.

{
	reason: 'Begründung oder Notwendigkeit der Maßnahme',
	devices: { -- zu überlegen, ob die Adressierung vom Server oder auf dem Client erfolgt
		'ipv6address',
		'ipv6address'
		'or prefix' -- falls alle Router einer Domäne erwischt werden sollen
	},
	uci: {
		'key': 'value',
		'key': 'value'
	},
	command: '....',
	script: {
		interpreter: 'lua',
		source: [[
			-- this is
			-- my multiline
			-- script.
		]]
	}
}
---
<Signaturen>


Ausblick: Webkonfiguration


Ggfs. könnten Freifunker nach einer wie auch immer gearteten Authentifizierung selbst Änderungen per Web-UI vornehmen.

  • Keine Stichwörter