
Globaler DNS-Propagation-Checker TUI — beobachte die Verbreitung eines DNS-Eintrags über 34 öffentliche Resolver weltweit auf einer Weltkarte in deinem Terminal
Ein globaler DNS-Propagationsprüfer für dein Terminal — eine Rust-TUI, die 34 öffentliche DNS-Resolver weltweit parallel abfragt, ihre Antworten vergleicht und die Propagation deines Records auf einer Weltkarte anzeigt.

Denk an dnschecker.org / whatsmydns.net, aber in deinem Terminal, mit Watch-Modus: Starte eine Prüfung und es fragt wiederholt ab, bis der Record überall propagiert ist.
Die Resolver erstrecken sich über die globalen Anycast-Netzwerke (Google, Cloudflare, Quad9), Nordamerika, Europa, Russland, den Nahen Osten, Ostasien und die südliche Hemisphäre (Telstra AU, SafeSurfer NZ, UOL BR) — jeder wird direkt abgefragt, sodass du die aktuelle Sicht jedes Servers auf den Record siehst.
Jeder Resolver wird direkt abgefragt (kein Cache, EDNS0, TCP-Fallback bei abgeschnittenen Antworten), du siehst also die aktuelle Sicht jedes Servers auf den Record. Antworten, die sich einen beliebigen Record teilen, werden gruppiert — Round-Robin-DNS (jeder Resolver cached eine andere Teilmenge eines IP-Pools) zählt also als eine konsistente Antwort, nicht als zwanzig widersprüchliche. Die Propagationsanzeige zeigt, wie viele Resolver in der Mehrheitsgruppe sind; Ausreißer werden mit ≠ DIFFERS markiert, sobald alle Ergebnisse vorliegen.
Die Tabelle passt in ein 80-Spalten-Terminal: Die vollständige IPv4-Adresse jedes Resolvers, Round-Trip-Zeit, TTL und Ablauf-Countdown bleiben erhalten, und das Urteil pro Zeile schrumpft zum Glyphen am linken Rand (✓ ≠ ! ↻ ∅ ✗), damit die Antwort den Platz behält. Der Countdown ist bewusst grob — 45s, 4m, 2h, 1d — denn eine Sekundenspalte, die aus dem Takt tickt, ist oberhalb einer Minute nur Rauschen.
Wenn das Terminal breit genug ist, erscheint rechts eine Weltansicht mit einem Punkt pro Resolver, je nach Status eingefärbt (Grün stimmt überein, Magenta weicht ab, Rot Fehler, Gelb in Bearbeitung). Die Ansicht passt sich der Breite an: Terminals mit ≥157 Spalten bekommen eine flache Weltkarte, schmalere (≥131 Spalten) einen rotierenden 3D-Globus, der weniger Spalten benötigt; ein Größenwechsel über den Schwellenwert verwandelt eine in die andere. Mit Ctrl+O schaltest du Karte/Globus von Hand um, und mit --view auto|map|globe (oder view = "..." in der Konfigurationsdatei) erzwingst du einen Stil direkt.
Jeder Resolver wird gefragt, welcher seiner Standorte dir antwortet, per NSID (RFC 5001) — eine EDNS-Option, die der antwortende Knoten mit seinem eigenen Namen befüllt (gpdns-yul, yul01, res721.qyul1, jfk-dns1-02.inet.centurylink.net). Das benötigt keine betreiberspezifische Unterstützung, sodass auch selbst hinzugefügte Resolver einen Standort melden können. Wo NSID keinen Ort nennt, übernehmen die betreiberspezifischen Identifikationsabfragen: Quad9 (TXT id.server.on.quad9.net), Cloudflare (CH TXT id.server), Google (Egress-Subnetz via TXT o-o.myaddr.l.google.com abgeglichen mit TXT locations.publicdns.goog), OpenDNS (TXT debug.opendns.com), CleanBrowsing und Neustar UltraDNS. Der ermittelte Standort erscheint in der Loc-Spalte als Code im Stil →YUL, und der Kartenpunkt des Resolvers wandert zum POP, der deine Anfragen tatsächlich bedient.
Installation:
brew install 514-labs/tap/dnsglobe # Homebrew (macOS/Linux)
cargo install dnsglobe # from crates.io
yay -S dnsglobe # from archlinux aur (compile from source)
yay -S dnsglobe-bin # from archlinux aur (install prebuilt binary)
nix run github:514-labs/dnsglobe # Nix flakes (builds from source)
# or grab a prebuilt binary from the GitHub Releases page
Ausführen:
dnsglobe # start empty, type a domain
dnsglobe example.com # query immediately and watch
dnsglobe example.com TXT # same, starting on TXT records
dnsglobe --once example.com TXT # no TUI: print results, exit (for scripts)
dnsglobe example.com --ecs 203.0.113.0/24 # see the zone as that client network does
dnsglobe --once example.com --ecs 203.0.113.0/24,198.51.100.0/24
# one table per subnet + a convergence summary
--ecs (oder ecs = [...] in der Konfigurationsdatei) fügt jeder Abfrage eine EDNS-Client-Subnet-Option (RFC 7871) hinzu, sodass GeoDNS-Zonen für dieses Client-Netzwerk antworten statt vom eigenen Standpunkt des Resolvers aus. Subnetze sind CIDRs oder bloße IPs; die meisten öffentlichen Resolver verwenden höchstens /24 (IPv4) oder /56 (IPv6). Wenn mehrere Subnetze konfiguriert sind, wechselt Ctrl+N das aktive Subnetz (plus eine Aus-Position) und fragt sofort erneut ab; --once durchläuft jedes Subnetz und endet mit einer Zusammenfassung der Konvergenz pro Subnetz. Resolver, die ECS bewusst ignorieren (Cloudflare, Quad9, …), werden mit NO ECS markiert — ihre Antwort wird zur Referenz angezeigt, aber vom Propagationsprozentsatz ausgeschlossen, da sie ihren eigenen Standort beschreibt, nicht das getestete Netzwerk.
| Key | Aktion |
|---|---|
| Eingabe / ⌫ / Del | Domain bearbeiten |
| ←/→ / Home/End | Cursor im Domain-Feld bewegen |
| Enter | Prüfung starten und beobachten: fragt alle 30 s erneut ab, bis die Propagation 100 % erreicht |
| Ctrl+R | Beobachten stoppen oder fortsetzen |
| Tab / Shift-Tab | Record-Typ auswählen (A, AAAA, CNAME, MX, NS, TXT, SOA) und neu abfragen |
| ↑/↓ / PgUp/PgDn | Markierung durch die Resolver-Tabelle bewegen (scrollt mit) |
| + | Resolver für diese Sitzung hinzufügen (Name, IP, optional Standort und Kartenposition) |
| Ctrl+X | markierten Resolver für diese Sitzung entfernen |
| Ctrl+S | Tabellensortierung wechseln: Resolver / Standort / Ping / Status / Antwort |
| Ctrl+O | Weltansicht zwischen flacher Karte und rotierendem Globus umschalten |
| Ctrl+N | ECS-Client-Subnetz wechseln und neu abfragen (nur wenn --ecs/Konfiguration eines eingerichtet hat) |
| Ctrl+U | Domain leeren |
| Esc / Ctrl+C | Beenden |
Optional kannst du mit einer TOML-Konfigurationsdatei unter ~/.config/dnsglobe/config.toml ($XDG_CONFIG_HOME/dnsglobe/config.toml, falls gesetzt) eigene Resolver hinzufügen — oder die eingebaute Liste vollständig ersetzen. Setze DNSGLOBE_CONFIG, um einen anderen Pfad zu verwenden.
# Set to true to replace the built-in list instead of extending it —
# e.g. to watch propagation across your own nameservers only.
replace = false
# EDNS Client Subnet(s) to query with (Ctrl+N cycles; --ecs overrides).
ecs = ["203.0.113.0/24"]
# World-view style: auto (default — pick by terminal width), map, or globe.
# The --view flag overrides this.
view = "auto"