
Verificador global de propagação de DNS com TUI — veja um registro DNS se propagar por 34 resolvedores públicos em todo o mundo, em um mapa-múndi no seu terminal
Um verificador global de propagação de DNS para o seu terminal — uma TUI em Rust que consulta 34 resolvedores DNS públicos ao redor do mundo em paralelo, compara as respostas e mostra a propagação do seu registro em um mapa-múndi.

Pense no dnschecker.org / whatsmydns.net, mas no seu terminal, com o modo de observação: inicie uma verificação e ele fará novas consultas até que o registro tenha se propagado em todos os lugares.
Os resolvedores abrangem as redes anycast globais (Google, Cloudflare, Quad9), América do Norte, Europa, Rússia, Oriente Médio, Leste Asiático e o hemisfério sul (Telstra AU, SafeSurfer NZ, UOL BR) — cada um consultado diretamente, para que você veja a visão atual de cada servidor sobre o registro.
Cada resolvedor é consultado diretamente (sem cache, EDNS0, fallback TCP para respostas truncadas), então o que você vê é a visão atual de cada servidor sobre o registro. Respostas que compartilham qualquer registro são agrupadas — assim, DNS round-robin (cada resolvedor armazenando em cache um subconjunto diferente de um pool de IPs) conta como uma resposta consistente, não vinte conflitantes. O medidor de propagação mostra quantos resolvedores estão no grupo majoritário; os discrepantes são sinalizados com ≠ DIFFERS quando todos os resultados chegam.
A tabela cabe em um terminal de 80 colunas: o endereço IPv4 completo de cada resolvedor, o tempo de ida e volta, o TTL e a contagem regressiva de expiração permanecem intactos, e o veredito de cada linha se reduz ao glifo na margem esquerda (✓ ≠ ! ↻ ∅ ✗) para que a resposta mantenha o espaço. A contagem regressiva é propositalmente grosseira — 45s, 4m, 2h, 1d — pois uma coluna de segundos dessincronizados é ruído acima de um minuto.
Quando o terminal é largo o suficiente, uma visão do mundo aparece à direita com um ponto por resolvedor, colorido por status (verde concorda, magenta difere, vermelho erro, amarelo em andamento). A visão se adapta à largura: terminais com ≥157 colunas recebem um mapa-múndi plano; os mais estreitos (≥131 colunas) recebem um globo 3D giratório, que precisa de menos colunas; redimensionar através do limite transforma um no outro. Ctrl+O alterna mapa/globo manualmente, e --view auto|map|globe (ou view = "..." no arquivo de configuração) força um estilo diretamente.
Cada resolvedor é questionado sobre qual de seus sites está respondendo para você, via NSID (RFC 5001) — uma opção EDNS que o nó respondedor preenche com seu próprio nome (gpdns-yul, yul01, res721.qyul1, jfk-dns1-02.inet.centurylink.net). Isso não exige suporte por operador, então resolvedores que você adicionar também podem informar um site. Quando o NSID não indica nenhum lugar, as consultas de identificação específicas do operador assumem: Quad9 (TXT id.server.on.quad9.net), Cloudflare (CH TXT id.server), Google (sub-rede de saída via TXT o-o.myaddr.l.google.com comparada com TXT locations.publicdns.goog), OpenDNS (TXT debug.opendns.com), CleanBrowsing e Neustar UltraDNS. O site descoberto aparece na coluna Loc como códigos no estilo →YUL, e o ponto do resolvedor no mapa se move para o POP que está de fato atendendo suas consultas.
Instalação:
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
Execução:
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 (ou ecs = [...] no arquivo de configuração) anexa uma opção EDNS Client Subnet (RFC 7871) a cada consulta, para que zonas GeoDNS respondam para aquela rede de cliente em vez do ponto de observação do próprio resolvedor. Sub-redes são CIDRs ou IPs simples; a maioria dos resolvedores públicos usa no máximo /24 (IPv4) ou /56 (IPv6). Com várias sub-redes configuradas, Ctrl+N alterna a ativa (além de uma posição off) e faz novas consultas imediatamente; --once executa cada sub-rede e termina com um resumo de convergência por sub-rede. Resolvedores que ignoram deliberadamente o ECS (Cloudflare, Quad9, …) são marcados como NO ECS — a resposta deles é exibida para referência, mas excluída do percentual de propagação, pois descreve a localização deles próprios, não a rede sondada.
| Key | Action |
|---|---|
| type / ⌫ / Del | editar domínio |
| ←/→ / Home/End | mover o cursor no campo de domínio |
| Enter | iniciar a verificação e observar: re-consulta a cada 30 s até a propagação atingir 100% |
| Ctrl+R | parar ou retomar a observação |
| Tab / Shift-Tab | selecionar o tipo de registro (A, AAAA, CNAME, MX, NS, TXT, SOA) e re-consultar |
| ↑/↓ / PgUp/PgDn | mover o destaque pela tabela de resolvedores (rola para acompanhar) |
| + | adicionar um resolvedor para esta sessão (nome, IP, localização opcional e posição no mapa) |
| Ctrl+X | remover o resolvedor destacado desta sessão |
| Ctrl+S | alternar a ordenação da tabela: resolvedor / localização / ping / status / resposta |
| Ctrl+O | alternar a visão do mundo entre mapa plano e globo giratório |
| Ctrl+N | alternar a sub-rede de cliente ECS e re-consultar (somente quando --ecs/config tiver definido uma) |
| Ctrl+U | limpar domínio |
| Esc / Ctrl+C | sair |
Opcionalmente, adicione seus próprios resolvedores — ou substitua a lista embutida por completo — com um arquivo de configuração TOML em ~/.config/dnsglobe/config.toml ($XDG_CONFIG_HOME/dnsglobe/config.toml se definido). Defina DNSGLOBE_CONFIG para usar um caminho diferente.
# 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"