2 पॉइंट द्वारा GN⁺ 2024-07-02 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Doggo एक कमांड लाइन क्लाइंट है जो DNS lookup परिणामों को रंग-कोडिंग और टेबल फ़ॉर्मेट में दिखाता है, ताकि टर्मिनल में आउटपुट इंसानों के लिए आसानी से पढ़ा जा सके
  • ऑटोमेशन वातावरण में JSON output का उपयोग किया जा सकता है, और response time मापने तथा debug mode के साथ समस्या विश्लेषण में भी यह उपयोगी है
  • DNS over HTTPS, TLS, QUIC, TCP, UDP, DNSCrypt जैसे कई transport protocol को एक ही टूल में संभाला जा सकता है
  • यह EDNS Client Subnet, NSID, DNS Cookies, EDNS Padding, Extended DNS Errors जैसे EDNS फीचर्स और glue record प्रोसेसिंग को सपोर्ट करता है
  • यह Linux, macOS, Windows, FreeBSD, NetBSD पर चलता है, और web interface तथा shell completion भी देता है, इसलिए इसे लोकल CLI और ब्राउज़र दोनों में इस्तेमाल किया जा सकता है

टर्मिनल में पढ़ने में आसान DNS lookup

  • Doggo खुद को इंसानों के लिए बना कमांड लाइन DNS क्लाइंट बताता है
  • डिफ़ॉल्ट output रंग-कोडिंग और टेबल-आधारित फ़ॉर्मेट में होता है, जिससे DNS response को जल्दी स्कैन करना आसान हो जाता है
  • अगर scripting या parsing की ज़रूरत हो, तो JSON output का उपयोग किया जा सकता है
  • यह debug mode और response time measurement साथ में देता है, जिससे केवल lookup result ही नहीं बल्कि उसकी कार्य-प्रक्रिया भी देखी जा सकती है

समर्थित DNS protocol और डेटा

  • यह कई DNS transport protocol को सपोर्ट करता है
    • DNS over HTTPS
    • DNS over TLS
    • DNS over QUIC
    • DNS over TCP
    • DNS over UDP
    • DNSCrypt
  • EDNS से जुड़े फीचर्स भी व्यापक रूप से शामिल हैं
    • EDNS Client Subnet(ECS) के जरिए location-aware response
    • Name Server Identifier(NSID)
    • DNS Cookies
    • EDNS Padding
    • Extended DNS Errors(EDE)
  • यह additional section के glue record और सहायक DNS डेटा को प्रोसेस कर सकता है
  • Internationalized Domain Names(IDN) के लिए अपने-आप punycode conversion सपोर्ट करता है
  • Reverse DNS lookup और AA, AD, CD, DO जैसे कई DNS flags को भी संभाल सकता है

कॉन्फ़िगरेशन, resolver, और रनटाइम वातावरण

  • resolv.conf या command line arguments में ndots और search सेटिंग्स का उपयोग किया जा सकता है
  • कई resolver निर्दिष्ट किए जा सकते हैं, और query strategy भी उपयोगकर्ता के अनुसार कस्टमाइज़ की जा सकती है
  • यह IPv4 और IPv6 दोनों को सपोर्ट करता है
  • doggo.mrkaran.dev पर web interface उपलब्ध है
  • zsh और fish के लिए shell completion उपलब्ध है
  • समर्थित प्लेटफ़ॉर्म Linux, macOS, Windows, FreeBSD, NetBSD हैं

1 टिप्पणियां

 
GN⁺ 2024-07-02
Hacker News टिप्पणियां
  • वाकई शानदार दिखता है। इसे क्यों बनाया, design decisions, और behind-the-scenes context के बारे में और बता सकते हैं?

    • मैंने इसे सीखने और hobby side project के तौर पर बनाया। 2021 में मैं K8s clusters के साथ काफी काम कर रहा था, तभी ndots के बारे में पता चला, और मुझे ऐसा easy-to-use DNS client बनाना था जिसमें host environment की वजह से unexpected behavior न हो
      मैंने इसे Go में बनाया, जो मैं मुख्य रूप से इस्तेमाल करता हूं, और जब तक बहुत जरूरी न हो external dependencies जोड़ना नहीं चाहता था, इसलिए CLI framework इस्तेमाल नहीं किया। मुझे खास तौर पर रंग और formatting वाले help text को render करने वाली छोटी help.go utility बनाने वाला हिस्सा पसंद है
      समय के साथ अच्छे external contributions भी मिले, खासकर @jedisct1 द्वारा DNSCrypt support जोड़ना बड़ा योगदान था। v1.0 release एक साल से ज्यादा समय तक टलता रहा—life, दूसरे projects और थोड़ी procrastination का mix था; आखिर पिछले हफ्ते deadline तय की और push किया
      ndots पर लेख: https://mrkaran.dev/posts/ndots-kubernetes/
  • नाम का चुनाव बढ़िया है। doggo को dig करना पसंद होता है

    • आज पता चला कि dog भी है। शायद यह dig की आम typo भी होगी
  • Docker image होना भी अच्छा है। docs में run के बाद cleanup के लिए --rm और colors के लिए -t option जोड़ना अच्छा रहेगा
    docker run --rm -it ghcr.io/mr-karan/doggo:latest mrkaran.dev MX

    • जिज्ञासा है, बिना dependencies वाली DNS CLI utility को Docker container बनाने के लिए इतनी मेहनत करने की क्या वजह है?
  • शायद थोड़ा बेवकूफी भरा सवाल हो, लेकिन output सब कुछ दो-दो बार क्यों दिखा रहा है?
    doggo google.com चलाने पर 127.0.2.2:53 और 127.0.2.3:53 से वही A record अलग-अलग आता है, और doggo news.ycombinator.com में भी इसी तरह दो nameserver results print होते हैं

    • ऐसा लगता है कि configured हर nameserver के लिए एक बार output आ रहा है। असल में ऐसा कम ही होता है, लेकिन वे अलग-अलग जवाब भी दे सकते हैं, शायद इसलिए
    • मैंने अपने AdGuard DNS server पर try किया तो सिर्फ एक entry आई। लगता है nameserver settings से जुड़ा है
      क्या @1.1.1.1 जैसे custom nameserver specify करके reproduce कर सकते हैं? doggo google.com --short ने सिर्फ 142.250.185.238 return किया
  • अगर यह tool ANY के बराबर query type support करे तो बहुत अच्छा होगा

  • बढ़िया project है। पिछले साल x-cmd pkg develop करते समय इसके बारे में पता चला था; तब latest version 0.5.7 था, अब 1.0.2 है, इसलिए version upgrade की जरूरत लगती है
    demo video भी है: https://x-cmd.com/pkg/doggo

  • https://github.com/ogham/dog याद आता है

    • doggo GitHub README के मुताबिक, यह Rust में लिखे dog से पूरी तरह inspired था, और क्योंकि author Rust नहीं जानते थे लेकिन features जोड़ना चाहते थे, तो उन्होंने Go में DNS client scratch से लिखने का अच्छा मौका माना
      इसलिए नाम भी dog + go => doggo बना
    • दुर्भाग्य से लगता है dog अब maintained नहीं है
  • क्या कोई वजह है कि ऐसे tools Go में इतने ज्यादा लिखे जाते हैं? क्या यह standard library की वजह से है, या बस coincidence है?

    • Go default रूप से आम तौर पर statically compiled binaries बनाता है। न runtime, न interpreter, न dependencies
      Python, Java, JavaScript, C# आदि के बारे में यही कहना मुश्किल है
    • cultural reason भी हो सकता है। Go की DevOps/cloud infra space में visibility बहुत है
      k8s, Terraform और उसके providers जैसे कई tools Go में लिखे गए हैं, और internal tools लिखने में यह Python से popularity में मुकाबला करता है
    • इस मामले में लगता है creator पहले से Go जानते थे, इसलिए वही इस्तेमाल किया
      README के मुताबिक यह Rust में लिखे dog से inspired था; author Rust नहीं जानते थे लेकिन features जोड़ना चाहते थे, इसलिए Go में खुद DNS client लिखने लगे। इसलिए नाम भी dog + go => doggo है
      https://github.com/ogham/dog
    • Go काम पूरा करवा देता है, और उसका output लंबे समय तक टिकता है
    • जाहिर है, क्योंकि इससे नाम में pun बनाया जा सकता है
  • क्या इसका Dog से संबंध है? features लगभग वही लगते हैं
    दोनों किसी specific query (A, AAAA आदि) को run करने की मांग करते हैं; फिर default को all records query क्यों नहीं रखते? कम से कम single domain query करते समय तो ऐसा हो सकता है
    https://github.com/mr-karan/doggo

    • यहां all records से आपका ठीक-ठीक मतलब क्या है? dig default रूप से सिर्फ A record दिखाता है, और मैंने भी behavior वही रखा है
      क्या आप सभी possible record types की बात कर रहे हैं, या MX, AAAA, A, CNAME, TXT जैसे कुछ common types की?
  • 1.0 release के लिए बधाई। doggo कुछ समय से मेरा मुख्य DNS tool रहा है, और मुझे यह वाकई पसंद है