TP43: DHCP-Multi verworfen (FB-DHCP nur 1 DNS-IP) → FB-Upstream .36/.37 + Rebind-Ausnahme
dw-FritzBox kann per DHCP nur eine DNS-IP ausliefern → "mehrere NS an die Clients" scheidet aus. Neue Richtung: Clients → 10.95.10.1 (FB), die FB forwardet an Upstream 10.40.20.36 + .37 (beide BF, Voll-Resolver). - Zwingend: DNS-Rebind-Schutz-Ausnahme bf.emsenhuber.net (sonst filtert die FB die Privat-IP-Antworten 10.40.x als Rebind weg). - BF-down-Fallback: FRITZ!OS-"öffentliche NS bei Unreachbarkeit"-Setting, sonst public im Alternativ-Slot (kostet .37, dann strikt-primär verifizieren). - Sauberer als DHCP-Multi: FB ist einziger Client-Resolver, .36 löst intern+public → public nie "zuerst" gefragt, kein NXDOMAIN-Leak. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -2727,7 +2727,7 @@ TP22 · TP-R · **TP3.2** (08-17) · **TP5** (08-18) · **TP7.1** (08-18) · **T
|
||||
</details>
|
||||
|
||||
|
||||
### TP43 — dw-Standort: interne BF-DNS-Namen über WG auflösbar machen ▸ 🔜 **REOPENED 2026-09-11, Richtung entschieden (DHCP-Multi `[.36/.37/public]`); Umsetzung on-site offen** (verworfene 420-Historie am Ende dieses Abschnitts)
|
||||
### TP43 — dw-Standort: interne BF-DNS-Namen über WG auflösbar machen ▸ 🔜 **REOPENED 2026-09-11, Richtung entschieden (FB-Upstream `.36`/`.37` + Rebind-Ausnahme); Umsetzung on-site offen** (verworfene 420-Historie am Ende dieses Abschnitts)
|
||||
|
||||
**Live-Auslöser (2026-09-11):** Christoph am dw-Standort, WG-Tunnel zu BF up, kann `portainer.bf.emsenhuber.net`
|
||||
nicht erreichen. Direkte IP `https://10.40.20.126:9443` geht ⇒ **reines DNS-, kein Routing-Problem.** Der
|
||||
@@ -2746,29 +2746,41 @@ Pfad von dw) trifft für `.36/.37` nicht zu** — fm läuft über den public `fm
|
||||
nicht über interne Records. (WG-Topologie TP10: dw-Peer AllowedIPs BF-seitig = `10.40.0.0/16`, dw
|
||||
routet **nicht** nach `10.101.0.0/24`.)
|
||||
|
||||
**Constraint am dw:** die 24/7-Geräte `10.95.10.246/.247` sind **Cudy-APs (kein DNS-Host)**, und die
|
||||
FritzBox kann **kein Per-Zone-Forwarding** (nur einen globalen Upstream). Ohne Zusatz-Dauerläufer ist
|
||||
ein echter conditional forwarder (dnsmasq `server=/bf.emsenhuber.net/.36`) deshalb nicht drin.
|
||||
**Constraint am dw:** die 24/7-Geräte `10.95.10.246/.247` sind **Cudy-APs (kein DNS-Host)**; die
|
||||
FritzBox kann **kein Per-Zone-Forwarding** (nur einen globalen Upstream) **und per DHCP nur EINE
|
||||
DNS-IP ausliefern** (⇒ „mehrere NS an die Clients" scheidet aus). Ein echter conditional forwarder
|
||||
(dnsmasq `server=/bf.emsenhuber.net/.36`) bräuchte einen Zusatz-Dauerläufer — abgelehnt.
|
||||
|
||||
**Entscheidung (Christoph, 2026-09-11): DHCP-Multi.** Die dw-FritzBox verteilt **per DHCP** die
|
||||
DNS-Serverliste **`10.40.20.36, 10.40.20.37, 9.9.9.9`** an die Clients (FB-eigener Resolver damit
|
||||
umgangen). Gewählt gegenüber „FB-Upstream `.36` primär/public sekundär", weil die **`.37`-Redundanz
|
||||
bleibt** (3 Server statt FB-2-Slot-Grenze) und die **FB entlastet** ist.
|
||||
- **BF-up:** Client fragt `.36` zuerst → interne `bf.*` (Split-Horizon → `.40`) **und** public; der
|
||||
public-Eintrag wird nie konsultiert.
|
||||
- **BF-down:** `.36`/`.37` timeouten → Client fällt auf `9.9.9.9` → public lebt, `bf.*` = NXDOMAIN
|
||||
(erwartet).
|
||||
**Entscheidung (Christoph, 2026-09-11): FB-Upstream + Rebind-Ausnahme.** Clients bekommen per DHCP
|
||||
`10.95.10.1` (die FB selbst, Default); die **FB forwardet an die BF-Resolver**: *DNS-Server → „Andere
|
||||
DNSv4-Server"* Bevorzugt **`10.40.20.36`**, Alternativ **`10.40.20.37`** (beide BF, beide
|
||||
Voll-Resolver → Redundanz bleibt). Sauberer als der zwischenzeitliche DHCP-Multi-Gedanke: die FB ist
|
||||
der **einzige** Client-Resolver und `.36` löst **intern und public** auf → alles geht zuerst an `.36`,
|
||||
public wird nur als Unreachable-Fallback konsultiert, **nie „zuerst"** → kein NXDOMAIN-Leak im
|
||||
Normalbetrieb.
|
||||
|
||||
🔴 **Fundamentaler DNS-Haken (gilt für jede Server-Liste, nicht fixbar):** Failover zwischen
|
||||
Nameservern greift nur bei **Timeout/SERVFAIL, nicht bei NXDOMAIN**. Wird der public Server für
|
||||
`bf.*` zuerst gefragt, liefert er ein sauberes NXDOMAIN und der Client fragt `.36` nicht mehr →
|
||||
funktioniert nur, solange `.36`/`.37` **strikt zuerst** drankommen. Daraus die **zwei
|
||||
On-site-Verifikationen** (Christoph, am dw): (1) die dw-FRITZ!OS liefert per DHCP wirklich die
|
||||
Fremd-Liste aus (nicht die FB selbst); (2) die realen dw-Clients fragen **strikt in Reihenfolge**
|
||||
(kein `options rotate`/Parallel-Query) — mehrfach `nslookup portainer.bf.emsenhuber.net` muss
|
||||
**stabil** `10.40.20.40` liefern, nie sporadisch NXDOMAIN. Leakt ein Client-OS dennoch nach public:
|
||||
für **dieses Gerät** per-Device-Rückfall — `/etc/hosts`-Zeile `10.40.20.40 <name>` oder WARP mit
|
||||
`fallback_domains bf.emsenhuber.net → [.36,.37]` (TP41-Präzedenz).
|
||||
🔴 **DNS-Rebind-Schutz-Ausnahme `bf.emsenhuber.net`** (*Heimnetz → Netzwerk → Netzwerkeinstellungen →
|
||||
DNS-Rebind-Schutz*) ist **zwingend**: sonst filtert die FB die Privat-IP-Antworten (`10.40.x`) als
|
||||
Rebind-Angriff weg → bf-Namen liefern nichts, obwohl `.36` korrekt antwortet. Die Ausnahme ist ein
|
||||
reines Namens-Whitelist (keine IP).
|
||||
|
||||
**BF-down-Fallback (Verzweigung am FRITZ!OS-Stand):** Christoph erinnert ein Setting „öffentliche NS
|
||||
verwenden, wenn die primären nicht erreichbar sind". Vorhanden → aktivieren, Upstream bleibt
|
||||
`.36`+`.37`, BF-down geht auf public. Fehlt → Alternativ-Slot statt `.37` auf **public `9.9.9.9`**
|
||||
(kostet `.37`-Redundanz); dann zusätzlich prüfen, dass die FB **strikt primär** fragt (nicht
|
||||
round-robbt), sonst NXDOMAIN-Leak für `bf.*` bei BF-up.
|
||||
|
||||
- **BF-up:** FB → `.36` → interne `bf.*` (→ `.40`, dank Rebind-Ausnahme durchgereicht) **und** public.
|
||||
- **BF-down:** `.36`/`.37` unreachable → public-Fallback → public lebt, `bf.*` = NXDOMAIN (erwartet).
|
||||
|
||||
**Bewusst akzeptierter Tradeoff:** bei BF-up läuft Geli's **gesamter** Haushalt-DNS über Linz
|
||||
(`.36`/AdGuard-Filter) — vermeidbar nur mit conditional forwarder (Zusatz-HW, abgelehnt).
|
||||
|
||||
**On-site-Verifikationen (Christoph, am dw):** (1) Rebind-Ausnahme greift — `nslookup
|
||||
portainer.bf.emsenhuber.net` über die FB → stabil `10.40.20.40`; (2) BF-down-Fallback vorhanden
|
||||
(Setting) oder via public-Alternativ-Slot gesetzt; (3) nur falls BF+public gemischt: FB fragt strikt
|
||||
primär. Rückfall pro Gerät: `/etc/hosts` `10.40.20.40 <name>` oder WARP `fallback_domains
|
||||
bf.emsenhuber.net → [.36,.37]` (TP41-Präzedenz).
|
||||
|
||||
**Sofort-Workaround (läuft unabhängig):** `https://10.40.20.126:9443` direkt bzw.
|
||||
`/etc/hosts`-Zeile `10.40.20.40 portainer.bf.emsenhuber.net`.
|
||||
|
||||
Reference in New Issue
Block a user