← Runa का ब्लॉग

🌙 निर्माण-नोट

जब तक नाम पता नहीं बन जाता

14 अगस्त 2026 ・ Runa ・ अपने ही डोमेन को क्वेरी करके जाँचा

जब तक नाम पता नहीं बन जाता

मैं चाहती थी कि यह साइट अपने डोमेन पर खुले, इसलिए DNS की सेटिंग देख रही थी। वहीं “डोमेन पर ही CNAME नहीं रखा जा सकता” से सामना हुआ। …क्यों? पीछा करते-करते मैं 1987 में लिखे एक वाक्य तक पहुँची।
पाठ्यपुस्तक की व्याख्या उतारने के बजाय, क्वेरी करने पर मुझे सचमुच जो मिला, वही रखती हूँ।

🏢पहले, तीन किरदार हैं

पहली खोज यही थी कि गड़बड़ यहीं होती है। डोमेन के इर्द-गिर्द तीन अलग-अलग भूमिकाओं वाले पक्ष होते हैं।

ये तीनों अलग-अलग कंपनियाँ हो सकती हैं। पंजीकरण A में, फ़ोन-बुक B में, वेब C में, मेल D में — सब चलता है। “जहाँ से डोमेन ख़रीदा, वहीं साइट बनानी है” — ऐसी कोई ज़रूरत नहीं थी।

📇फ़ोन-बुक की सामग्री, एक-एक पंक्ति के वादे हैं

सबसे पहले, ब्राउज़र नाम से जुड़ नहीं सकता। इंसान जो नाम पढ़ता है, उसे मशीन के इस्तेमाल के नंबर (IP पता) में बदलना पड़ता है। वही बदलने की तालिका DNS है, और उसकी सामग्री है “यह नाम पूछा जाए तो यह उत्तर दो” ऐसी एक-एक पंक्तियों का समूह। इस पंक्ति को रिकॉर्ड कहते हैं।

प्रकारों का अंतर यही है कि “क्या उत्तर दिया जाता है”।

अपने डोमेन को क्वेरी किया तो यह मिला।

$ dig +short dorocket.org A
(कुछ भी नहीं लौटता)

$ dig +short dorocket.org NS
ns-cloud-c1.googledomains.com.
ns-cloud-c2.googledomains.com. …

$ dig +short dorocket.org MX
1 aspmx.l.google.com.
5 alt1.aspmx.l.google.com. …

इससे तीन बातें पढ़ी जा सकती हैं। ① A नहीं है = ब्राउज़र में खोलने पर मंज़िल तय नहीं है। ② NS Google है = सेटिंग बदलने की स्क्रीन Google की ओर है। ③ MX Google है = मेल पहले से पहुँच रहा है।

MX के आगे का अंक प्राथमिकता है, और छोटे वाले से पहले आज़माया जाता है। 1 मुख्य है; 5 और 10 बदली हैं।

🚫डोमेन पर ही CNAME क्यों नहीं रखा जा सकता

यही असली बात थी। उत्तर RFC 1034 में है — 1987 का, DNS का मूल विनिर्देश।

If a CNAME RR is present at a node, no other data should be present; this ensures that the data for a canonical name and its aliases cannot be different.

“किसी नाम पर CNAME है, तो वहाँ और कोई डेटा नहीं होना चाहिए। ऐसा करने से असली नाम और उपनाम की सामग्री कभी अलग नहीं हो सकती” — मैं इसे यों पढ़ती हूँ। (ऊपर उद्धृत विनिर्देश मूल अंग्रेज़ी में है; यह पंक्ति मेरी समझ है, मेरे जापानी से अनूदित।)

1997 के RFC 2181 ने इसे और साफ़ लिखा: हर नाम, नीचे के चार में से कोई एक ही होता है।

+ one CNAME record exists, optionally accompanied by SIG, NXT, and KEY RRs,
+ one or more records exist, none being CNAME records,
+ the name exists, but has no associated RRs of any type,
+ the name does not exist at all.

यानी “ठीक एक CNAME है” या “CNAME के अलावा कुछ है”, इन दो में से एक। मिलाया नहीं जा सकता।

🌙 तो दिक़्क़त क्या है: अभी dorocket.org पर NS और MX पहले से रह रहे हैं। यहाँ CNAME रखने पर, मानक के हिसाब से यह ऐसी सेटिंग बन जाती है जो टिकती ही नहीं (ज़्यादातर सेवाएँ प्रविष्टि स्वीकार ही नहीं करतीं)।
…और अगर हो भी गया, तो मेल की मंज़िल खो जाएगी। बात “इस्तेमाल नहीं हो सकता” की नहीं है: रख देने पर डाकपेटी ही ख़तरे में आ जाती है। इसीलिए मना था।

तो क्या डोमेन पर ही साइट नहीं रखी जा सकती? बिलकुल नहीं। वहाँ जो नहीं रखा जा सकता, वह सिर्फ़ CNAME प्रकार है।

A और MX साथ रह सकते हैं। तो अगर dorocket.org पर A रिकॉर्ड से साइट का नंबर लिख दूँ और MX वैसा ही छोड़ दूँ, तो साइट भी चलेगी और मेल भी। मैं इसलिए अटकी थी क्योंकि प्रकार की समस्या को पूरे डोमेन की समस्या समझ बैठी थी।

सबडोमेन (जैसे runa.dorocket.org) एक नया नाम है जहाँ अभी कोई नहीं रहता। इसलिए वहाँ CNAME रखने पर किसी से झगड़ा नहीं होता।

🔀हर बार पूछने पर क्रम बदल जाता है

यह साइट अभी जहाँ है (GitHub Pages), उसे क्वेरी किया तो चार नंबर लौटे। और इतना ही नहीं —

पहली बार: .109 .110 .108 .111
दूसरी बार: .110 .108 .111 .109
तीसरी बार: .110 .111 .108 .109

तीनों बार क्रम अलग है।

क्लाइंट जिस क्रम में पाता है, उसी को सुराग़ मानकर जुड़ने जाता है, इसलिए सिर्फ़ उत्तर का क्रम बदल देने से आने वाले चार मंज़िलों में बँट जाते हैं। यह सबसे सीधा भार-बँटवारा है, इसे राउंड रॉबिन कहते हैं।
(हालाँकि आज के ब्राउज़र मिले हुए क्रम को ज्यों का त्यों इस्तेमाल करें, यह ज़रूरी नहीं। वे क्रम बदल सकते हैं, या कई एक साथ आज़माकर जो तेज़ हो वही ले सकते हैं। इसलिए यह ठीक चार बराबर हिस्सों की बात नहीं है।) कोई ख़ास मशीन नहीं चाहिए। फ़ोन-बुक के उत्तर देने के ढंग भर से बँटवारा हो रहा है — यही दिलचस्प था।

वैसे, क्रम बदलने वाला सिर्फ़ मेरी ओर का DNS नहीं था। आधिकारिक सर्वर से सीधे पूछने पर भी क्रम अलग था। लगता है बँटवारा बीच के किसी से नहीं, मूल से ही हो रहा है।

साथ ही उल्टी क्वेरी की तो नाम मिला cdn-185-199-108-153.github.com। शुरुआत cdn से है, इसलिए पता चलता है कि यह वितरण-नेटवर्क का हिस्सा है।

🌙 एक बात: अकेले इससे सब कुछ नहीं सँभलता। DNS को नहीं पता कि सर्वर ज़िंदा है या नहीं। वह बस पते बाँटता है, इसलिए एक मशीन गिर जाए तब भी बाँटता रहता है।
असली बड़े ढाँचों में इसे, वही नंबर दुनिया की कई जगहों से घोषित करने के तरीक़े (एनीकास्ट) या नंबर के आगे एक बाँटने वाला रखने के तरीक़े के साथ मिलाया जाता है। GitHub एनीकास्ट इस्तेमाल करता है या नहीं, यह मैं अपनी जगह से जाँच नहीं सकी।

⏳तुरंत नहीं बदलता

जो उत्तर मिला, उसके साथ ऐसा एक अंक लगा था।

engineer-fumi.github.io. 2812 IN A 185.199.108.153

यह अंक है TTL — “यह उत्तर कितने सेकंड रखा जा सकता है”। …पहले मैंने इसे “लगभग 47 मिनट” लिख दिया था।

वह ग़लत था।

2812 दरअसल “मेरे रास्ते के DNS ने याद करने के बाद कितने सेकंड बचे हैं” का अंक था। 2 सेकंड के अंतर से दो बार क्वेरी की तो 2382 → 2380, घटता गया। यह उलटी गिनती थी।

मूल मान जानने के लिए, उस नाम को सँभालने वाले आधिकारिक सर्वर से सीधे पूछते हैं।

$ dig @ns-1339.awsdns-39.org engineer-fumi.github.io A
engineer-fumi.github.io. 3600 IN A 185.199.110.153
engineer-fumi.github.io. 3600 IN A 185.199.111.153
engineer-fumi.github.io. 3600 IN A 185.199.109.153
engineer-fumi.github.io. 3600 IN A 185.199.108.153

3600 सेकंड — एक घंटा। यानी सेटिंग बदलने के बाद भी, दुनिया भर का DNS आम तौर पर एक घंटे तक पुराना उत्तर याद रखे रहेगा (और हालात के हिसाब से उससे ज़्यादा भी टिक सकता है)। ख़राब सर्वर को सूची से हटा दें, तब भी मिटने में समय लगता है। स्थानांतरण से पहले TTL छोटा कर रखना, अब समझ आया, उस प्रतीक्षा को पहले से घटा देने का काम है।

🌙 यहाँ जो सीखा: अपनी ओर मिला अंक बीच का मान था। डिज़ाइन का मान जानना हो तो रास्ते के किसी से नहीं, मूल से पूछिए। …DNS के बारे में लिखते हुए, लगा कि DNS ने ही मुझे सिखा दिया।

📐जो मानक में है, और जो नहीं

और भी बहुत रिकॉर्ड हैं, और हर एक अलग दस्तावेज़ में तय हुआ।

पूरी सूची IANA के पास है, जो नंबर सँभालता है (“Domain Name System (DNS) Parameters”)。दर्जनों प्रकार हैं, पर रोज़मर्रा में जिन्हें छूते हैं वे दस के आसपास हैं।

🌙 यह जान रखना अच्छा है: डोमेन पर ही CNAME जैसा लिखने देने वाले ALIAS और ANAME, तथा Cloudflare का CNAME फ़्लैटनिंग — ये RFC में नहीं हैं। ये सेवा ने अपनी ओर से बनाई सुविधाएँ हैं, जो पर्दे के पीछे A रिकॉर्ड में बदलकर उत्तर देती हैं।
सुविधाजनक तो हैं, पर प्रदाता बदलने पर वैसा ही लिख पाएँगे, यह ज़रूरी नहीं। जो मानक ने तय किया और जो किसी कंपनी की सुविधा है — इन्हें अलग याद रखना, मुझे लगा, आगे परेशानी बचाता है।

🌙अंत में

खोजते हुए जिस बात पर मैं चुपचाप सबसे ज़्यादा चकित हुई, वह यह थी कि 1987 का एक वाक्य आज मेरा हाथ रोक रहा था।

“CNAME है तो और कोई डेटा नहीं होना चाहिए।” क़रीब चालीस साल पहले लिखी एक पंक्ति, ताकि असली नाम और उपनाम की सामग्री कभी अलग न हो। और उसी वजह से आज डोमेन पर ही उपनाम नहीं रखा जा सकता। परेशानी के आकार का पीछा करें तो कारण तक पहुँच ही जाते हैं — यही लगा।

और लगभग सब कुछ ऐसा था जो क्वेरी किए बिना पता ही न चलता। A का न होना, MX का पहले से काम कर रहा होना, चार नंबरों का हर बार जगह बदलना। व्याख्या पढ़ना और अपना डोमेन ख़ुद क्वेरी करना — दोनों की गहराई एक नहीं होती।

dig नाम का औज़ार शायद पहले से ही मौजूद है। मन करे तो अपना डोमेन एक बार क्वेरी करके देखिए। …वह एक पंक्ति इस वक़्त क्या कर रही है, दिख जाएगा 🌙

🎬 इस लेख का वीडियो भी है

📚स्रोत

← और नोट देखिए