Astro 2 years ago
parent a2ac282c60
commit b0611efc57
  1. 111
      README.md
  2. 2
      doc/test-environment.md
  3. 2
      doc/wifi-provisioning.md
  4. 2
      nix/nixos-module/default.nix

@ -1,5 +1,7 @@
# Netzwerk im [Zentralwerk](http://www.zentralwerk.de/)
[Begrüßung von Menschen im Haus, die für ihren Anschluss Zugang zum Netzwerk brauchen](doc/hello.md)
## Zweck
Das Zentralwerk ist ein Gebäude, das bestmöglich vernetzt sein soll. Das beginnt mit der Bereitstellung vom Zugang zum Internet, reicht über das isolierte Zusammenführen von einzelnen Anschlüssen und endet mit Angebot von zeitgemäßen Diensten für alle, die das Netz nutzen wollen.
@ -7,101 +9,72 @@ Das Zentralwerk ist ein Gebäude, das bestmöglich vernetzt sein soll. Das begin
Anstatt irgendwie rumzukonfigurieren, soll es eine Nachvollziehbarkeit (Reproduzierbarkeit) der gemachten Einstellungen geben.
Mit der Transparenz soll es möglich sein, dass das Netzwerk möglichst einfach verwaltet werden kann. (Stichworte sind: Zusammenarbeit, Wiederherstellbarkeit, Teilhabe, Mitmachen, Nachahmen, …)
## allgemeine Informationen
## Öffentlichkeit
### Informationen für Menschen, die angeschlossen werden möchten
Warum ist das alles einsehbar? Für maximale Transparenz!
Wir sind kein Unternehmen das Geheimnisse schützen muss. Stattdessen wollen wir freie Kommunikation für alle!
[Begrüßung von Menschen im Haus, die für ihren Anschluss Zugang zum Netzwerk brauchen](doc/hello.md)
Wie werden die (wenigen) persönlichen Daten "öffentlich" verwaltet? Mit entsprechender Verschlüsselung!
Wir, ein kleiner Kreis von Menschen die das Netzwerk im Zentralwerk betreuen, haben dafür einen Geheimschlüssel. Im Übrigen behandeln wir gleichermaßen sicher die "heiligen" Zugangsdaten für die Geräte (und andere für den Betrieb wichtigen Instanzen).
### Informationen für Menschen, die das Netzwerk mit verwalten
## Informationen für Lebewesen, die das Netzwerk mit verwalten
#### Inhaltsverzeichnis
### Inhaltsverzeichnis
* [Verkabelung Patchpanel Haus B](cabling.md)
* TODO: tuerme, saal
* [Planung der IP-Adressbereiche](subnets.md)
* (verschlüsselte) [Kontakte zu den Personen mit den einzelnen Anschlüssen](contact.md.gpg)
* Dokumentation
* [WiFi-Provisionierung](doc/wifi-provisioning.md) und Erstellung von Privatnetzen
* [Einrichtung einer Testumgebung fürs Mit- und Nachmachen (Entwicklung)](doc/test-environment.md)
* Unterverzeichnis [salt/](salt): Skripte (*salt states*) zum Aufbau des zentralen Services
* Unterverzeichnis [salt-pillar/](salt-pillar): individuelle Konfigurationsdaten
* **vlans** bildet Netznamen auf VLAN-IDs ab
* **subnets** und ../subnets.md enthält unsere IP-Netzplanung
* **hosts** sind alle statisch konfigurierten IP-Adressen
* **dhcp** enthält die zur Verfügung gestellten privaten Addressbereiche
* **switches** dient zur Konfigurationserzeugung für alle Managed Switches
* **cpe** sind Daten für Konfiguration des *Customer Premise Equipment* (WiFi Access Points)
* Datei top.sls listet die auf einzelnen Containern und im Host verwendeten Systemdienste
#### Dinge die stets schieflaufen
##### `salt server1 state.apply server1-network`
Hier werden die Bridges abgerissen und neu erstellt. Danach hängen
gestartete lxc-Container nicht mehr dran.
**Lösung:** Manuell hinzufügen mit `brctl addif` oder einfach die
Container neustarten.
* `flake.nix` und Unterverzeichnis [nix/](nix): Konfigurationsskripte
##### Switch-Konfigurationsskripte ausgeführt, dabei ist das Netz gestorben
### Nixification Roadmap
Das tritt auf wenn man so doll die Konfiguration verändert, dass die
Nummern der Link-Aggregation Groups sich ändern. Dabei landet server1,
von welchem gerade konfiguriert wird, temporär in einer Gruppe die
eigentlich zu was anderem gehört.
- [x] Einlesen der Salt-Daten in Nix
- [x] Containererstellung
- [ ] Migration der Container
- [ ] device-scripts auf Site Config umstellen
- [ ] Site Config dumpen, Salt-Daten löschen
**Lösung:** Skript auf eigenen Computer kopieren, direkt ans *mgmt*
hängen und ausführen.
### Nix Flake
##### pub-Netz läuft, aber kein DHCP+Internet darüber verfügbar
[Segfaulting nix?](https://github.com/NixOS/nix/issues/4178) Until
resolved, `export GC_DONT_GC=1`
Eventuell hat `uci` bei der ap-Konfiguration die Switch-Konfiguration
für dieses VLAN nicht in `/etc/config/network` angelegt.
* **Überprüfen**: `swconfig dev switch0 show`
* **Beheben**: VLAN manuell in `/etc/config/network` anelegen
#### Site Config
## Öffentlichkeit
Wir verwenden das Module-System von NixOS eigenständig in
`nix/lib/config` weil:
Warum ist das alles einsehbar? Für maximale Transparenz!
Wir sind kein Unternehmen das Geheimnisse schützen muss. Stattdessen wollen wir freie Kommunikation für alle!
* Checks gegen options
* Nutzbarkeit in Paketen (device-scripts) ausserhalb eines
`nixos-rebuild`
* Konfigurationsdaten über mehr als 1 Host
Wie werden die (wenigen) persönlichen Daten "öffentlich" verwaltet? Mit entsprechender Verschlüsselung!
Wir, ein kleiner Kreis von Menschen die das Netzwerk im Zentralwerk betreuen, haben dafür einen Geheimschlüssel. Im Übrigen behandeln wir gleichermaßen sicher die "heiligen" Zugangsdaten für die Geräte (und andere für den Betrieb wichtigen Instanzen).
#### nixosConfigurations
## System
Systemkonfigurationen für alle Hosts mit der `role` `"server"` oder
`"container"`
Verkabelung
* im Haus
* in Serverschränken
#### nixosModule
Server (Hardware)
* Bebriebssystem: Debian (GNU/Linux)
* Verwaltung der Konfiguration:
* [salt](https://www.saltstack.com/)
* Repository
* (generierte) Skripte
* Container: LXC
* Dienst DHCP:
* Dienst DNS:
* …
Alle NixOS-Einstellungen
Geräte für die Verteilung vom Netzwerk
* Switches (bis zu den Anschlüssen)
* Access Points (hinter den Anschlüssen)
### LXC-Containers auf Server
Zugänge fürs Internet
* bezogene Anschlüsse bei anbietenden Unternehmen
* bezogener Zugang zu einem VPN bei anbietenden Unternehmen
TODO
Randbedingungen:
* Server (Hardware)
* Betriebssystem: Proxmox VE (als kleines Cluster, auch für Dienste)
build-container
lxc-attach
systemctl start lxc@$host
## Zukunft
### Dinge die stets schieflaufen
#### Einsatz von NixOS auf dem Server
#### pub-Netz läuft, aber kein DHCP+Internet darüber verfügbar
Mittelfristig soll das System bestmöglich mit NixOS betrieben werden. Entsprechend würde dann Debian und (mindestens Großteile) von salt ersetzt werden.
Eventuell hat `uci` bei der ap-Konfiguration die Switch-Konfiguration
für dieses VLAN nicht in `/etc/config/network` angelegt.
Mit NixOS wäre eine bessere (absolutere) Kontrolle möglich. Die Konfiguration wird nicht komplizierter.
* **Überprüfen**: `swconfig dev switch0 show`

@ -1,5 +1,7 @@
# Create a Virtual Machine
TODO: nixify
```shell
dd if=/dev/zero of=salt.hda bs=1M count=1 seek=10239
wget http://cdimage.debian.org/debian-cd/8.7.1/amd64/iso-cd/debian-8.7.1-amd64-netinst.iso

@ -1,5 +1,7 @@
# Provisionierung eines WLAN-Routers
TODO: nixify
Sofern der Router durch uns provisioniert wird (ansonsten siehe unten)
1. Kontaktdaten und Dosennummer in `contacts.md` vermerken

@ -1,3 +1,5 @@
# Pulls together NixOS configuration modules according to the
# name/role of the host to be built.
{ hostName, config, lib, pkgs, ... }:
let

Loading…
Cancel
Save