क्या CNAME को उप-डोमेन के लिए उपयोग किया जाना चाहिए?


84

मैं कई वेबसाइटों का प्रबंधन करता हूं जिनमें वर्तमान में निम्नलिखित डीएनएस कॉन्फ़िगरेशन है:

example.com      - A Record - Production Server IP
test.example.com - A Record - Test Server IP
www.example.com  - CNAME    - example.com
beta.example.com - CNAME    - test.example.com
dev.example.com  - CNAME    - test.example.com

क्या यह CNAME रिकॉर्ड का उचित उपयोग है? मैंने ऑनलाइन देखा है और मुझे स्पष्ट उत्तर नहीं मिला है। कुछ लोग दावा करते हैं कि CNAME रिकॉर्ड खराब हैं (हालांकि, यह स्पष्ट नहीं है कि ऐसा क्यों है) और निम्नलिखित सेटअप का प्रस्ताव करें:

example.com      - A Record - Production Server IP
test.example.com - A Record - Test Server IP
www.example.com  - A Record - Production Server IP
beta.example.com - A Record - Test Server IP
dev.example.com  - A Record - Test Server IP

इनमें से कौन सा बेहतर तरीका है (और क्यों)?

नोट: उप-डोमेन को अपने स्वयं के MX रिकॉर्ड की आवश्यकता नहीं होती है, इसलिए यहां कोई समस्या नहीं है।


1
मुझे लगता है कि यह एक विकी उत्तर होना चाहिए। DNS सही होना बहुत कठिन है और क्या यह स्वीकृत उत्तर 6 साल बाद भी अच्छा है?
द 09

1
@ the0ther हां, आज भी जेसपर मोर्टेनसेन का मान्य उत्तर, अभी भी मान्य है (भले ही कोई व्यक्ति चीजों के नामकरण या सही टीटीएल मूल्यों का उपयोग करने के बारे में बहस कर सकता है, लेकिन ये सीएनएन रिकॉर्ड का उपयोग करने के मुद्दे से अलग बिंदु हैं या नहीं )। DNS 30 पुराना प्रोटोकॉल है, इसलिए समय के साथ CNAME रिकॉर्ड जैसी बुनियादी चीजें नहीं बदलती हैं।
पैट्रिक मेवज़ेक

जवाबों:


85

हाँ, यह CNAME का उपयुक्त उपयोग है। जिन चर्चाओं का मैं हिस्सा रहा हूँ, उनमें इस तरह की बहस होती है:

CNAME के ​​विरुद्ध:

  • एक छोटा (छोटा) प्रदर्शन जुर्माना है, क्योंकि डाउनस्ट्रीम DNS कैश में 2 DNS लुकअप करने की आवश्यकता होती है, एक CNAME के ​​लिए और एक CNAME बिंदुओं को रिकॉर्ड करने के लिए।
  • कम, "प्राधिकरण" या संगतता मुद्दों वाले CNAMEs के बारे में अस्पष्ट, संगीन तर्क।

CNAME के ​​पक्ष में:

  • वे हार्डवेयर (भौतिक सर्वर) और सेवाओं के बीच एक स्वच्छ अमूर्तता प्रदान करते हैं।
  • वे DNS प्रबंधन को सरल करते हैं - जब कोई सर्वर चलता है, तो आपको केवल एक रिकॉर्ड बदलना होगा।

ऐसा करने के लिए कुछ अलग तरीकों की कोशिश करने के बाद , अब मेरे पास एक व्यक्तिगत पसंदीदा शैली है। यह है:

  • प्रत्येक भौतिक सर्वर के लिए एक रिकॉर्ड; काफी कम टीटीएल (शायद 30 मिनट) के साथ; सर्वर को मानव-अनुकूल नाम देना
  • प्रत्येक सेवा के लिए एक CNAME; एक उच्च टीटीएल (शायद 24 घंटे) के साथ; उपरोक्त सर्वर नामों की ओर इशारा करते हुए।
  • ऊपर के नियमों के लिए एकमात्र छूट के रूप में, डोमेन रूट एक-रिकॉर्ड है, जो वेबसर्वर / वेब लोड बैलेंसर की ओर इशारा करता है। (ए-रिकॉर्ड होने के लिए @ की आवश्यकता है)

मुझे लगता है कि यह सेटअप अच्छी तरह से काम करता है। यह CNAMES डाउन के लिए अतिरिक्त DNS लुकअप रखता है; और यदि कोई सर्वर क्रैश होता है तो मैं अभी भी सार्वजनिक DNS को काफी तेजी से बदल सकता हूं।

यहाँ बंड सिंटैक्स में (तात्कालिक) उदाहरण दिया गया है:

;name     ttl   class rr     value 
server01  30m   IN    A      192.168.0.3
server02  30m   IN    A      192.168.0.4

webmail   24h   IN    CNAME  server01
extranet  24h   IN    CNAME  server02
ftp       24h   IN    CNAME  server02

1
धन्यवाद, आखिरकार CNAMEs पर एक उचित राय स्पष्ट रूप से और संक्षिप्त रूप से रखी गई।
टायलर

@ जेस्पर मॉर्टेंसन: क्या आप कृपया एक छोटे से उदाहरण के साथ उत्तर को थोड़ा अपडेट कर सकते हैं, विशेष रूप से मुझे आपका तीसरा बिंदु समझ में नहीं आया जब आप कहते हैं कि "उपरोक्त नियमों के लिए एकमात्र छूट के रूप में, डोमेन रूट एक ए-रिकॉर्ड है," आप पहले से ही 1 बिंदु में कहा गया है कि आप प्रत्येक भौतिक परत सर्वर के लिए एक ए रिकॉर्ड का उपयोग करते हैं। (बीटीडब्लू लिंक गए हैं)
मार्को डेमायो

2
@ मार्को डेमायो: "डोमेन रूट ए-रिकॉर्ड" के बारे में: एक दूसरे स्तर का डोमेन जैसा company.comएक ज़ोन एपेक्स है। इसे SOA रिकॉर्ड की आवश्यकता है। इस प्रकार यह एक एक रिकार्ड है और एक CNAME होना चाहिए - देखना serverfault.com/questions/170194/...
जेस्पर मोर्टेनसेन

4
@ ए रिकॉर्ड करने के लिए आवश्यक नहीं है; बल्कि, एक CNAME निषिद्ध है।
माइकल हैम्पटन

1
बस यह जोड़ना चाहता था कि CNAME विशेष रूप से उपयोगी हैं यदि आपका सर्वर (s) IPv6 पतों का समर्थन करता है, साथ ही आपको प्रति सर्वर में कम से कम दो प्रविष्टियों की आवश्यकता है (प्रत्येक A और AAAA रिकॉर्ड) ताकि उप-डोमेन के लिए CNAME का उपयोग किया जा सके इस मामले में बहुत आसान है। यदि आप टीटीएल के लिए जेस्पर की सिफारिशों का उपयोग करते हैं (या आपके DNS प्रदाता के पास अच्छी स्वचालित हैंडलिंग है) तो कोई वास्तविक प्रदर्शन जुर्माना नहीं होना चाहिए।
हरविकिंक

13

हाँ यह उचित है।

मेरे सर्वश्रेष्ठ व्यवहार, जो कई लोग साझा करते हैं, प्रत्येक सर्वर आईपी के लिए 1 ए रिकॉर्ड बनाना है; और किसी और चीज के लिए CNAMES का उपयोग करें।

एक आम उदाहरण होगा:

server1.example.com.      IN A      192.168.0.1
server2.example.com.      IN A      192.168.5.2
www                       IN CNAME  server1
ftp                       IN CNAME  server1
beta                      IN CNAME  server2

मुझे पता है कि इस सवाल में उन्होंने कहा कि मेल यहाँ कोई समस्या नहीं है, लेकिन मान लीजिए कि आप मेल का उपयोग भी करते हैं तो आप एमएक्स रिकॉर्ड के साथ कैसे जाएंगे? धन्यवाद!
मार्को डेमायो

1
एमएक्स रिकॉर्ड सर्वर के नाम को भी इंगित करेगा। IN MX server1और सुविधा के लिए मैं भी स्थापित करने की सिफारिश करेंगे imapया popऔर smtpCNAME उपलब्ध है, संभवतः भी mail, के रूप में कई ई-मेल कार्यक्रमों इस लगता है। सही एसआरवी रिकॉर्ड स्थापित करना भी एक अच्छा विचार है, लेकिन चूंकि यह एक अपेक्षाकृत बुनियादी सवाल है, इसलिए एसआरवी रिकॉर्ड एक साधारण कॉन्फ़िगरेशन के लिए थोड़ा अधिक हो सकता है।
क्रिस एस

1
एक त्वरित टिप्पणी, MXरिकॉर्ड CNAME नहीं होना चाहिए, देखें serverfault.com/a/232243/2874 यह शायद अभ्यास में ठीक काम करता है - लेकिन फिर भी, ऐसा नहीं करना बेहतर है।
जेस्पर मॉर्टेंसन

यदि आप CNAME पर MX या SRV रिकॉर्ड इंगित करते हैं, तो BIND क्षेत्र को लोड करने से इंकार कर देगा ... मुझे संभवतः यह स्पष्ट करना चाहिए कि MX रिकॉर्ड को A रिकॉर्ड करने की आवश्यकता है। धन्यवाद।
क्रिस एस

@ क्रिस, कैसे अपने जवाब को संपादित करने के बारे में और स्पष्ट रूप से इस तथ्य का उल्लेख करते हुए कि एमएक्स रिकॉर्ड एक CNAME प्रविष्टि को इंगित नहीं कर सकता है?
एलेक्सिस विल्के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.