Warum DNS-Prüfungen aus Russland, China und Taiwan fehlschlagen (und wie wir es behoben haben)

Manchmal schlägt eine DNS-Prüfung nicht wegen eines DNS-Fehlers fehl. Sie schlägt fehl, weil der Netzwerkpfad zum Resolver blockiert ist, bevor die Anfrage überhaupt losgeschickt wird — und keine Menge an Wiederholungen oder Resolver-Wechseln ändert daran etwas.

Das Problem, das wir gefunden haben

Direkte Tests vom Produktionshost aus, nicht nur theoretisch, zeigten, dass sein Netzwerk Port 53 (sowohl UDP als auch TCP), DoH und DoT zu Resolvern in Russland, China und Taiwan vollständig blockiert.

Das Ausmaß

40 Resolver waren betroffen — Yandex, 114DNS, AliDNS, Baidu, HiNet, Quad101, Rostelecom, MSK-IX und weitere liefen allesamt in ein Timeout. Nur DNSPod und KT antworteten direkt.

Warum eine andere Resolver-Liste das nicht beheben konnte

Das ist keine Frage, welche Resolver allgemein zuverlässig sind — es ist der eigene Netzwerkpfad des Hosts zu bestimmten Ländern, der auf einer Ebene blockiert ist, die keine Resolver-Whitelist erreicht. Zu ändern, welche Resolver abgefragt werden, bewirkt nichts, wenn die Verbindung selbst nie hinausgeht.

Die tatsächliche Lösung

Ein Cloudflare Worker (app/probe-worker) wiederholt die DNS-Anfrage über TCP/53 aus dem eigenen Netzwerk von Cloudflare, das nicht derselben Blockade unterliegt, und gibt die rohe Antwort an unser Backend zurück.

Welche Resolver über das Relais laufen

Sieben bestimmte Resolver werden auf diesem Weg geleitet — Yandex, 114DNS (zwei Adressen), AliDNS (zwei Adressen) und HiNet — über queryViaProbe in probe.go, und nur wenn die Umgebungsvariablen PROBE_URL und PROBE_TOKEN tatsächlich gesetzt sind. Ohne sie ändert sich nichts; jeder andere Resolver wird genau wie zuvor abgefragt.

Warum das kein offenes Proxy ist

Der Worker verlangt ein Bearer-Token und akzeptiert nur Anfragen für diese feste Liste von sieben Resolvern — er kann nicht genutzt werden, um beliebigen DNS-Verkehr irgendwohin sonst weiterzuleiten.

Die Grenzen des kostenlosen Plans, die das Design prägen

Cloudflares kostenloser Workers-Plan erlaubt 100.000 Anfragen pro Tag, 10 ms CPU-Zeit, 50 Unteranfragen und 6 gleichzeitige Verbindungen pro Aufruf — das ergibt etwa 3.500 Prüfungen pro Tag bei je 28 Worker-Aufrufen.

Eine Propagationsprüfung ausprobieren

Auf Ihrer Domain ausprobieren

Sehen Sie die Theorie in der Praxis — führen Sie DNS-Propagierungs-Checker für Ihre eigene Domain aus.