@ स्वेन का जवाब, संपादन के साथ, पहले से ही सही है लेकिन सीधे चीजों को वाक्यांश देना है।
टीएल; डीआर हाँ अंडरस्कोर CNAME
दोनों पक्षों पर एक रिकॉर्ड में मान्य है , नीचे पढ़ें क्यों।
RFC 1034 और अन्य लोग "डोमेन नाम" के आधार पर रिकॉर्ड परिभाषित करते हैं जो किसी भी वर्ण के साथ लेबल होते हैं, इसलिए शामिल हैं _
।
लेकिन कुछ रिकॉर्ड में मालिक के नाम और / या संसाधन डेटा (RDATA) के लिए सख्त नियम हैं। केवल एक होस्टनाम स्वीकार किया जाएगा और वास्तव में नियम अब हैं (वे अतीत में आराम से थे जहां एक होस्टनाम एक अंक के साथ शुरू नहीं हो सकता था) जिसे आप किसी भी ASCII पत्र (कोई मामला संवेदनशीलता), किसी भी ASCII अंक और हाइफ़न का उपयोग कर सकते हैं , प्लस कुछ अतिरिक्त स्थिति नियम: आरंभ या अंत में कोई हाइफ़न और स्थिति 3 और 4 पर कोई डबल हाइफ़न नहीं (आईडीएन के लिए "आरक्षण" के कारण xn--
जो उस रूप के हैं जो केवल मामले की अनुमति है)।
उदाहरण के लिए A
या AAAA
रिकॉर्ड के मालिक का नाम होस्टनाम है, डोमेन नाम नहीं। तो
test.example.com A 192.0.2.1
मान्य है कि ये सभी क्यों नहीं हैं:
_test.example.com A 192.0.2.1
-test.example.com A 192.0.2.1
test-.example.com A 192.0.2.1
named-checkzone
कार्यक्रम के साथ चीजों का परीक्षण करना आसान है ( bind
नेमसेवर सॉफ्टवेयर का हिस्सा लेकिन इसका उपयोग और अलग से स्थापित किया जा सकता है और अन्य नेमसर्वर के पास समान जांच उपकरण हो सकते हैं और संभवतः इसके लिए ऑनलाइन इंटरफेस भी हैं), बस एक फ़ाइल में रिकॉर्ड रखें और चलाएं चालू करो:
$ cat z1.txt
test.example.com. 1 IN A 192.0.2.1
_test.example.com. 1 IN A 192.0.2.1
-test.example.com. 1 IN A 192.0.2.1
test-.example.com. 1 IN A 192.0.2.1
$ /usr/local/sbin/named-checkzone example.com z1.txt
z1.txt:2: _test.example.com: bad owner name (check-names)
z1.txt:3: -test.example.com: bad owner name (check-names)
z1.txt:4: test-.example.com: bad owner name (check-names)
( IN
टीटीएल से पहले की संख्या , यह यहाँ हमारी समस्या से संबंधित नहीं है, लेकिन एक रिकॉर्ड के सिंटैक्स सत्यापन को पारित करने के लिए आवश्यक है)।
अन्य रिकॉर्ड के लिए, यह विपरीत है: क्योंकि NS
मालिक पर कोई प्रतिबंध नहीं हैं, लेकिन डेटा "लक्ष्य" पर प्रतिबंध हैं। डेटा केवल एक होस्टनाम हो सकता है, डोमेन नाम नहीं, क्योंकि आपको आधिकारिक नामांकितों को इंगित करने की आवश्यकता है जो भौतिक होस्ट हैं जो DNS प्रश्नों का जवाब देते हैं।
अब इसके बारे में CNAME
, खंड 3.6 में RFC 1034 के प्रासंगिक उद्धरण हैं:
"स्वामी: वह डोमेन नाम जहां RR पाया जाता है।" जिसका अर्थ है डिफ़ॉल्ट रूप से कोई भी नाम, न केवल एक होस्टनाम (CNAME रिकॉर्ड के स्रोत के रूप में)
"RDATA: जो कि संसाधन का वर्णन करने वाले प्रकार और कभी-कभी वर्ग निर्भर डेटा है:"
"CNAME एक डोमेन नाम।"
तो दोनों एक के मालिक CNAME
(इसके बाईं ओर क्या है), और इससे जुड़े संसाधन डेटा, इसके गंतव्य / लक्ष्य (इसके दाईं ओर क्या है) डोमेन नाम हैं, और केवल होस्टनाम नहीं हैं। मूल रूप से किसी भी चरित्र, _
दोनों पक्षों पर अनुमति दी जाती है।
फिर से, परीक्षण करना आसान है named-checkzone
:
$ cat z2.txt
_foo 1 CNAME _bar
$ /usr/local/sbin/named-checkzone example.com z2.txt
zone example.com/IN: has 0 SOA records
zone example.com/IN: has no NS records
zone example.com/IN: not loaded due to errors.
कोई त्रुटि नहीं CNAME
( जो भी अन्य त्रुटियों के बारे में उम्मीद की जाती है, क्योंकि मेरे नकली क्षेत्र में मैंने कोई क्षेत्र SOA
या NS
रिकॉर्ड नहीं रखा है जैसे कि एक सच्चे क्षेत्र में होगा)