This repository has been archived on 2026-09-17. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
nixos-config/docs/pinix-router-migration.md
pijukka 51f8ccef1a host(pinix): clean up leftover Mango references after the router migration
- mango-dns -> wan-dns-update (module, script, systemd units): same job
  (keep ipv6-test.0ff.space's AAAA pointed at the current WAN address),
  now named for what actually provides the uplink (Nokia tethering).
- Drop the dead `networking.dhcpcd.extraConfig` block in
  hosts/pinix/configuration.nix (end0 is the tnix maintenance link now,
  not an uplink; router-uplink.nix's mkForce for wan0 already won here).
- Fix stale "Mango" wording in configuration.nix and
  localServices/tailscale.nix to describe the actual Nokia/pinix-router-dns
  setup.
- Remove the now-dead transitional `enp1s0u1u2` dhcpcd stanza in
  router-uplink.nix -- wan0 has been the stable name across several
  reconnects/reboots.

Not touched: scripts/pinix-reachability-probe.sh,
scripts/configure-mango-dns.sh, docs/pinix-reboot-probe.md,
docs/pinix-bind.md -- built entirely around the old Mango DNAT setup
(uci/nft on the Mango itself), need their own rework for the Nokia
uplink rather than a rename. Noted in docs/pinix-router-migration.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C5FvfdKcQjEFQ4aLrepcS1
2026-09-13 16:07:15 +02:00

125 lines
6.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Mango durch pinix ersetzen
Stand: 13.09.2026, Umzug aktiv. Offen ist nur noch der Test mit einem
echten WLAN-Client (siehe unten).
Ziel: Nokia 6300 per USB-Tethering an pinix; pinix stellt das WLAN
`pinix` mit neuem, zufälligem Schlüssel bereit. tnix behält während der
Migration Internet über den unabhängigen iPhone-Hotspot.
## Reihenfolge
1. Fester Ethernet-Wartungszugang: pinix `192.168.50.1/24`, tnix
`192.168.50.2/24`. Kein zusätzliches Standardgateway. Zunächst am
bestehenden Mango-LAN testen, dann Ethernet direkt verbinden.
2. Nokia direkt an pinix: USB-Erkennung, IPv6, DNS64 und Wiederverbindung.
3. Öffentliche Dienste und DNS vom Mango unabhängig machen.
4. WLAN und Internetweitergabe auf pinix aktivieren und mit Client testen.
## Aufbau
- `hosts/pinix/router-uplink.nix`: Nokia per `.link`-Datei stabil als
`wan0` (Treiber `rndis_host`, Modell `Nokia_6300_4G`), IPv6 per RA
(`accept_ra = 2`), IPv4-Standardroute des Telefons verworfen. Eigener
Unbound `pinix-router-dns` auf `127.0.0.2` und den LAN-Adressen, der an
die DNS64-Resolver der Telekom weiterleitet. BIND lauscht öffentlich auf
der wechselnden globalen Adresse, nicht auf LAN-/Tailnet-ULAs. Firewall:
öffentlich nur 53/80/443, SSH nur über `end0` und `tailscale0`.
- `hosts/pinix/router-lan.nix`: `end0` (`192.168.50.1`, `fd42:50:0::1`) und
`wlan0` (`192.168.51.1`, `fd42:50:1::1`), NAT66 über `wan0`, radvd mit
RDNSS auf pinix, dnsmasq nur für DHCPv4 auf `wlan0` (lokales IPv4 ohne
Router – Internet läuft über IPv6 plus NAT64/DNS64 der Telekom), hostapd
`pinix` auf 2,4 GHz Kanal 6, WPA2-SHA256.
- WLAN-Schlüssel: `secrets/pinix-wifi.age` (Empfänger: Nutzer + pinix),
anzeigen mit `agenix -d secrets/pinix-wifi.age`. **Nach jeder Rotation
zusätzlich `sudo systemctl restart hostapd` auf pinix nötig** — hostapd
liest die Passphrase nur beim eigenen Start ein; `nixos-rebuild switch`
löst dafür keinen Neustart aus, weil sich nur der Secret-*Inhalt* hinter
dem unveränderten `/run/agenix`-Pfad ändert, nicht die Unit selbst.
Gefunden am 13.09.2026: Passwort rotiert und deployt, hostapd lief aber
unbemerkt mit der alten Passphrase weiter, bis der Neustart das behoben
hat.
- Öffentliche Adresse: `mango-dns.timer` führt `ipv6-test.0ff.space` (AAAA)
jede Minute nach; `dex.` und `head.` (`domain2`) sind CNAMEs darauf. Der
Dienstname stammt noch aus der Mango-Zeit, die Funktion ist unabhängig
vom Router.
## Konfigurationsbasis
Das Repository `/home/drone/nixos-config` auf pinix war hinter dem laufenden
System zurückgeblieben. Ein erster Dry-Run hätte unter anderem Dex und
Headscale entfernt; dieser Build wurde nicht aktiviert.
Die archivierte Quelle
`/nix/store/cca8s4fkcymj5nmv4df69bgdjbxixlhb-source` wurde ausgewertet und
ergab exakt den laufenden Systempfad
`/nix/store/ra5qca5ffp4412wdqw4f125yxvcpw6p5-nixos-system-pinix-26.11.20260910.8ce4ef6`.
Aus dieser Quelle wurden die pinix-Module und die beiden Dex-Hilfsskripte
in das Repository auf pinix übernommen. Vorheriger Stand gesichert unter
`/tmp/pinix-before-router-source-reconcile-20260913.tar.gz` auf pinix.
Neue Quelldateien sind dort mit `git add -N` für Flake-Auswertungen sichtbar.
Die Router-Stufen wurden aus diesem pinix-Checkout gebaut und aktiviert.
Der lokale Arbeitsstand auf tnix enthält zusätzlich die noch nicht
aktivierte `tailnet-dns.nix`. Deren doppelte Definition von
`net.ipv6.conf.wan0.accept_ra` wurde entfernt, weil `router-uplink.nix`
das jetzt besitzt; sonst bricht die Auswertung des tnix-Stands ab.
## Geprüft
- tnix aktiviert mit `192.168.50.2/24`; IPv6-Standardroute über iPhone
weiterhin bevorzugt (Metrik 3003 gegenüber Ethernet 4000).
- `iw list` auf pinix bestätigt AP-Unterstützung, 2,4 GHz und 5 GHz.
- Wartungsweg: SSH von tnix über `192.168.50.1` zuerst über Mangos
LAN-Switch, dann per Direktkabel (Ping 0,326 ms). Der erste Switch musste
`network-addresses-end0.service` explizit starten, da das Gerät bereits
vorhanden war.
- Nokia: nach USB-Neuanschluss als `wan0` mit öffentlicher IPv6-Adresse;
beide Telekom-Resolver liefern DNS64 (`64:ff9b::/96`); GitHub über
NAT64 mit HTTP 200.
- Letzte Stufe aktiviert:
`/nix/store/236wq0yx33qwmfjnwwhn2zrn52knww88-nixos-system-pinix-26.11.20260910.8ce4ef6`.
`systemctl is-system-running` = `running`, keine fehlgeschlagenen Units;
hostapd (`AP-ENABLED`), radvd, dnsmasq, `pinix-router-dns`, BIND,
Traefik, Dex, Headscale, tailscaled aktiv; IPv4/IPv6-Forwarding an.
- Von außen (tnix über iPhone-Hotspot, fremdes Netz): Ping auf die
Nokia-Adresse ok; HTTP 301, `https://dex.lukasrosier.com/dex/.well-known/openid-configuration`
und `https://head.lukasrosier.com/health` jeweils 200 über
`2a01:598:…:3bdc`; Port 22 von außen geschlossen. Cloudflare löst
`ipv6-test.0ff.space` und `dex.lukasrosier.com` auf dieselbe Adresse auf.
- Nach dem Umzug hielt pinix noch eine per RA gelernte Default-Route des
Mango über `end0` (Metrik 1024, gegenüber `wan0` 1007). Da `end0` jetzt
`accept_ra = 0` hat, wird sie nicht erneuert und läuft von selbst aus.
## Test mit echtem Client und gefundene Bugs
Test mit einem echten Geraet (iPad) im WLAN `pinix` am 13.09.2026 bestanden,
aber erst nach drei weiteren, unabhaengigen Bugs, die dabei zutage kamen
(alle behoben und deployt):
- `authentication.mode = "wpa2-sha256"` (seltene AKM-Variante) statt
`wpa2-sha1` (der von praktisch jedem Geraet unterstuetzte WPA2-Standard)
in `router-lan.nix` -- der Beitritt kam serverseitig nie an.
- `end0`/`wlan0` ohne automatisch erzeugte Link-Local-Adresse
(`addr_gen_mode=none`, erzeugende Ursache nicht abschliessend geklaert):
radvd verweigerte deshalb stillschweigend jede Advertisement
("interface is not ready" bei Debug-Verbositaet). Ein oneshot-Dienst
(`pinix-lan-linklocal` in `router-lan.nix`) setzt `addrgenmode eui64` bei
jedem Boot zurueck, nach allem was die Interfaces sonst anfasst.
- Die DNS64-Zugriffskontrolle in `router-uplink.nix` nutzte `fd42:50::/48`
(fixiert das 3. Hextet auf 0, deckt nur `end0` ab) statt `/32` (deckt
`end0` UND `wlan0` ab) -- jede DNS-Anfrage vom WLAN kam als "Refused"
zurueck, kein Client konnte etwas laden.
## Aufräumen (erledigt am 13.09.2026)
`mango-dns` -> `wan-dns-update` umbenannt (Modul, Systemd-Einheiten,
Skript), die Mango-Kommentare in `hosts/pinix/configuration.nix` und
`localServices/tailscale.nix` korrigiert, der Übergangsname `enp1s0u1u2` in
`router-uplink.nix` entfernt (wan0 ist seit mehreren Boots/Reconnects
stabil benannt). Nicht angefasst: `scripts/pinix-reachability-probe.sh`,
`scripts/configure-mango-dns.sh` und die reinen Reboot-/Bind-Testprotokolle
(`docs/pinix-reboot-probe.md`, `docs/pinix-bind.md`) -- die sind komplett
auf die alte Mango-DNAT-Architektur zugeschnitten (eigene `uci`/`nft`-Schritte
auf dem Mango selbst) und brauchen eine eigene Überarbeitung für den
Nokia-Uplink, kein bloßes Umbenennen.