Files
dns/todo.md
Blake Ridgway 63acce1b93 Initial commit
2026-03-21 17:59:57 -05:00

2.1 KiB

arcline-dns — DNS Propagation Checker

Query a domain across global resolvers and diff the results. Indispensable during DNS migrations — customers see exactly where propagation stands.

Stack

  • Language: Go
  • Distribution: single static binary
  • No runtime dependencies

Resolver list (embedded, configurable)

  • Cloudflare: 1.1.1.1, 1.0.0.1
  • Google: 8.8.8.8, 8.8.4.4
  • OpenDNS: 208.67.222.222
  • Quad9: 9.9.9.9
  • Authoritative nameservers for the queried domain (auto-detected)
  • Configurable: --resolvers flag or .arcline-dns.yaml

Features

  • Query A, AAAA, CNAME, MX, TXT, NS, SOA record types
  • Parallel queries across all resolvers
  • Diff mode: highlight resolvers that disagree with the majority
  • TTL display per resolver
  • --watch N: re-query every N seconds, show changes live
  • Color-coded: green = matches majority, red = differs, yellow = no response

CLI interface

arcline-dns example.com
arcline-dns example.com --type MX
arcline-dns example.com --type A --watch 30
arcline-dns example.com --resolvers 8.8.8.8,1.1.1.1
arcline-dns example.com --json

Output format

$ arcline-dns example.com --type A

  domain   example.com
  type     A
  queried  6 resolvers

  resolver            answer          ttl    status
  ─────────────────── ─────────────── ────── ───────
  1.1.1.1 (CF)        203.0.113.42    300s   [OK]
  1.0.0.1 (CF)        203.0.113.42    300s   [OK]
  8.8.8.8 (Google)    203.0.113.42    300s   [OK]
  8.8.4.4 (Google)    203.0.113.42    300s   [OK]
  208.67.222.222      203.0.113.10    300s   [DIFF]
  9.9.9.9 (Quad9)     203.0.113.42    300s   [OK]

  propagation   5/6 resolvers agree

Tasks

  • Project scaffold
  • Embedded resolver list
  • Parallel DNS query engine (net package, raw UDP)
  • Record type parser (A, AAAA, CNAME, MX, TXT, NS, SOA)
  • Diff/majority logic
  • Table renderer (terminal + JSON)
  • --watch mode with delta display
  • Authoritative NS auto-detection
  • Cross-compile Makefile
  • README