DNS Toys (2022) लॉन्च
(dns.toys)- dns.toys एक DNS सर्वर है जो DNS queries को कमांड इंटरफ़ेस की तरह इस्तेमाल करता है, जिससे टर्मिनल में सिर्फ
digके जरिए छोटे utilities चलाए जा सकते हैं - यह world time, weather, 70 से अधिक unit conversions, और daily exchange rate आधारित currency conversion जैसे काम तुरंत कर सकता है, जिनके लिए वरना search page खोलना झंझट भरा होता है
- यह developers के लिए CIDR range calculation, UUID v4·NanoID generation, Unix epoch conversion, और base conversion जैसी सुविधाएँ भी देता है
- कॉल करने का तरीका
@dns.toysनिर्दिष्ट करना है, और Bash·Fish·Zsh मेंdyalias जोड़कर इसे और छोटा किया जा सकता है - यह किसी hardcore production tool से अधिक टर्मिनल के भीतर जल्दी जाँच और calculation की सुविधा व मज़े पर केंद्रित सेवा है, इसलिए simple lookup tasks के लिए अच्छी तरह फिट बैठती है
DNS queries से चलने वाली टर्मिनल utility
- dns.toys कई functions को DNS server के रूप में उपलब्ध कराता है, और domain format वाली queries को
digसे भेजकर चलाया जाता है -
समय·मौसम·रूपांतरण
dig mumbai.time @dns.toys: शहर का मौजूदा समय देखेंdig 2023-05-28T14:00-mumbai-paris/fr.time @dns.toys: शहरों के बीच time zone conversiondig mumbai.weather @dns.toys: शहर का मौसम देखेंdig 42km-mi.unit @dns.toys: 70 से अधिक units के बीच conversiondig 100USD-INR.fx @dns.toys: daily exchange rate आधारित currency conversiondig -4 ip @dns.toys: IPv4 या IPv6 address देखें
-
calculation·developer features
dig 10.0.0.0/24.cidr @dns.toys: subnet में पहला और आखिरी usable IP calculate करेंdig 100dec-hex.base @dns.toys: hex, dec, oct, bin के बीच base conversiondig 784783800.epoch @dns.toys: Unix timestamp को readable date में बदलेंdig 5.uuid @dns.toys: UUID v4 generate करेंdig 5.10.nanoid @dns.toys: तय लंबाई और संख्या के साथ NanoID generate करें
-
मज़ेदार features
dig pi @dns.toys: Pi के अंक दिखाएँdig 3d20/2.dice @dns.toys: तय संख्या और sides के साथ dice roll करेंdig 2.coin @dns.toys: coin tossdig 1-100.rand @dns.toys: range के भीतर random number generate करेंdig excuse @dns.toys: random developer excuse दिखाएँ
छोटे तरीके से कॉल करने के लिए shell alias
dyshort command जोड़ने परdy mumbai.weatherकी तरह इसे और संक्षेप में चलाया जा सकता है- Bash:
alias dy="dig +short @dns.toys"को~/.bashrcमें जोड़ें - Fish:
alias dy="dig +noall +answer +additional $argv @dns.toys"को~/.config/fish/config.fishमें जोड़ें - Zsh:
alias dy="dig +short @dns.toys"को~/.zshrcमें जोड़ें
- Bash:
- जो उपयोगकर्ता टर्मिनल में बहुत समय बिताते हैं, वे भारी search pages खोले बिना unit conversion या मौसम जाँच जैसे काम तेज़ी से कर सकते हैं
1 टिप्पणियां
Hacker News की राय
पहले जब मैं अपना dynamic DNS utility खुद बना रहा था, तो अपनी मशीन का IP address “भरोसेमंद तरीके से” निकालने के लिए इस्तेमाल की गई एक छोटी-सी trick याद आ गई
OpenDNS resolver (
resolver1.opendns.comआदि)myip.opendns.comको असली IP address में resolve कर देते हैं। कनेक्शन की स्थिति के हिसाब से A या AAAA record मिलता है, और इन resolvers के IP आम तौर पर anycast IP होते हैं, इसलिए मैं मानना चाहता था कि यह किसी ऐसे central HTTP service को request करने से थोड़ा तेज़ होगा जो कभी भी डाउन हो सकता हैबेशक OpenDNS भी कभी भी गायब हो सकता है, लेकिन मुझे लगा कि वह जोखिम उन ढेरों “मेरा IP address क्या है?” HTTP services से बेहतर है। मैंने यह भी सुना है कि DNS को मूल रूप से domain names से ज़्यादा व्यापक तरह के data को संभालने के लिए सोचा गया था; TXT records जैसी चीज़ें उसी की निशानी हैं। यह site DNS से मिलने वाली उपयोगिता को अच्छी तरह दिखाती है
dig @ns1-1.akamaitech.net ANY whoami.akamai.net +shortdig @ns1.google.com TXT o-o.myaddr.l.google.com +shortcurl -4si0A "" https://www.youtube.com|sed -n '/ip=/{s/.*ip=//;s/\.*//p;};'|uniqOpenDNS और Cloudflare में किसके डाउन होने की संभावना ज़्यादा है? नीचे वाला तरीका किसी भी Cloudflare IP address पर काम करता है और TLS की भी ज़रूरत नहीं है
printf 'GET /cdn-cgi/trace HTTP/1.0\r\nHost: cloudflare.com |nc -vvn 104.18.25.13 80 |sed -n /ip=/pCloudflare IP list
curl -4si0A "" https://api.cloudflare.com/client/v4/ipsसे ली जा सकती है। बहुत सारी websites client IP address को webpage या HTTP header में दिखाती हैं, और उनका “What is my IP” site होना ज़रूरी नहीं हैCloudflare से कुछ खास requests को block करने वाली website भी एक विकल्प है। उदाहरण के लिए, StackOverflow को User-Agent header के बिना HTTP request भेज दें
curl -si40A "" http://stackoverflow.com|sed -n '/cf-footer-ip">/{s/.*">//;s/<.*//p;}'आपका IP address लाखों websites पर दिख जाता है, फिर भी “What is my IP” sites सफल रहीं—यह काफी हैरान करने वाला है। DNS की उपयोगिता के बारे में https://www.netmeister.org/blog/dns-rrs.html भी देखने लायक है
हालांकि Cloudflare द्वारा चलाया जाने वाला https://icanhazip.com/ भी है, और यह ज़्यादा stable होने की संभावना रखता दिखता है
https://ipv4.icanhazip.com/
https://ipv6.icanhazip.com/
मैं Julia Evans का बड़ा fan हूं, और उन्होंने DNS से जुड़े कुछ उपयोगी toys भी बनाए हैं
https://jvns.ca/
https://dns-lookup.jvns.ca/
https://messwithdns.net/
संबंधित posts
DNS Toys - https://news.ycombinator.com/item?id=31704789 - जून 2022, 104 comments
DNS Toys: Useful utilities and services over DNS - https://news.ycombinator.com/item?id=31637226 - जून 2022, 1 comment
इस project के author ने हाल ही में यह presentation दी थी, जिसमें project कैसे बना, इस पर मज़ेदार background story आती है
https://youtu.be/ANmFZ8rbmnc?si=ndEWH4xY2oxJuEnB
अजीब बात है कि
dig A0.0,0.0/0.0,90.0.aerial @dns.toysऔर
dig A0.0,0.0/90.0,0.0.aerial @dns.toysदोनों
TXT "aerial distance = 10007.06 KM"return करते हैंभूमध्य रेखा की परिधि 40,075.017km है और ध्रुवीय परिधि 40,007.863km है। पृथ्वी को काल्पनिक गाय के आकार का मान लेने पर भी कोई बड़ा नुकसान नहीं है, और इससे ellipsoid surface पर दो points के बीच shortest distance निकालने वाली मुश्किल series से बचा जा सकता है
थोड़ा संबंधित तौर पर, UK ऑपरेटरों की सूची DNS lookup के रूप में उपलब्ध कराने वाली एक सेवा भी है। यह भी वही idea है कि DNS सेवा के ज़रिए non-DNS data दिया जाए
https://www.num.uk/
हालांकि roadmap देखें तो लगता है कि शायद अब service maintain नहीं की जा रही
IN(internet) class आज evolution में खड़े ऊँचे देवदार जैसी लगती है, लेकिन Cambrian दौर में CH(chaos) और HS(hesiod) classes भी थीं। उन projects के उद्देश्य और goals को फिर से देखना worthwhile है
बल्कि आज का abuse ज़्यादा इस तरह का है कि 10-millisecond retransmission window या qname minimization जैसी चीज़ों में cloud-based web services, यानी “happy eyeballs”, के लिए ही optimize किया जाता है और बाकी सबकी बलि दे दी जाती है। उदाहरण के लिए bufferbloat जैसी चीज़ पर भी ज़्यादा ध्यान नहीं दिया जाता लगता है। A/AAAA resolution के बाहर भी एक बिल्कुल अलग दुनिया है
Internet conferences के corridors में pocket protector लगाए दो लोगों को तलवारबाज़ी करते, या कम से कम pencils से एक-दूसरे को चुभाते देखना भी rare नहीं है। RFC का मतलब “Request For Comments” है, और BCP(Best Current Practice) को रोज़मर्रा में ignore किया जाता है
पसंद आया। बस काश
digहर platform पर installed होताWindows पर इस्तेमाल नहीं कर सकते, यह हमेशा irritate करता है, और check किया तो Debian में भी default से शामिल नहीं है। बेशक इसे आसानी से install किया जा सकता है। OpenBSD और Mac OS X में है, तो वह अच्छी बात है
https://dns.lookup.dog/
digही इस्तेमाल करें।nslookupयाhostभी काम करते हैंWindows में भी कोई न कोई DNS lookup tool तो होगा ही
क्या इस thread के बेवकूफ़ के लिए इसे पाँच साल के बच्चे को समझाने जैसा समझा सकते हो? पता है कि यह मज़े के लिए है, लेकिन समझ नहीं आ रहा। यह कैसे काम करता है, यह भी नहीं जानता, और जानता हूँ कि यह मेरी ignorance की वजह से है
उदाहरण के लिए
dig 100USD-INR.fx @dns.toysका मतलब है “dns.toysको DNS server के रूप में इस्तेमाल करके100USD-INR.fxresolve करो।” तब यह असली answer वाला TXT record लौटाता है.fxकोई existing domain नहीं है, इसलिए यह किसी की impersonation भी नहीं है, और अगर@dns.toysको@8.8.8.8जैसी किसी चीज़ से बदल दें तो कुछ भी resolve नहीं होगाnews.ycombinator.comजैसी site के बारे में सोचें। Browser उस नाम से किसी special server पर IP lookup करता है। उस domain में मोटे तौर पर कुछ ऐसा stored हो सकता हैA IP = ...1AAAA IP = ...2यहाँ
Arecord type है। लेकिन दूसरे record types भी होते हैंTXT gender = 'male'DNS के बारे में कुछ assumptions हैं जिन्हें आम तौर पर implicitly true माना जाता है। लोग DNS को दूसरी services तक जाने वाले switchboard की तरह इस्तेमाल करते हैं, और switchboard के अंदर की values आम तौर पर static होती हैं
यहाँ domain के हिसाब से बदलने वाली value return की जाती है, इसलिए यह पूरी तरह अलग काम कर रहा है। ऐसा करने के लिए अपना बनाया हुआ DNS server चाहिए, लेकिन DNS protocol खुद काफी simple है
यह hack इसलिए smart है क्योंकि DNS सबसे widely used और supported protocols में से एक है, इसलिए लगभग सभी mainstream programming libraries इसे support करती हैं और operating systems में पहले से मौजूद command-line tools भी बहुत हैं। DNS के ऊपर service के रूप में provide करने से minimum dependencies के साथ tools और libraries से access किया जा सकता है
साथ ही यह DNS को सामान्य internet services के switchboard के बजाय सीधे application service की तरह इस्तेमाल करवाता है, और DNS system को कैसे इस्तेमाल करना चाहिए इस बारे में common assumptions को उलट देता है। मौजूदा software से जोड़ते समय complex integration की ज़रूरत नहीं होती, और DNS requests को सामान्य web API से ज़्यादा intuitive भी माना जा सकता है। censorship resistance के लिहाज़ से भी इसके फायदे होने की अच्छी संभावना है
जैसे HTTP से web server को request भेजते हैं, वैसे ही DNS protocol से DNS server के साथ interact करते हैं। यह
telnetसे HTTP या SMTP request की नकल करने जैसा है—किसी खास ruleset के साथ किसी खास तरह के server से बात करनायह server result देने से पहले कुछ calculation करता है, और यही बात अधिकांश DNS records से अलग है जिन्हें आम तौर पर static expected किया जाता है
google.comलिखता है और response पढ़ता हैअगर server DNS server के रूप में ठीक से configured है, तो वह appropriate DNS records फिर text के रूप में respond करता है।
google.comload balancing में इस्तेमाल होने वाले किसी subdomain की ओर इशारा करने वाला CNAME है, इसलिए serverCNAME blabla.google.comजैसी किसी चीज़ से answer कर सकता है और चाहे तोblabla.google.comको भी साथ में resolve करके extra request की मेहनत बचा सकता हैकिसी RFC में defined DNS protocol यह तय करता है कि requests और responses एक खास तरीके से हों। उनमें से एक बात यह है कि non-existent top-level domain, जैसे अभी मौजूद न होने वाला
.time, के लिए server कोnxdomainrespond करना चाहिए। लेकिन practical तौर पर server को current time जैसी कोई भी value respond करने से रोकने वाला कोई technical mechanism नहीं हैसामान्य तौर पर, users की रक्षा करने वाली इकलौती चीज़ बस यह expectation है कि public हो या private, DNS operator झूठा data return नहीं करेगा। HTTPS इसे कुछ हद तक mitigate करता है, लेकिन DNS records खुद असल में असीम रूप से forgeable हैं और उन्हें पलटने का कोई तरीका नहीं है
हैरानी है कि ये features
dns.toysके किसी subdomain के रूप में provide नहीं किए जाते। तब special name server इस्तेमाल किए बिना भी resolve हो जातेआजकल मैं मुख्य रूप से यह इस्तेमाल करता हूँ
https://addr.tools/
https://dnscheck.tools/
https://myip.addr.tools/help