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/hosts/pinix/localServices/dns/acme-challenge.zone
pijukka 67a2a6541e host(pinix): Wildcard-Zertifikat ausgestellt, Propagationspruefung aus
Let's Encrypt hat *.lukasrosier.com und lukasrosier.com ausgestellt
(issuer YE1, gueltig bis 11.12.2026), per DNS-01 gegen das eigene BIND,
ohne fremden API-Token. Delegiert ist nur _acme-challenge, der Apex samt
MX, SPF und DKIM bleibt bei Cloudflare.

Der Weg dorthin ging ueber drei Fehlerbilder, die alle dieselbe Ursache
hatten, und das ist der eigentliche Merkposten: von innerhalb dieses
Netzes ist die Propagationsvorpruefung nicht durchfuehrbar.

1. Systemresolver (Mango) liefert die SOA, auf NS-Abfragen aber nichts --
   sein Forwarder bedient NS nicht. lego: "could not determine
   authoritative nameservers".
2. Eigenes unbound: SERVFAIL. Es rekursiert bis zur Delegation, die auf
   die oeffentliche Mango-Adresse zeigt, und die ist von innen nicht
   erreichbar, weil die DNAT-Regeln reflection=0 tragen.
3. Fremder Resolver (Quad9) findet die NS korrekt, aber lego fragt den
   autoritativen Server danach direkt ab -- und landet wieder auf der
   oeffentlichen Adresse, wo Mangos eigener Forwarder statt unseres BIND
   antwortet: "did not return the expected TXT record".

Also dnsPropagationCheck = false. Das ist keine Nachlaessigkeit: pruefen
kann nur Let's Encrypt von aussen, und genau das passiert. Dass die
Delegation von aussen traegt, ist unabhaengig belegt -- Quad9 und Google
liefern beide NS, SOA und TXT aus unserem BIND. Wieder einschaltbar,
sobald am Mango Hairpin fuer Port 53 aktiv ist.

Nebenbefund, ebenfalls im Kommentar: der NS einer delegierten Zone muss
mit der Delegation im Elternteil uebereinstimmen. Die Challenge-Zone
nannte zuerst ns1.lukasrosier.com, das oeffentlich ueber den Wildcard auf
blunix' IPv4 auflaest -- kein Nameserver. Jetzt ipv6-test.0ff.space,
derselbe Name wie in der Cloudflare-Delegation, dessen AAAA der
mango-dns-Timer nachfuehrt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Aw4viUJyXGP8ANocHiF15q
2026-09-12 19:28:28 +02:00

25 lines
1.2 KiB
Dns

; Saatdatei fuer die dynamische Challenge-Zone. Wird per systemd-tmpfiles
; einmalig nach /var/lib/bind kopiert, falls dort noch nichts liegt, und
; danach nie wieder ueberschrieben -- BIND schreibt in diese Zone (TXT der
; ACME-Challenge plus Journal), sie ist also veraenderlicher Zustand und
; kann nicht im Nix-Store liegen.
;
; Die Hauptzone bleibt dadurch unveraendert deklarativ: nur dieser winzige
; Unterbaum ist beschreibbar, und der TSIG-Schluessel darf laut
; update-policy in bind.nix ausschliesslich hier TXT-Eintraege setzen.
$TTL 60
@ IN SOA ipv6-test.0ff.space. hostmaster.lukasrosier.com. (
1 ; serial, BIND zaehlt bei dynamischen Updates selbst weiter
3600 ; refresh
600 ; retry
604800 ; expire
60 ; negative cache TTL
)
@ IN NS ipv6-test.0ff.space.
; SOA-MNAME und NS nennen absichtlich ipv6-test.0ff.space und nicht
; ns1.lukasrosier.com. Der NS einer delegierten Zone muss mit der Delegation
; im Elternteil uebereinstimmen, sonst sucht legos Propagationspruefung den
; dort genannten Namen -- und ns1.lukasrosier.com loest oeffentlich ueber den
; Wildcard auf blunix' IPv4 auf, das kein Nameserver ist. Fehlerbild:
; "could not determine authoritative nameservers".