क्या CNAME रिकॉर्ड में _ (अंडरस्कोर) अवैध है?


9

हमारे होस्टर पर वेब इंटरफ़ेस पर DKIM कुंजी के लिए लंबे TXT रिकॉर्ड बनाने में हमें परेशानी हो रही है।

प्रत्येक पंक्ति केवल 256 वर्णों को स्वीकार कर सकती है।

हमने कई लाइनों की कोशिश की, फिर ("पहले और ")बाद में कुछ सुझाव के रूप में जोड़ने की कोशिश की । न काम करता है।

फिर हमने एक अन्य होस्टर पर रिकॉर्ड के लिए एक cname बनाने की कोशिश की, जहां हम DKIM TXT रिकॉर्ड बना सकते हैं।

लेकिन अब CNAMEरिकॉर्ड में गैरकानूनी नाम के बारे में वेबइंटरफेस शिकायत करता है ।

mail._domainkey.example.com TXTठीक है ठीक
mail._domainkey.example.com CNAMEनहीं है ठीक
mail.domainkey.example.com CNAMEहै, लेकिन हम जो चाहते हैं वह ठीक नहीं है।

क्या वेबस्टारफेस अभी हमें पागल करने के लिए दृढ़ है, या अंडरस्कोर करना वास्तव में "अवैध" है CNAME?


1
प्रदाता वेबरफेस को ठीक कर रहा है क्योंकि मैं यह लिख रहा हूं!
लेन्ने

जवाबों:


18

हां, DNS नाम (इसमें ए / एएएए भी शामिल है) केवल शामिल हो सकता है [0-9], [a-z], -, इसलिए अंडरस्कोर मान्य नहीं है। ध्यान दें कि एक TXT रिकॉर्ड एक होस्टनाम नहीं है, और यह प्रतिबंध इसके लिए लागू नहीं होता है। और एक अंतिम संपादन: -पहले पात्र के रूप में इस्तेमाल नहीं किया जा सकता है, इसलिए mail.-domainkey.our.domमान्य नहीं होगा।

https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_hostnames


अंतिम संपादन: मैं आंशिक रूप से गलत था। जब एक CNAME होस्टनाम के रूप में उपयोग किया जाता है, तो उपरोक्त प्रतिबंध लागू होते हैं। ऐसा प्रतीत होता है कि CNAME को DKIM संदर्भ में होस्टनाम नहीं माना जाता है और उस स्थिति में, _CNAME प्रविष्टि का एक मान्य भाग होना चाहिए। Https://stackoverflow.com/questions/13650233/underscore-in-cname-required-by-ses-not-allowed-by-registrar/26692491#2669249191 देखें


लेकिन क्या CNAME एक होस्टनाम है? कुछ दस्तावेज़ीकरण एक cname में अंडरस्कोर का उपयोग करने के लिए दिखाता है, इसलिए प्रकट रूप से यह काम करता है। kb.mailchimp.com/accounts/email-authentication/…
लेनन

इसके अलावा, MS Windows सक्रिय निर्देशिका-एकीकृत ज़ोन पर DNS प्रविष्टियों में अंडरस्कोर दिखाई देते हैं जो विंडोज़ डोमेन को कम से कम Microsoft के DNS प्रबंधन उपकरण में शामिल करते हैं, लेकिन मुझे यकीन नहीं है कि यदि वे अंडरस्कोर वास्तव में नाम का हिस्सा हैं और Windows DNS में बिना किसी समर्थन के है। अनुरोध, या यदि अंडरस्कोर केवल DNS प्रबंधन स्नैप-इन में दिखाई देते हैं और वास्तव में नामों का हिस्सा नहीं हैं।
टोड विलकॉक्स

ध्यान दें कि विकिपीडिया प्रविष्टि का हवाला डीएनएस नहीं इंटरनेट नामों के साथ है।
जिम बी

@ Lenne: एक CNAME एक मान्य होस्टनाम है क्योंकि यह होस्ट के लिए एक उपनाम है। @ToddWilcox: हाँ, यह ज्ञात है, और यह एक (जानबूझकर?) एमएस द्वारा युक्ति का उल्लंघन है, जिससे अन्य सिस्टमों को परेशानी नहीं होती है क्योंकि वे डीएनएस, डीएचसीपी, ... पैकेट में दिखाई देते हैं कानूनी नहीं होने के बावजूद।
mirabilos

2
@mirabilos "एक CNAME एक वैध होस्टनाम है", CNAME का कोई लक्ष्य (RDATA) एक डोमेन नाम है, न कि होस्टनाम (एक डोमेन नाम सभी संभावित होस्टनामों का एक सुपरसेट है)। _foo CNAME _barपूरी तरह से वैध है, आप के साथ परीक्षण कर सकते हैं named-checkzone
पैट्रिक मेवज़ेक

2

DNS में किसी भी मान्य वर्ण की अनुमति है। Https://tools.ietf.org/html/rfc2181#section-11 देखें

"DNS स्वयं विशेष लेबल पर केवल एक प्रतिबंध लगाता है जिसका उपयोग संसाधन रिकॉर्ड की पहचान करने के लिए किया जा सकता है। यह प्रतिबंध लेबल की लंबाई और पूर्ण नाम से संबंधित है। किसी भी एक लेबल की लंबाई 1 और 63 ऑक्टेट के बीच सीमित है। "

क्लाइंट को नाम मानों को मान्य करना चाहिए ईजी एक एमएक्स रिकॉर्ड में "ऐलिस" मूल्य हो सकता है, लेकिन यह देखने के बाद कि मान को खारिज कर दिया जाना चाहिए क्योंकि "ऐलिस" एक वैध ईमेल पता नहीं है।

इस मामले में ऐसा लगता है कि आपका होस्टर आपके इनपुट को "मान्य" कर रहा है, और उन्हें आपके लिए इसे मैन्युअल रूप से दर्ज करने में सक्षम होना चाहिए।


"DNS में किसी भी मान्य वर्ण की अनुमति है" यह उससे थोड़ा अधिक जटिल है। डोमेन नाम और होस्ट नाम हैं। यदि अन्यथा कहा जाए तो छोड़कर, हर जगह आपके पास लेबल होते हैं जो डोमेन नाम होते हैं जिसका अर्थ है वास्तव में कोई भी चरित्र, इसलिए _या जो भी आप कल्पना करते हैं। लेकिन, कुछ रिकॉर्ड के लिए, आप केवल होस्टनाम का उपयोग कर सकते हैं, डोमेन नाम का नहीं। होस्टनाम केवल अक्षर अंक और हाइफ़न हैं, और कुछ नहीं। उदाहरण के लिए Aया AAAAरिकॉर्ड का मालिक एक होस्टनाम है, डोमेन नाम नहीं। NSरिकॉर्ड का RDATA (लक्ष्य) एक होस्टनाम भी है, डोमेन नाम नहीं।
पैट्रिक मेव्ज़ेक

1
"एमएक्स रिकॉर्ड में मान" ऐलिस "हो सकता है, लेकिन यह देखने के बाद कि मान को अस्वीकार कर दिया जाना चाहिए क्योंकि" ऐलिस "एक वैध ईमेल पता नहीं है।" MX RR कब से ई-मेल पते का संदर्भ देते हैं?
बजे एक CVn

0

RFC 1034: लेबल ARPANET होस्ट नामों के लिए नियमों का पालन करना चाहिए। उन्हें एक पत्र के साथ शुरू करना चाहिए, एक पत्र या अंक के साथ समाप्त होना चाहिए, और केवल अक्षर, अंक और हाइफ़न के रूप में आंतरिक वर्ण हैं। लंबाई पर भी कुछ प्रतिबंध हैं। लेबल 63 वर्ण या उससे कम का होना चाहिए।


मुझे Arduino के साथ भी समस्या है, जहां कुछ लिबास ESP_245537 जैसे होस्टनाम देते हैं, जब DHCPserver DNS को अपडेट करने का प्रयास करता है तो यह नाम अस्वीकृत हो जाता है।
लीन

ये गलत है। CNAME का लेबल आवश्यक रूप से एक होस्टनाम नहीं है, इसलिए सभी वर्ण यहाँ मान्य हैं, जिनमें शामिल हैं _
पैट्रिक मेव्ज़ेक

1
और इसके बिना भी, ये पुराने नियम हैं। वे होस्टनामों को एक अंक से शुरू करने पर रोक लगा रहे थे, लेकिन 3com.comउदाहरण के लिए इस नियम में ढील दी गई थी, टूल देखें। देखिए ।ietf.org/html/rfc1123 # page-13 "मेजबान नाम सिंटैक्स का एक पहलू यह है कि इसमें बदलाव किया गया है: पहले चरित्र पर प्रतिबंध एक पत्र या एक अंक की अनुमति देने के लिए आराम है। "
पैट्रिक मेव्ज़ेक

@ यदि esp_245537होस्टनाम के रूप में उपयोग किया जाता है तो DNS अद्यतन को अस्वीकार कर दिया जाना चाहिए क्योंकि यह एक मान्य होस्टनाम नहीं है। यदि इसे डोमेन नाम के रूप में उपयोग किया जाता है, तो DNS अपडेट को सफल होना चाहिए (अन्यथा यह एक बग है), क्योंकि यह एक वैध डीएनएस लेबल है।
पैट्रिक मेव्ज़ेक

मैंने संकेत देखे हैं कि डीएचसीपी से डीएनएस तक अमान्य वर्णों का अनुवाद करना संभव है, लेकिन इसे काम करने के लिए कभी नहीं मिला।
लीन

0

@ स्वेन का जवाब, संपादन के साथ, पहले से ही सही है लेकिन सीधे चीजों को वाक्यांश देना है।

टीएल; डीआर हाँ अंडरस्कोर 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रिकॉर्ड नहीं रखा है जैसे कि एक सच्चे क्षेत्र में होगा)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.