DNS: โดเมนย่อยที่ต้องใช้ทั้ง MX Record และ CNAME


17

ให้เราบอกว่าเราเป็นเจ้าของโซน mywebservice.com

ฉันต้องการให้ลูกค้าของฉันแต่ละคนได้รับโดเมนย่อยของตัวเองเช่น customer.mywebservice.com

customer.mywebservice.com ต้องเป็น CNAME ไปยังเซิร์ฟเวอร์ที่ระบุนอกสถานที่ เนื่องจากไซต์นั้นจัดการอุปกรณ์ของตนเองและสามารถเปลี่ยนที่อยู่ได้ทุกเวลา CNAME จึงเป็นข้อกำหนด

ผู้คนต้องสามารถส่งอีเมลไปที่ inbox@customer.mywebservice.com ซึ่งจะต้องมีระเบียน MX แบบง่าย

อย่างไรก็ตามและนี่คือที่ที่ฉันต้องการคำแนะนำ:

ตามที่RFC 1034 :

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.

ฉันยังตรวจสอบแล้วว่าเซิร์ฟเวอร์ DNS ของฉันจะปฏิเสธที่จะให้บริการอะไรนอกจาก CNAME สำหรับโฮสต์ที่ใช้

ดังนั้นดูเหมือนว่าฉันอาจมีสถานการณ์ที่สูญเสีย หากฉันต้องการใช้ระเบียน MX ฉันต้องใช้ A แทน CNAME

ทุกคนสามารถคิดถึงวิธีแก้ปัญหาได้หรือไม่? ขอบคุณ!

คำตอบ:


20

น่าเสียดายที่สิ่งที่คุณกำลังประสบคือข้อ จำกัด ของข้อกำหนด DNS การมีระเบียน MX สำหรับชื่อโฮสต์เดียวกับที่กำหนดไว้เป็นระเบียน CNAME จะล้มเหลวในการใช้งานเซิร์ฟเวอร์ DNS ส่วนใหญ่ เซิร์ฟเวอร์ DNS เก่าบางรุ่นจะยอมให้สิ่งนี้ แต่ส่วนใหญ่แล้วจะค่อย ๆ ถูกนำไปใช้ประโยชน์ในการใช้งานที่ใหม่กว่าและปลอดภัยกว่า

แทนที่จะใช้ระเบียน CNAME คุณจะต้องใช้ระเบียน 'A' กับที่อยู่ IP ของเว็บไซต์ลูกค้าโดยตรงแทนที่จะเป็นชื่อแทน


ใช่ฉันเดาว่าฉันจะเผชิญหน้ากับสิ่งนี้ ขอบคุณ!
Michael Gorsuch

2
ฉันควรทราบด้วยว่าสำหรับผู้ที่อ่านสิ่งนี้บนท้องถนนว่าเหตุผลของข้อ จำกัด นี้คือ CNAME ควรอ้างถึง "ชื่อมาตรฐาน" สำหรับโฮสต์ที่กำลังค้นหา ตัวอย่างเช่นหากคุณมีโฮสต์ x2.example.com ซึ่งเป็นระเบียน CNAME ที่ชี้ไปที่ x1.example.com ผู้แก้ไขปัญหาที่ค้นหา x2 ควรเห็น CNAME แทนที่สิ่งที่มันทำกับ x2 ด้วย x1 และเริ่มต้นใหม่ . หากคุณมีระเบียน MX สำหรับ x2 นอกเหนือจาก CNAME แล้วหาก x1 มี MX ก็มีโอกาสที่พวกเขาจะแตกต่างกันซึ่งเป็นสิ่งที่ไม่พึงประสงค์ดังนั้นพวกเขาจึงไม่อนุญาต
Justin Scott

18

หลังจากทำงานและค้นคว้ามากมายที่นี่ฉันพบวิธีแก้ปัญหาที่ยอมรับได้ ก่อนอื่นเป็นสิ่งสำคัญที่เราทุกคนต้องปฏิบัติตาม RFC ฉันแก้ไขเซิร์ฟเวอร์ DNS ของฉันเพื่อละเมิด RFC และฉันค้นพบว่าเซิร์ฟเวอร์ DNS หลักอื่น ๆ หลายแห่งไม่เคารพการเปลี่ยนแปลง

การย้ายที่เหมาะสมคือการวาง MX บนโฮสต์ที่ CNAME ชี้ไป ดังนั้นหาก customer.mywebservice.com เป็น CNAME ไปยัง A loadbalancer.mywebservice.com ระเบียนมันก็เหมาะสมที่จะสร้างเรคคอร์ด MX สำหรับ loadbalancer.mywebservice.com ฉันได้ตรวจสอบแล้วว่ามันใช้งานได้กับเครื่องมือแก้ไขที่สำคัญทั้งหมด

หากมีการสืบค้น MX สำหรับ customer.mywebservice.com ไลบรารีตัวแก้ไขจะติดตาม CNAME และรับ MX ที่เหมาะสมสำหรับระเบียน A สุดท้าย เย่!


4

customer.mywebservice.com ต้องเป็น CNAME ไปยังเซิร์ฟเวอร์ที่ระบุนอกสถานที่ เนื่องจากไซต์นั้นจัดการอุปกรณ์ของตนเองและสามารถเปลี่ยนที่อยู่ได้ทุกเวลา CNAME จึงเป็นข้อกำหนด

ทุกคนสามารถคิดถึงวิธีแก้ปัญหาได้หรือไม่? ขอบคุณ!

คุณมีข้อกำหนดที่ลูกค้าจะต้องสามารถเปลี่ยนที่อยู่ได้คุณได้พิจารณาอนุญาตให้ลูกค้าอัปเดตบันทึกของตนเองหรือไม่ ด้วยไดนามิก DNS คุณสามารถใช้เรคคอร์ด A และลูกค้าสามารถเปลี่ยนเรคคอร์ดได้ตามต้องการ ต้องใช้เวลาสักหน่อย แต่คุณสามารถแยกโดเมนย่อยแต่ละรายการเป็นโซนแยกต่างหากเพื่อให้แน่ใจว่าลูกค้าสามารถสัมผัสโซนของตนเองได้เท่านั้น

ฉันไม่ได้ลองเลย แต่ดูเหมือนว่าgnudipจะเป็นเครื่องมือโอเพ่นซอร์สสำหรับอำนวยความสะดวกในการอัปเดตแบบไดนามิกโดยไม่ต้องจัดการกับการรับรองความถูกต้องและตั้งค่าโซนจำนวนมากบนเซิร์ฟเวอร์ DNS ของคุณ


3

หากระเบียน MX ของคุณจะเหมือนกันสำหรับระเบียนเหล่านี้ทั้งหมดคุณสามารถลองใช้ DNAME เพื่อเปลี่ยนเส้นทาง XYZ.mywebservice.com ไปยัง hosting.mywebservice.com ภายใต้ hosting.mywebservice.com ให้เพิ่ม MX และเรกคอร์ด relavent ของคุณ

ผมต้องบอกว่าผมไม่เคยใช้ระเบียน DNAME ในการผลิต แต่คุณสามารถอ่านข้อมูลเพิ่มเติมเกี่ยวกับพวกเขาในRFC2672


ฉันต้องการลองใช้ DNAME กับโดเมน SSL ของเรา แต่ฉันได้ยินมาว่ายังมีปัญหากับเซิร์ฟเวอร์ DNS ที่เก่ากว่า ฯลฯ มีความเกี่ยวข้องกันหรือไม่ หรือ DNAME ปลอดภัยที่จะใช้กับเซิร์ฟเวอร์ที่ใช้งานจริงหรือไม่?
drybjed

ถ้าฉันต้องเดาแอปพลิเคชั่นจำนวนมากไม่คาดหวังว่าจะมีระเบียน DNAME และอาจแตกหักเมื่อใช้งาน เมลเซิร์ฟเวอร์ทั้งหมดทำตาม DNAME เพื่อค้นหาระเบียน MX หรือไม่ ฉันไม่รู้ แต่ก็ควร สำหรับปัญหา SSL ของคุณเซิร์ฟเวอร์ DNS ที่ไม่เข้าใจ DNAME ควรได้รับการอ้างอิง CNAME แทน ฉันจะทดสอบอย่างละเอียดก่อนดำเนินการ
Doug Luxem

แอปพลิเคชันไม่จำเป็นต้องดำเนินการกับระเบียน DNAME อย่างแน่นอน! มันทำในเซิร์ฟเวอร์ชื่อเท่านั้น
bortzmeyer

3

RHS ของ customer.mywebservice.com CNAME มีรายการ MX หรือไม่

ถ้าเป็นเช่นนั้นเมลเซิร์ฟเวอร์จะใช้ MX นั้นเพื่อค้นหาเมลเซิร์ฟเวอร์ที่จะใช้ หวังว่าคุณจะสามารถควบคุมมันได้


1

คำตอบไมเคิล Gorsuch เป็นส่วนใหญ่ที่ถูกต้อง CNAME -> โซ่ A + MX ทำงาน ... ส่วนใหญ่ อย่างไรก็ตามมันทำให้เกิดพฤติกรรมที่ไม่ดีใน MTA บางอย่าง สิ่งที่ฉันได้พบการใช้โซลูชันนี้ในระดับที่เหมาะสม:

  • เอ็มทีบางคนจะปฏิเสธที่จะหาบันทึก
  • คนอื่นจะแทนที่ระเบียน A ที่ CNAME ไม่ถูกต้อง: เช่นฉันส่งอีเมลไปที่ "joe@foo.example.com" ซึ่ง CNAMES ไปที่ web.example.com ซึ่งมี MX ของ mail.example.com และ MTA เขียนส่วนหัวของซองจดหมายใหม่เป็น "ถึง: joe@web.example.com"

ยังไม่ชัดเจนว่าปัญหาเหล่านี้แพร่หลายไปอย่างไร (google / hotmail / yahoo / etc ทั้งหมดดูเหมือนจะจัดการกับเรื่องนี้ได้อย่างถูกต้อง) แต่พวกเขาต้องการให้เราหาวิธีแก้ปัญหาที่ดีกว่า


2
สิ่งนี้ถูกต้อง พฤติกรรมที่เป็นเอกสารสำหรับเซิร์ฟเวอร์ SMTP ที่เข้ากันได้กับ RFC5321 คือการตรวจสอบการมีอยู่ของระเบียน MX สำหรับโดเมนก่อนและหากล้มเหลวให้ตรวจสอบการมีอยู่ของระเบียน A พฤติกรรมนี้เป็นเหตุผลทางเทคนิคที่แท้จริงว่าทำไม MX ไม่ควรเป็น CNAME: มันจะหยุดการแก้ไขหลังจากคำตอบที่ใช้ได้ครั้งแรก
adaptr

0

วิธีแก้ปัญหาที่เป็นไปได้และถูกต้องคือการสร้างชื่อโฮสต์พื้นฐานสำหรับลูกค้าของคุณทั้งหมดและตั้งเป็นระเบียน a และ aaaa ของเว็บเซิร์ฟเวอร์นอกสถานที่และ mx ของคุณจากนั้น CNAME โดเมนลูกค้าทั้งหมดของคุณเป็นชื่อโฮสต์เดียว ด้วยวิธีนี้คุณจะต้องเปลี่ยนหนึ่งบันทึกเมื่อการเปลี่ยนแปลงที่อยู่ IP ของไซต์นั้น

มันเป็นวิธีเดียวที่เป็นไปได้และเป็นไปได้เนื่องจาก CNAME เป็นนามแฝงสำหรับชุดระเบียนที่สมบูรณ์ไม่ใช่เพียงแค่


-4

MX และ CNAME เป็นระเบียนที่แยกจากกันอย่างสมบูรณ์ - อันดับแรกกำหนดเซิร์ฟเวอร์อีเมลสำหรับโดเมนที่กำหนดและที่สองให้ที่อยู่สำหรับโดเมน สิ่งนี้น่าจะใช้ได้:

@ IN SOA ns1.mywebservice.com root.mywebservice.com (
                        2009060201
                        12h
                        1h
                        1W
                        8h
)

                        NS ns1.mywebservice.com
                        NS ns2.mywebservice.com

ลูกค้า CNAME นอกสถานที่
ลูกค้า MX 10 mail.server

4
อาจใช้งานได้ แต่ละเมิด RFC1034 และ RFC1219 ซึ่งระบุว่าไม่มีระเบียนทรัพยากรอื่น ๆ ที่อาจมีชื่อเดียวกันกับ CNAME
Doug Luxem

DNS daemon ของฉันเข้มงวดมาก RFC ซึ่งเพิ่งปฏิเสธไม่ยอมส่งการตอบกลับสำหรับ MX ฉันเชื่อว่ามีปัญหาการแคชที่อาจเกิดขึ้นในฝั่งไคลเอ็นต์ถ้าเราจะวางไว้ในสถานที่
Michael Gorsuch

DNS ตัวใด ฉันใช้ BIND9 ซึ่งควรทำงานกับการกำหนดค่านั้นโดยไม่มีปัญหา อาจถึงเวลาอัพเกรดแล้วหรือยัง โครงสร้างพื้นฐานขนาดใหญ่ฉันเข้าใจไหม?
drybjed

ฉันกำลังใช้ MyDNS มันเป็นโครงร่างขนาดใหญ่และภูตน้อยตัวนี้เป็นพรมาจนถึงจุดนี้ ฉันกำลังพิจารณาการปะแก้ แต่ไม่สนใจที่จะรับมือกับผลข้างเคียงใด ๆ ที่ให้กำเนิด ถ้ามันขัดกับ RFC มันฟังดูไม่ดีเลย
Michael Gorsuch

@Maciej - แน่นอนเซิร์ฟเวอร์ที่มีสิทธิ์ของคุณอาจโฮสต์ระเบียนเหล่านี้ได้ พวกเขาจะสร้างความสับสนให้กับเซิร์ฟเวอร์แบบวนซ้ำที่ถามพวกเขา
Alnitak
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.