ชี้แจงสาเหตุที่ไฟล์โซน DNS ต้องการระเบียน NS


18

แต่เดิมคำถามนี้ถูกถามที่นี่: เหตุใดไฟล์โซน DNS จึงต้องมีระเบียน NS

ในการสรุป: "เมื่อฉันไปที่นายทะเบียนของฉันและซื้อ example.com ฉันจะบอกนายทะเบียนของฉันว่าเซิร์ฟเวอร์ชื่อของฉันคือ ns1.example.org และ ns2.example.org"

แต่โปรดใครสักคนสามารถอธิบายต่อไปนี้:

หลังจากการลงทะเบียนขณะนี้รีจิสตรี. com จะมีเรคคอร์ดที่บอกให้ผู้แก้ไขต้องไปที่ ns1.example.org หรือ ns2.example.org เพื่อค้นหาที่อยู่ IP ของ example.com ที่อยู่ IP นั้นอยู่ในระเบียน A ในไฟล์โซนบน ns1.example.org และมีสำเนาเหมือนกันใน ns2.example.org

อย่างไรก็ตามในไฟล์นี้จะต้องมีระเบียน NS 2 รายการซึ่งแสดงรายการ ns1.example.org และ ns2.example.org เป็นเนมเซิร์ฟเวอร์ แต่เนื่องจากเราอยู่ในหนึ่งในเซิร์ฟเวอร์เหล่านี้สิ่งนี้จึงปรากฏเป็นข้อมูลที่ซ้ำซ้อน

คำตอบแรกที่ให้กับคำถามที่กล่าวว่าเซิร์ฟเวอร์ชื่อที่แสดงในไฟล์โซนคือ "เชื่อถือ" หากเซิร์ฟเวอร์ชื่อไม่ตรงกันเซิร์ฟเวอร์ชื่อนี้จะมีความสำคัญกว่า นั่นคือทั้งหมดที่ดีและดี แต่ตัวแก้ไขมาถึง nameserver โดยใช้ nameservers ที่ระบุไว้ใน. com รีจิสทรีและถ้า nameserver ไม่ตรงกันแล้วตัวแก้ไขจะมองหาไฟล์โซนใน nameserver ผิดและจะไม่ ' ไม่สามารถค้นหาได้

หรือเป็นกรณีของการลงทะเบียน. com เพื่อดึงข้อมูลเนมเซิร์ฟเวอร์จากบันทึกไฟล์โซนหรือไม่ (แต่ฉันคิดว่าถ้าคุณเปลี่ยนไฟล์ ns ที่บันทึกโซนโดยไม่บอกรีจิสทรีแล้วมันจะไม่มีทางรู้ว่าจะดูที่ไหน)

ขอบคุณ

คำตอบ:


23

เรามาทำลายมันกันหน่อย

ระเบียน NS ในโซน TLD (ตัวอย่างเช่นexample.com NS ...ในcom) เป็นบันทึกการมอบหมาย

ระเบียน A และ AAAA ในโซน TLD (ตัวอย่างเช่นns1.example.com A ...ในcom) เป็นบันทึกกาว

ระเบียน NS ในโซนนั้น (นั่นคือexample.com NS ...ในexample.com) เป็นระเบียนผู้มีอำนาจ

ระเบียน A และ AAAA ในโซนนั้น ( ns1.example.com A ...ในexample.com) เป็นระเบียนที่อยู่ธรรมดาและเรียบง่าย

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

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

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

ควรพิจารณาเฉพาะคำตอบที่เชื่อถือได้เท่านั้น ทุกอย่างอื่นเป็นทั้งการมอบหมายหรือข้อผิดพลาดบางอย่าง การมอบหมายไปยังเซิร์ฟเวอร์ที่ไม่มีสิทธิ์เรียกว่าการมอบสิทธิ์ "lame" และหมายความว่าตัวแก้ไขจะต้องย้อนกลับไปหนึ่งขั้นตอนและลองใช้เซิร์ฟเวอร์ DNS ที่มีชื่ออื่น หากไม่มีเซิร์ฟเวอร์ชื่อที่สามารถเข้าถึงได้อย่างมีสิทธิ์ในการมอบหมายการระบุชื่อล้มเหลว (ไม่เช่นนั้นจะช้ากว่าปกติ)

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

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


คุณสามารถดูวิธีการทำงานในรายละเอียดเพิ่มเติมโดยใช้digและคุณสมบัติ+norec(ไม่ต้องเรียกซ้ำ) และ@คุณสมบัติตัวระบุเซิร์ฟเวอร์ สิ่งต่อไปนี้เป็นภาพประกอบของการทำงานของเซิร์ฟเวอร์ DNS การแก้ไขที่เกิดขึ้นจริง การค้นหาระเบียน A สำหรับการunix.stackexchange.comเริ่มต้นเช่นa.root-servers.net:

$ dig unix.stackexchange.com. A @a.root-servers.net. +norec

ดูอย่างใกล้ชิดflagsเช่นเดียวกับการนับต่อส่วน qrคือการตอบคำถามและaaเป็นคำตอบที่เชื่อถือได้ โปรดสังเกตว่าคุณได้รับมอบสิทธิ์ให้กับcomเซิร์ฟเวอร์เท่านั้น ทำตามการมอบหมายด้วยตนเอง (ในชีวิตจริงตัวแก้ไขแบบเรียกซ้ำจะใช้ที่อยู่ IP จากส่วนเพิ่มเติมหากมีให้หรือเริ่มต้นการจำแนกชื่อแยกต่างหากของหนึ่งในเซิร์ฟเวอร์ชื่อที่ระบุชื่อหากไม่มี IP ที่ระบุไว้ในการตอบสนองการมอบหมาย ข้ามส่วนนั้นและย้อนกลับไปที่ตัวแก้ไขปกติของระบบปฏิบัติการเพื่อดูตัวอย่าง):

$ dig unix.stackexchange.com. A @a.gtld-servers.net. +norec

ตอนนี้คุณจะเห็นว่าstackexchange.comได้รับมอบหมายให้ (ในหมู่คนอื่น ๆ ) ns1.serverfault.comและคุณยังไม่ได้รับคำตอบที่เชื่อถือได้ ทำตามการมอบหมายอีกครั้ง:

$ dig unix.stackexchange.com. A @ns1.serverfault.com. +norec
...
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35713
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;unix.stackexchange.com. IN A

;; ANSWER SECTION:
unix.stackexchange.com. 300 IN A 198.252.206.16

บิงโก! เราได้รับคำตอบเนื่องจากaaมีการตั้งค่าสถานะและมีที่อยู่ IP เหมือนกับที่เราต้องการค้นหา อย่างน้อยก็น่าสังเกตว่าอย่างน้อยในเวลาที่ฉันเขียนโพสต์นี้รายการเซิร์ฟเวอร์ชื่อที่ได้รับมอบหมายและรายการที่ได้รับมอบอำนาจนั้นแตกต่างกันแสดงว่าทั้งสองไม่จำเป็นต้องเหมือนกัน สิ่งที่ฉันได้อธิบายไว้ข้างต้นนั้นเป็นงานที่ทำโดยตัวแก้ไขใด ๆ ยกเว้นตัวแก้ไขที่ใช้งานจริงใด ๆ ก็จะแคชการตอบสนองไปพร้อมกันดังนั้นจึงไม่จำเป็นต้องไปที่เซิร์ฟเวอร์หลักทุกครั้ง

ดังที่คุณเห็นจากตัวอย่างด้านบนบันทึกการมอบหมายและกาวนั้นมีจุดประสงค์ที่แตกต่างจากบันทึกอำนาจและที่อยู่ในโซน

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


ขอบคุณมากสำหรับคำตอบอย่างละเอียด ดังนั้นจินตนาการว่าบันทึกการมอบหมายส่งตัวแก้ไขไปที่ ns4.serverfault.com นี่ไม่ได้อยู่ในระเบียน NS ของไฟล์โซน ผู้แก้ไขแจ้งให้ทราบว่าไม่ตรงกันและย้อนกลับหรือไม่? (คณะผู้แทนอ่อนแอ)? ฉันคิดว่ามันเป็นสาเหตุของคำถามทำไม ns4.serverfault.com จะแสดงรายการเป็นบันทึกการมอบหมายถ้าไม่ได้อยู่ในไฟล์โซน
ลาร์ส

@Lars ไม่ ns4.serverfault.com จะยังคงมีสิทธิ์ การอนุญาต (นั่นคือแม้แต่คำ?) ไม่ขึ้นอยู่กับว่าเซิร์ฟเวอร์ที่มีปัญหานั้นมีชื่ออยู่ในระเบียน NS หรือไม่ไม่ว่าจะอยู่ในโซนของตัวเองหรือในการมอบหมาย มันเป็นเพียงการมอบหมายง่อยถ้าเซิร์ฟเวอร์มอบหมายให้ตอบสนองในรูปแบบที่ไม่ใช่สิทธิ์ (นั่นคือaaธงไม่ได้ตั้งค่าในการตอบสนอง)
CVn

1

รีจิสทรี. com คือ "บันทึกกาว" ซึ่งมีที่ตั้งของเซิร์ฟเวอร์ชื่อของคุณเป็นที่อยู่ IP ตัวแก้ไขไม่มีวิธีทราบ "ตัวตน" ของเซิร์ฟเวอร์ DNS ของคุณดังนั้นจึงใช้ระเบียน NS เพื่อให้แน่ใจว่าหมายเลขตรงกัน

การร้องขอ DNS -> การลงทะเบียน. com (ip คือ xxxx) -> การจับคู่ DNS (NS xxxx) ตรงกัน

หากพวกเขาไม่ตรงหรือมีอยู่ก็เป็นคำตอบที่ไม่มีสิทธิ์สำหรับโดเมน


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

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