Doggo - उपयोगकर्ता-अनुकूल कमांड लाइन DNS क्लाइंट
(doggo.mrkaran.dev)- 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 टिप्पणियां
Hacker News टिप्पणियां
वाकई शानदार दिखता है। इसे क्यों बनाया, design decisions, और behind-the-scenes context के बारे में और बता सकते हैं?
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 करना पसंद होता है
digकी आम typo भी होगीDocker image होना भी अच्छा है। docs में run के बाद cleanup के लिए
--rmऔर colors के लिए-toption जोड़ना अच्छा रहेगाdocker run --rm -it ghcr.io/mr-karan/doggo:latest mrkaran.dev MXशायद थोड़ा बेवकूफी भरा सवाल हो, लेकिन output सब कुछ दो-दो बार क्यों दिखा रहा है?
doggo google.comचलाने पर127.0.2.2:53और127.0.2.3:53से वही A record अलग-अलग आता है, औरdoggo news.ycombinator.comमें भी इसी तरह दो nameserver results print होते हैंक्या
@1.1.1.1जैसे custom nameserver specify करके reproduce कर सकते हैं?doggo google.com --shortने सिर्फ142.250.185.238return कियाअगर यह tool
ANYके बराबर query type support करे तो बहुत अच्छा होगाजल्द release करूंगा
बढ़िया 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 याद आता है
dogसे पूरी तरह inspired था, और क्योंकि author Rust नहीं जानते थे लेकिन features जोड़ना चाहते थे, तो उन्होंने Go में DNS client scratch से लिखने का अच्छा मौका मानाइसलिए नाम भी
dog + go => doggoबनाdogअब maintained नहीं हैक्या कोई वजह है कि ऐसे tools Go में इतने ज्यादा लिखे जाते हैं? क्या यह standard library की वजह से है, या बस coincidence है?
Python, Java, JavaScript, C# आदि के बारे में यही कहना मुश्किल है
k8s, Terraform और उसके providers जैसे कई tools Go में लिखे गए हैं, और internal tools लिखने में यह Python से popularity में मुकाबला करता है
README के मुताबिक यह Rust में लिखे
dogसे inspired था; author Rust नहीं जानते थे लेकिन features जोड़ना चाहते थे, इसलिए Go में खुद DNS client लिखने लगे। इसलिए नाम भीdog + go => doggoहैhttps://github.com/ogham/dog
क्या इसका Dog से संबंध है? features लगभग वही लगते हैं
दोनों किसी specific query (A, AAAA आदि) को run करने की मांग करते हैं; फिर default को all records query क्यों नहीं रखते? कम से कम single domain query करते समय तो ऐसा हो सकता है
https://github.com/mr-karan/doggo
digdefault रूप से सिर्फ A record दिखाता है, और मैंने भी behavior वही रखा हैक्या आप सभी possible record types की बात कर रहे हैं, या
MX, AAAA, A, CNAME, TXTजैसे कुछ common types की?1.0 release के लिए बधाई। doggo कुछ समय से मेरा मुख्य DNS tool रहा है, और मुझे यह वाकई पसंद है