ส่งต่อโดเมนรูทไปยังโดเมนย่อย www โดยใช้ระเบียน DNS


16

ฉันได้www.mydomain.comชี้ไปที่เว็บไซต์ Azure

www.mydomain.com --- CNAME --- mydomain.azurewebsites.net

เมื่อฉันไปเยี่ยมwww.mydomain.comทุกอย่างทำงานได้ดี ดีจัง.

ปัญหาคือmydomain.comไม่ทำงาน Azure อนุญาตเฉพาะโดเมนย่อย www

ในเซิร์ฟเวอร์ชื่อบางตัวฉันใช้ระเบียน FWD เพื่อส่งต่อรากไปยัง www และสิ่งนี้ใช้ได้ดี เซิร์ฟเวอร์ชื่อปัจจุบันของฉัน (zoneedit.com) ไม่มีบันทึก FWD นี้

มี DNS Record ที่เราสามารถใช้เพื่อส่งต่อโดเมนรูทไปยังโดเมนย่อย www ได้หรือไม่?


2
ZoneEdit มี "WebForward" ซึ่งจะทำเช่นนี้
Michael Hampton

@MichaelHampton สมบูรณ์แบบ เราใช้@ | StealthForward | http://www.example.com
Shaun Luttin

เยี่ยมมาก มันเป็นสิ่งที่ฉันอธิบาย (ชี้ไปที่ IP จริงนั่นคือเว็บเซิร์ฟเวอร์ที่เพิ่งเปลี่ยนเส้นทางด้วย HTTP 300-series ไปที่ www.domain.com)
DTK

คำตอบ:


17

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

ผู้ให้บริการ DNS หลายรายใช้ประเภทระเบียน DNS ที่กำหนดเอง (อ่าน: ปลอม) เพื่อลองและแก้ไขข้อบกพร่องนี้ เบื้องหลังเหล่านี้ระเบียนปลอมเหล่านี้ใช้พฤติกรรมแบบกำหนดเองในซอฟต์แวร์ของ บริษัท ดังกล่าวโดยใช้การผสมผสานระหว่างAเรคคอร์ดที่สังเคราะห์และการเปลี่ยนเส้นทางเว็บเซิร์ฟเวอร์เพื่อให้บรรลุเป้าหมายที่คุณต้องการ FWDเป็นหนึ่งในสิ่งเหล่านี้เหมือนกับWebForwardที่ไมเคิลสั่งให้คุณแสดงความคิดเห็น


8

สรุป: ในระยะสั้นคุณไม่สามารถมีบันทึกที่คุณต้องการและโฮสต์ DNS ของคุณกำลังทำสิ่งที่ถูกต้อง

คำอธิบาย: เป็นการละเมิดมาตรฐาน DNS ที่มี CNAME (ชื่อแทนระเบียน / ส่งต่อเร็กคอร์ด) ที่โซน apex (ชื่อว่างที่ด้านหน้าของโซน)

เหตุผลนี้เป็นระเบียน CNAME ไม่สามารถมีส่วนที่ชื่อขัดแย้งกับบันทึกใด ๆ ยกเว้นระเบียน DNSSec ในโซนทั่วไประเบียน CNAME ที่โซนเอเพ็กซ์จะชนกับระเบียน SOA และ NS อย่างน้อยที่สุด (และมีโอกาสอื่น ๆ อีกมากมาย) แม้ว่าเซิร์ฟเวอร์ DNS บางตัวจะอนุญาตสิ่งนี้ แต่ก็เป็นสิ่งที่ไม่ดีและอาจทำให้ยากต่อการวินิจฉัยความล้มเหลว (ไม่ต้องพูดถึงจะไม่ทำงานหากคุณย้ายโฮสต์ของโซนไปยังเซิร์ฟเวอร์ DNS ที่สอดคล้องกับมาตรฐานเช่นอะไรก็ตามที่ใช้ BIND) .

อาจมีระเบียน A ที่โซน apex (อาจเป็นเว็บเซิร์ฟเวอร์แบบง่ายที่เพิ่งส่ง HTTP 302 ไปที่ www) หากคุณสามารถรับหมายเลข IP แบบคงที่สำหรับอินสแตนซ์เซิร์ฟเวอร์ Azure ของคุณให้ใส่ระเบียน A สำหรับแต่ละจุดที่ปลายสุดของโซนของคุณและสร้างระเบียน CNAME เดียวชื่อ "www" ซึ่งชี้ไปที่ระเบียน apex

ตัวอย่างเช่น :

 

$ ORIGIN example.com

@ IN SOA ns1.example.com admin@example.com (
                                 101;
                                 228500;
                                 900;
                                 1209600;
                                 3600; )
@ IN NS ns1.example.com
@ IN NS ns2.example.com
@ IN A 123.234.1.123
@ IN A 123.234.1.124
@ IN A 123.234.1.125
ns1 IN A 123.234.1.126
ns2 ใน A 123.234.1.127
www IN CNAME example.com

5
IMO: มันไม่คุ้มค่าที่จะย้ำอย่างไม่รู้จบว่าทำไม CNAME apexes ไม่ทำงาน หากผู้ใช้ถามว่าเหตุใดจึงไม่ทำงานเรามีคำตอบที่ยอมรับได้สำหรับการอ้างอิง RFC (การเปิดเผยอย่างเต็มรูปแบบ: ฉันเขียนไว้) หากพวกเขาไม่ถามเกี่ยวกับเรื่องนี้จะเป็นการดีที่สุดที่จะตอบคำถามตามคำพูด
Andrew B

ขอขอบคุณ. ฉันควรมองหาคำตอบที่ยอมรับได้ ฉันจะจำไว้ว่าในครั้งต่อไป
DTK

2

โพรโทคอลบางตัวมีมาตรฐานสำหรับประเภทระเบียน DNS นอกเหนือจากระเบียน A เพื่อค้นหาบริการ SMTP พร้อมระเบียน MX ที่เชื่อมโยงอยู่เป็นตัวอย่างที่ดีของสิ่งนี้ ไม่มีประเภทระเบียน DNS ที่กำหนดไว้สำหรับ HTTP เป็นไปได้ว่าผู้ให้บริการจดทะเบียน DNS / ก่อนหน้าของคุณมีการเปลี่ยนเส้นทาง HTTP หรือบริการพร็อกซีย้อนกลับ

เพื่อให้บรรลุเป้าหมายของคุณคุณจะต้องตั้งค่าเว็บเซิร์ฟเวอร์ (โฮสต์เสมือน) เพื่อทำการเปลี่ยนเส้นทาง HTTP 301 หรือ 302 จากชื่อโฮสต์หนึ่งไปยังอีกชื่อหนึ่งตั้งค่าพร็อกซี HTTP ย้อนกลับตั้งค่าโฮสต์เสมือนอิสระหรือใช้นามแฝงโฮสต์เสมือน อินสแตนซ์เว็บเซิร์ฟเวอร์เดียวกันจะตอบสนองต่อทั้งสองชื่อ


0

หากคุณต้องการคำตอบที่เฉพาะเจาะจงสำหรับ Azure คุณต้องสร้างระเบียน CNAME อื่นที่ชี้ไปที่ awverify.mydomain.azurewebsites.net เช่นนี้

www.mydomain.com --- CNAME --- awverify.mydomain.azurewebsites.net
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.