अपडेट पर वापस जाएँ
New releaseAug 7, 2026

dnsglobe v0.5.0

वैश्विक DNS प्रसार जाँचकर्ता TUI — अपने टर्मिनल में विश्व मानचित्र पर, दुनिया भर के 34 सार्वजनिक रिज़ॉल्वरों में एक DNS रिकॉर्ड के प्रसार को देखें

साझा करें

dnsglobe

crates.io dnsglobe dnsglobe-bin license

आपके टर्मिनल के लिए एक वैश्विक DNS प्रसार जाँचकर्ता — एक Rust TUI जो दुनिया भर के 34 सार्वजनिक DNS रिज़ॉल्वरों को समानांतर में क्वेरी करता है, उनके उत्तरों की तुलना करता है, और आपके रिकॉर्ड के प्रसार को विश्व मानचित्र पर दिखाता है।

dnsglobe डेमो — 34 रिज़ॉल्वरों पर एक डोमेन के A और NS रिकॉर्ड की जाँच, EDNS क्लाइंट सबनेट के साथ, क्लाइंट सबनेट को साइकिल करते हुए, फिर विश्व मानचित्र को घूमते हुए ग्लोब में बदलते हुए

dnschecker.org / whatsmydns.net के जैसा सोचें, लेकिन आपके टर्मिनल में, वॉच मोड के साथ: एक जाँच शुरू करें और यह तब तक फिर से पोल करता रहता है जब तक रिकॉर्ड हर जगह प्रसारित नहीं हो जाता।

रिज़ॉल्वर वैश्विक anycast नेटवर्क (Google, Cloudflare, Quad9), उत्तरी अमेरिका, यूरोप, रूस, मध्य पूर्व, पूर्वी एशिया और दक्षिणी गोलार्ध (Telstra AU, SafeSurfer NZ, UOL BR) तक फैले हैं — प्रत्येक को सीधे क्वेरी किया जाता है, इसलिए आप हर सर्वर का रिकॉर्ड के प्रति अपना वर्तमान दृष्टिकोण देखते हैं।

प्रत्येक रिज़ॉल्वर को सीधे क्वेरी किया जाता है (कोई कैश नहीं, EDNS0, छोटे किए गए उत्तरों के लिए TCP फ़ॉलबैक), इसलिए आप जो देखते हैं वह प्रत्येक सर्वर का रिकॉर्ड के प्रति अपना वर्तमान दृष्टिकोण होता है। किसी भी रिकॉर्ड को साझा करने वाले उत्तर एक साथ समूहित किए जाते हैं — इसलिए round-robin DNS (प्रत्येक रिज़ॉल्वर एक IP पूल के अलग-अलग सबसेट को कैश कर रहा है) एक सुसंगत उत्तर के रूप में गिना जाता है, न कि बीस परस्पर विरोधी उत्तरों के रूप में। प्रसार गेज दिखाता है कि कितने रिज़ॉल्वर बहुमत समूह में हैं; बाहरी उत्तरों को ≠ DIFFERS के रूप में चिह्नित किया जाता है जब सभी परिणाम आ जाते हैं।

तालिका 80-कॉलम वाले टर्मिनल में फिट बैठती है: हर रिज़ॉल्वर का पूरा IPv4 पता, round-trip समय, TTL और समाप्ति काउंटडाउन बरकरार रहता है, और प्रति-पंक्ति निर्णय बाएँ हाशिये में ग्लिफ़ (✓ ≠ ! ↻ ∅ ✗) तक सिकुड़ जाता है ताकि उत्तर को स्थान मिलता रहे। काउंटडाउन जानबूझकर मोटा है — 45s, 4m, 2h, 1d — क्योंकि एक मिनट से ऊपर सेकंडों का एक कॉलम असंगत रूप से टिकना शोर है।

जब टर्मिनल काफी चौड़ा होता है, तो दाईं ओर दुनिया का एक दृश्य दिखाई देता है जिसमें प्रति रिज़ॉल्वर एक डॉट होता है, स्थिति के अनुसार रंगीन (हरा सहमत, मैजेंटा भिन्न, लाल त्रुटि, पीला प्रगति पर)। दृश्य चौड़ाई के अनुसार ढल जाता है: ≥157 कॉलम वाले टर्मिनलों को एक सपाट विश्व मानचित्र मिलता है, संकरे (≥131 कॉलम) को एक घूमता हुआ 3D ग्लोब मिलता है, जिसे कम कॉलम चाहिए; सीमा के पार आकार बदलने पर एक दूसरे में रूपांतरित हो जाता है। Ctrl+O मैन्युअल रूप से मानचित्र/ग्लोब टॉगल करता है, और --view auto|map|globe (या कॉन्फ़िग फ़ाइल में view = "...") सीधे एक शैली को बाध्य करता है।

हर रिज़ॉल्वर से पूछा जाता है कि उसकी कौन-सी साइट आपको उत्तर दे रही है, NSID (RFC 5001) के माध्यम से — एक EDNS विकल्प जिसे उत्तर देने वाला नोड अपने नाम से भरता है (gpdns-yul, yul01, res721.qyul1, jfk-dns1-02.inet.centurylink.net)। इसे प्रति-ऑपरेटर समर्थन की आवश्यकता नहीं होती, इसलिए आपके द्वारा स्वयं जोड़े गए रिज़ॉल्वर भी एक साइट की रिपोर्ट कर सकते हैं। जहाँ NSID कोई स्थान नहीं बताता, वहाँ ऑपरेटर-विशिष्ट पहचान क्वेरीज़ काम संभाल लेती हैं: Quad9 (TXT id.server.on.quad9.net), Cloudflare (CH TXT id.server), Google (egress सबनेट TXT o-o.myaddr.l.google.com के माध्यम से, जो TXT locations.publicdns.goog से मिलाया जाता है), OpenDNS (TXT debug.opendns.com), CleanBrowsing, और Neustar UltraDNS। खोजी गई साइट Loc कॉलम में →YUL-शैली कोड के रूप में दिखती है, और रिज़ॉल्वर का मानचित्र डॉट उस POP पर चला जाता है जो वास्तव में आपकी क्वेरीज़ को सेवा दे रहा है।

उपयोग

इंस्टॉल करें:

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

चलाएँ:

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

EDNS क्लाइंट सबनेट (ECS)

--ecs (या कॉन्फ़िग फ़ाइल में ecs = [...]) हर क्वेरी में एक EDNS क्लाइंट सबनेट विकल्प (RFC 7871) जोड़ता है, ताकि GeoDNS ज़ोन उस क्लाइंट नेटवर्क के लिए उत्तर दें, न कि रिज़ॉल्वर के अपने दृष्टिकोण से। सबनेट CIDR या केवल IP होते हैं; अधिकांश सार्वजनिक रिज़ॉल्वर अधिकतम /24 (IPv4) या /56 (IPv6) का उपयोग करते हैं। कई सबनेट कॉन्फ़िगर होने पर, Ctrl+N सक्रिय सबनेट को साइकिल करता है (साथ ही एक बंद स्थिति) और तुरंत फिर से क्वेरी करता है; --once हर सबनेट चलाता है और प्रति-सबनेट अभिसरण सारांश के साथ समाप्त होता है। जो रिज़ॉल्वर जानबूझकर ECS को अनदेखा करते हैं (Cloudflare, Quad9, …) उन्हें NO ECS टैग किया जाता है — उनका उत्तर संदर्भ के लिए दिखाया जाता है लेकिन प्रसार प्रतिशत से बाहर रखा जाता है, क्योंकि यह उनके अपने स्थान का वर्णन करता है, न कि जाँचे गए नेटवर्क का।

कुंजियाँ

कुंजीकार्य
टाइप / ⌫ / Delडोमेन संपादित करें
←/→ / Home/Endडोमेन फ़ील्ड में कर्सर ले जाएँ
Enterजाँच शुरू करें और देखें: हर 30 सेकंड में फिर से पोल करता है जब तक प्रसार 100% तक नहीं पहुँच जाता
Ctrl+Rदेखना रोकें या फिर से शुरू करें
Tab / Shift-Tabरिकॉर्ड प्रकार चुनें (A, AAAA, CNAME, MX, NS, TXT, SOA) और फिर से क्वेरी करें
↑/↓ / PgUp/PgDnरिज़ॉल्वर तालिका में हाइलाइट ले जाएँ (अनुसरण करने के लिए स्क्रॉल करता है)
+इस सत्र के लिए एक रिज़ॉल्वर जोड़ें (नाम, IP, वैकल्पिक स्थान और मानचित्र स्थिति)
Ctrl+Xइस सत्र के लिए हाइलाइट किए गए रिज़ॉल्वर को हटाएँ
Ctrl+Sतालिका क्रम बदलें: रिज़ॉल्वर / स्थान / ping / स्थिति / उत्तर
Ctrl+Oविश्व दृश्य को सपाट मानचित्र और घूमते ग्लोब के बीच टॉगल करें
Ctrl+NECS क्लाइंट सबनेट साइकिल करें और फिर से क्वेरी करें (केवल जब --ecs/कॉन्फ़िग एक सेट करता है)
Ctrl+Uडोमेन साफ़ करें
Esc / Ctrl+Cबाहर निकलें

कॉन्फ़िगरेशन

वैकल्पिक रूप से, ~/.config/dnsglobe/config.toml पर एक TOML कॉन्फ़िग फ़ाइल के साथ अपने स्वयं के रिज़ॉल्वर जोड़ें — या अंतर्निहित सूची को पूरी तरह से बदल दें ($XDG_CONFIG_HOME/dnsglobe/config.toml यदि सेट हो)। एक अलग पथ का उपयोग करने के लिए DNSGLOBE_CONFIG सेट करें।

# 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"

[[resolvers]]
name = "Corp DNS"        # required — shown in the Resolver column
ip = "10.0.0.53"         # required — IPv4 or IPv6, queried on port 53
location = "HQ"          # optional — Loc column / location sort
lat = 40.7               # optional — position on the world map;
lon = -74.0              #            omit both to leave it off the map

[[resolvers]]
name = "NS1 (public)"
ip = "198.51.100.53"

# Optionally recolor the UI. Every key is optional; unset roles keep their
# defaults. Colors are ANSI names ("lightcyan"), 256-color indexes ("208"),
# or hex ("#ff8700" — needs truecolor support).
[theme]
accent   = "lightcyan"    # borders, titles, cursor, anycast sites
agree    = "lightgreen"   # answers matching the majority; fast latency
differ   = "lightmagenta" # answers disagreeing with the majority
error    = "white on lightred"
                          # ERR / SERVFAIL / NONE; slow latency. Written
                          # "<fg> on <bg>", it becomes a filled badge on the
                          # status glyph and word — legible on any background;
                          # a plain color like "lightred" drops the badge
pending  = "lightyellow"  # queries in flight; middling latency
stale    = "208"          # caches serving an answer past its own TTL
upstream = "lightblue"    # refetched but upstream still has the old data
muted    = "faint"        # labels, hints, countdowns, quiet borders —
                          # "faint" dims your terminal's default foreground;
                          # set a color if your terminal renders faint poorly
coastline = "gray"        # map/globe land outline
grid      = "244"         # globe graticule and limb

अमान्य कॉन्फ़िग (गलत IP, अज्ञात कुंजी, अपरिचित रंग, गलत ecs सबनेट, बिना lon के lat, बिना किसी रिज़ॉल्वर के replace = true) स्टार्टअप पर दोषपूर्ण प्रविष्टि का नाम बताते हुए रिपोर्ट किया जाता है।

नोट्स

  • कई रिज़ॉल्वर anycast नेटवर्क हैं, इसलिए उत्तर देने वाला नोड आपके सबसे निकट का होता है। जो नेटवर्क अपने नोड की पहचान करते हैं — NSID या पहचान क्वेरी के माध्यम से — वे वास्तविक उत्तर देने वाली साइट (→YUL) की रिपोर्ट करते हैं; बाकी के लिए स्थान कॉलम ऑपरेटर का होम क्षेत्र होता है।
  • अंतर्निहित रिज़ॉल्वर सूची src/resolvers.rs में रहती है; इसे पुनर्निर्माण किए बिना विस्तारित या बदलने के लिए ऊपर दी गई कॉन्फ़िग फ़ाइल का उपयोग करें। प्रत्येक अंतर्निहित प्रविष्टि को बाहरी क्वेरीज़ का उत्तर देने के लिए सत्यापित किया गया था; कई प्रसिद्ध ISP रिज़ॉल्वर (और, विशेष रूप से, सभी प्रमुख अफ्रीकी रिज़ॉल्वर) अपने नेटवर्क के बाहर से क्वेरीज़ को अस्वीकार करते हैं, इसलिए उन्हें शामिल नहीं किया जा सकता।

Nix

यह प्रोजेक्ट उन उपयोगकर्ताओं के लिए वैकल्पिक Nix flake आउटपुट प्रदान करता है जो पहले से Nix का उपयोग करते हैं। Flake स्रोत से निर्माण करता है।

# Latest source from default branch
nix run github:514-labs/dnsglobe

# Specific release (uses the flake at that git tag)
nix run github:514-labs/dnsglobe/v0.4.0

# Named outputs (if the flake exposes them): #latest, #source
nix run github:514-labs/dnsglobe#source

# Build / develop
nix build github:514-labs/dnsglobe
nix develop github:514-labs/dnsglobe

Flake packages.<system>.default, apps.<system>.default, devShells.<system>.default, और overlays.default उजागर करता है।

उसी Nix वर्कफ़्लो के माध्यम से अपडेट करें जिसका उपयोग आपने इंस्टॉल करने के लिए किया था। प्रोफ़ाइल इंस्टॉल के लिए, nix profile list चलाएँ और फिर nix profile upgrade <index-or-name> चलाएँ। Flake इनपुट के लिए, अपने स्वयं के flake में nix flake update <repo> चलाएँ और पुनर्निर्माण करें।

Devbox

प्रतिलिपि योग्य विकास वातावरण के लिए, Devbox का उपयोग करें:

# Install Devbox first (if not already installed)
curl -fsSL https://get.jetify.dev/devbox | bash

# Initialize the environment
devbox shell

# Build the project
devbox run build

या Devbox को Homebrew के माध्यम से इंस्टॉल करें:

brew install jetify-com/devbox/devbox

❤️ के साथ 514.ax पर काम करने वाले लोगों द्वारा निर्मित।

श्रेणियाँ