This commit is contained in:
Astro 2021-04-08 02:35:46 +02:00
parent a2ac282c60
commit b0611efc57
4 changed files with 60 additions and 81 deletions

135
README.md
View File

@ -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,60 +9,6 @@ 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
### Informationen für Menschen, die angeschlossen werden möchten
[Begrüßung von Menschen im Haus, die für ihren Anschluss Zugang zum Netzwerk brauchen](doc/hello.md)
### Informationen für Menschen, die das Netzwerk mit verwalten
#### Inhaltsverzeichnis
* [Verkabelung Patchpanel Haus B](cabling.md)
* [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.
##### Switch-Konfigurationsskripte ausgeführt, dabei ist das Netz gestorben
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.
**Lösung:** Skript auf eigenen Computer kopieren, direkt ans *mgmt*
hängen und ausführen.
##### pub-Netz läuft, aber kein DHCP+Internet darüber verfügbar
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
## Öffentlichkeit
Warum ist das alles einsehbar? Für maximale Transparenz!
@ -69,39 +17,64 @@ Wir sind kein Unternehmen das Geheimnisse schützen muss. Stattdessen wollen wir
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).
## System
## Informationen für Lebewesen, die das Netzwerk mit verwalten
Verkabelung
* im Haus
* in Serverschränken
### Inhaltsverzeichnis
Server (Hardware)
* Bebriebssystem: Debian (GNU/Linux)
* Verwaltung der Konfiguration:
* [salt](https://www.saltstack.com/)
* Repository
* (generierte) Skripte
* Container: LXC
* Dienst DHCP:
* Dienst DNS:
* …
* [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)
* `flake.nix` und Unterverzeichnis [nix/](nix): Konfigurationsskripte
Geräte für die Verteilung vom Netzwerk
* Switches (bis zu den Anschlüssen)
* Access Points (hinter den Anschlüssen)
### Nixification Roadmap
Zugänge fürs Internet
* bezogene Anschlüsse bei anbietenden Unternehmen
* bezogener Zugang zu einem VPN bei anbietenden Unternehmen
- [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
Randbedingungen:
* Server (Hardware)
* Betriebssystem: Proxmox VE (als kleines Cluster, auch für Dienste)
### Nix Flake
## Zukunft
[Segfaulting nix?](https://github.com/NixOS/nix/issues/4178) Until
resolved, `export GC_DONT_GC=1`
#### Einsatz von NixOS auf dem Server
#### Site Config
Mittelfristig soll das System bestmöglich mit NixOS betrieben werden. Entsprechend würde dann Debian und (mindestens Großteile) von salt ersetzt werden.
Wir verwenden das Module-System von NixOS eigenständig in
`nix/lib/config` weil:
Mit NixOS wäre eine bessere (absolutere) Kontrolle möglich. Die Konfiguration wird nicht komplizierter.
* Checks gegen options
* Nutzbarkeit in Paketen (device-scripts) ausserhalb eines
`nixos-rebuild`
* Konfigurationsdaten über mehr als 1 Host
#### nixosConfigurations
Systemkonfigurationen für alle Hosts mit der `role` `"server"` oder
`"container"`
#### nixosModule
Alle NixOS-Einstellungen
### LXC-Containers auf Server
TODO
build-container
lxc-attach
systemctl start lxc@$host
### Dinge die stets schieflaufen
#### pub-Netz läuft, aber kein DHCP+Internet darüber verfügbar
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`

View File

@ -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

View File

@ -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

View File

@ -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