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>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
9399df0f8a
commit
f433fc2b2a
@@ -43,7 +43,7 @@ Verteilung: M1 6 · M2 18 · M4 2 · M5 4
|
|||||||
|
|
||||||
_none active_
|
_none active_
|
||||||
|
|
||||||
## ADRs (16)
|
## ADRs (17)
|
||||||
|
|
||||||
| ADR | Status | Title |
|
| ADR | Status | Title |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
@@ -63,6 +63,7 @@ _none active_
|
|||||||
| [0014](docs/adr/0014-wikijs-loest-docusaurus-ab.md) | accepted | 0014 — Wiki.js löst Docusaurus ab: abgeschottete Betriebs-/Anwenderdoku, docs-as-code |
|
| [0014](docs/adr/0014-wikijs-loest-docusaurus-ab.md) | accepted | 0014 — Wiki.js löst Docusaurus ab: abgeschottete Betriebs-/Anwenderdoku, docs-as-code |
|
||||||
| [0015](docs/adr/0015-wiki-git-storage-ueber-gitea-kanonisieren.md) | accepted | 0015 — Wiki.js Git-Storage: Inhalt fließt Cluster→Gitea→kanonisiert nach git.lab |
|
| [0015](docs/adr/0015-wiki-git-storage-ueber-gitea-kanonisieren.md) | accepted | 0015 — Wiki.js Git-Storage: Inhalt fließt Cluster→Gitea→kanonisiert nach git.lab |
|
||||||
| [0016](docs/adr/0016-notfallhandbuch-nicht-spiegeln.md) | accepted | 0016 — Das Notfallhandbuch bleibt lab-intern und wird nicht gespiegelt |
|
| [0016](docs/adr/0016-notfallhandbuch-nicht-spiegeln.md) | accepted | 0016 — Das Notfallhandbuch bleibt lab-intern und wird nicht gespiegelt |
|
||||||
|
| [0017](docs/adr/0017-split-dns-cfgmon-vier-zonen.md) | accepted | 0017 — Split-DNS auf CFGMON: vier Zonen statt einer, je Zone begründet |
|
||||||
|
|
||||||
## Open AARs (2)
|
## Open AARs (2)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,94 @@
|
|||||||
|
---
|
||||||
|
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.
|
||||||
@@ -219,3 +219,29 @@ niemand entscheiden, ob ein Rückbau auf `~lab` etwas kaputtmacht. Empfehlung da
|
|||||||
**ablösender ADR mit dem As-built-Stand** samt Begründung (sorb kennt sie), statt eines
|
**ablösender ADR mit dem As-built-Stand** samt Begründung (sorb kennt sie), statt eines
|
||||||
Rückbaus ins Blinde. Die Messung oben gehört als Beleg hinein — sie zeigt, dass die Zonen
|
Rückbaus ins Blinde. Die Messung oben gehört als Beleg hinein — sie zeigt, dass die Zonen
|
||||||
heute schadlos sind.
|
heute schadlos sind.
|
||||||
|
|
||||||
|
## W1 erledigt 2026-08-15 — ADR-0017
|
||||||
|
|
||||||
|
Festgehalten als [ADR-0017](../adr/0017-split-dns-cfgmon-vier-zonen.md). Er korrigiert
|
||||||
|
**ausschließlich** die Split-DNS-Zeile aus ADR-0004 (die VPN-Architektur bleibt gültig) und
|
||||||
|
begründet **jede Zone einzeln durch Messung** statt sie pauschal zu dokumentieren:
|
||||||
|
|
||||||
|
- **`~lab`** notwendig — `git.lab`/`wiki.lab` → `10.58.73.17`, öffentlich NXDOMAIN.
|
||||||
|
- **`~axionlabs.de`** notwendig — `ca.axionlabs.de` löst intern auf `10.58.73.13` auf,
|
||||||
|
öffentlich auf `91.195.241.232`: echtes Split-Horizon auf die interne step-ca.
|
||||||
|
- **`~axion1337.de`** notwendig — `git.axion1337.de` existiert **nur** intern (`10.58.73.13`);
|
||||||
|
für alle übrigen Namen wirkungslos, aber schadlos (Messung: keine Abweichung).
|
||||||
|
- **`~lab.de`** → **wird entfernt**: kein interner Name darunter, keine Fundstelle im Repo,
|
||||||
|
und es leitet eine **fremde** öffentliche Domain (`lab.de`, `52.59.124.117`) über den
|
||||||
|
Lab-Resolver. Heute schadlos, aber eine Umleitung ohne Zweck pflegt niemand.
|
||||||
|
|
||||||
|
Damit ist auch die Rückbau-Option aus dem Audit beantwortet: Ein Rückbau auf `~lab` allein
|
||||||
|
**hätte die interne CA- und git-Auflösung gebrochen** — er wäre ins Blinde gegangen, weil der
|
||||||
|
Zweck der Zonen nirgends stand. Genau diese Lücke schließt der ADR.
|
||||||
|
|
||||||
|
⚠️ **Offene Handlung (klein):** `~lab.de` aus `/etc/wireguard/lab.conf` auf CFGMON entfernen,
|
||||||
|
Dienst neu laden, mit `resolvectl domain` gegenprüfen.
|
||||||
|
|
||||||
|
**Stand der acht Widersprüche: W1, W2, W3, W6, W7, W8 erledigt — offen nur noch W4 und W5**
|
||||||
|
(Schließung von #16 bestätigen bzw. Punkte 4+5 reaktivieren; Bootstrap-Klausel in der
|
||||||
|
Secrets-Regel). Beide hängen an der Schlüsselrotation und passen zu #0015.
|
||||||
|
|||||||
Reference in New Issue
Block a user