Files
management/docs/adr/0017-split-dns-cfgmon-vier-zonen.md
Thore CimbalandClaude Opus 4.8 f433fc2b2a docs(adr): ADR-0017 — split-DNS as-built, each zone justified by measurement
Corrects only the split-DNS line of ADR-0004 (frozen once accepted, hence a
separate ADR). Rather than documenting 'four zones exist', it measures what each
one does: ~lab and ~axionlabs.de resolve names that exist only internally or
differently (git.lab, and ca.axionlabs.de as real split-horizon to the step-ca),
~axion1337.de carries the internal-only git.axion1337.de, and ~lab.de carries
nothing at all while routing a foreign public domain through the lab resolver —
so it goes.

This also answers the audit's rollback option: reverting to ~lab alone would have
broken internal CA and git resolution. The purpose was never written down, which
is why rolling back would have been blind.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-15 12:00:00 +00:00

95 lines
4.9 KiB
Markdown

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