--- type: adr id: "0017" status: accepted date: 2026-08-15 supersedes: null superseded_by: null related: - "docs/adr/0004-site-to-site-vpn-hetzner-lab.md" - "docs/issues/0027-audit-01-acht-widersprueche-aus-dem-labnet-02.md" --- # 0017 — Split-DNS auf CFGMON: vier Zonen statt einer, je Zone begründet **Status:** akzeptiert · **Datum:** 2026-08-15 · **Entscheider:** sorb ## Kontext [ADR-0004](0004-site-to-site-vpn-hetzner-lab.md) beschreibt in der CFGMON-Zeile *„Split-DNS nur `~lab` → `10.58.73.1`"*. Tatsächlich konfiguriert sind seit 2026-08-01 (auf sorbs Ansage, `/etc/wireguard/lab.conf`, festgehalten nur im CFGMON-AAR, Nachtrag 2) **vier** Zonen: `~lab`, `~lab.de`, `~axion1337.de`, `~axionlabs.de`. Aufgefallen im Selbst-Audit als W1 von [#0027](../issues/0027-audit-01-acht-widersprueche-aus-dem-labnet-02.md). ADRs sind nach Annahme eingefroren; der As-built-Stand lässt sich nicht in ADR-0004 nachtragen. Diese ADR korrigiert **ausschließlich diese eine Zeile** — die VPN-Architektur aus ADR-0004 bleibt unberührt und gültig. Befürchtet wurde: Löst der Lab-Resolver `axion1337.de` anders auf als die öffentliche Sicht, ändert sich unbemerkt der Pfad zum Gitea-Mirror (`rohana.axion1337.de`) — also zur Flux-Quelle. ## Messung (2026-08-15, vom Lab-VLAN gegen `10.58.73.1`, verglichen per DoH) **Die Befürchtung trifft nicht zu.** Kein einziger Record weicht ab — geprüft wurden A, MX, TXT (SPF/DMARC), CNAME (DKIM), nur öffentlich existierende Subdomains sowie Records, die **einen Tag zuvor** angelegt (`rohana` MX `0 .`, `_dmarc.rohana`, SPF `-all`) bzw. **gelöscht** wurden (`www.rohana`, `ftp`). Der Lab-Resolver hält für `axion1337.de` **keine eigene Zone**, sondern reicht live nach oben durch. Das von ihm gesetzte `aa`-Flag ist eine Eigenheit des UniFi-Resolvers und war der irreführende Teil, der den Verdacht überhaupt begründet hat. Was die vier Zonen tatsächlich leisten: | Zone | Nachweis | Urteil | |---|---|---| | `~lab` | `git.lab` → `10.58.73.17`, `wiki.lab` → `10.58.73.17`; öffentlich **NXDOMAIN** | **notwendig** — ohne sie kein git.lab (266 Fundstellen in der Doku) | | `~axionlabs.de` | `ca.axionlabs.de` → **`10.58.73.13`** intern vs. `91.195.241.232` öffentlich | **notwendig** — echtes Split-Horizon auf die interne step-ca | | `~axion1337.de` | `git.axion1337.de` → **`10.58.73.13`** intern, öffentlich NXDOMAIN; alle übrigen Namen identisch zur öffentlichen Sicht | **notwendig** für den internen Namen; für den Rest wirkungslos, aber schadlos | | `~lab.de` | kein interner Name gefunden; `lab.de` löst identisch zur öffentlichen Sicht auf (`52.59.124.117`, **fremde Domain**); keine einzige Fundstelle im Repo | **ohne belegbaren Zweck** | ## Entscheidung 1. **`~lab`, `~axionlabs.de` und `~axion1337.de` bleiben** und sind hiermit als As-built dokumentiert. Jede der drei löst mindestens einen Namen auf, den es öffentlich nicht oder anders gibt — sie sind kein Versehen. 2. **`~lab.de` wird entfernt.** Es leitet Anfragen für eine **fremde** öffentliche Domain über den Lab-Resolver, ohne dass ein interner Name darunter existiert oder das Repo sie irgendwo verwendet. Heute schadlos (der Resolver reicht durch), aber eine Umleitung ohne Zweck ist eine Angriffs- und Fehlerfläche, die niemand pflegt. 3. **Kein Rückbau auf `~lab` allein.** Das hätte `ca.axionlabs.de` und `git.axion1337.de` unauflösbar gemacht — der Rückbau wäre ins Blinde gegangen, weil der Zweck der Zonen nirgends festgehalten war. Genau das ist die Lücke, die diese ADR schließt. ## Konsequenzen - **Offene Handlung:** `~lab.de` aus `/etc/wireguard/lab.conf` auf CFGMON entfernen (`Domains =`-Zeile), Dienst neu laden, mit `resolvectl domain` gegenprüfen. Bis dahin bleibt der Ist-Zustand vierzonig. - **Der Verdacht aus W1 ist ausgeräumt und belegt** — künftige Sessions müssen ihn nicht erneut prüfen. Die Messung steht oben, nicht nur ihr Ergebnis. - **`aa`-Flag ist hier kein Autoritätsbeweis.** Wer künftig auf UniFi-Resolvern misst, darf daraus nicht auf eine lokale Zone schließen; nur der Datenvergleich gegen die öffentliche Sicht entscheidet. - **Die ACME-Resolver-Festnagelung** in Traefik (`dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53`, `thread-net-git` `8d089e2`) bleibt sinnvoll (deterministisch, umgeht Negativ-Caching), ist aber **kein** Sicherheitsnetz gegen diese Zonen — eine gegenteilige Behauptung in #0027 wurde nach der Messung korrigiert. ## Verworfene Alternativen - **ADR-0004 nachbessern:** nicht zulässig, ADRs sind nach Annahme eingefroren — deshalb diese eigene ADR statt einer stillen Korrektur. - **Alle vier Zonen belassen und nur dokumentieren:** hätte `~lab.de` als „historisch gewachsen" zementiert, ohne dass irgendwer einen Zweck benennen kann. Eine Ausnahme, die niemand begründen kann, ist keine Ausnahme, sondern ein Rest. - **Rückbau auf `~lab`** (die zweite Option aus W1): bricht die interne CA- und git-Auflösung, siehe Messung.