บทบาทของระเบียน NS ที่จุดสูงสุดของโดเมน DNS คืออะไร


21
$ORIGIN example.com. ; not necessary, using this to self-document

$TTL 3600
@        IN     SOA   ns1.example.com. admin.example.com. (
                      1970010100 7200 1800 1209600 300)

@        IN     NS   ns1.example.com.
@        IN     NS   ns2.example.com.

@        IN     A    198.51.100.1
ns1      IN     A    198.51.100.2
ns2      IN     A    198.51.100.3

sub1     IN     NS   ns1.example.edu.

sub2     IN     NS   ns1.sub2
ns1.sub2 IN     A    203.0.113.1 ; inline glue record

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

วัตถุประสงค์ของระเบียน NS ที่จุดสูงสุดของโดเมนns1และns2ในกรณีนี้ดูเหมือนว่าอินเทอร์เน็ตจะมีความเข้าใจน้อยลง ความเข้าใจของฉัน (ซึ่งอาจไม่ใช่องค์รวม) มีดังต่อไปนี้:

  1. พวกเขาจะไม่ใช้แคชเซิร์ฟเวอร์ DNS เพื่อตรวจสอบเซิร์ฟเวอร์ที่มีสิทธิ์สำหรับโดเมน สิ่งนี้ได้รับการจัดการโดยกาว nameserverซึ่งกำหนดไว้ที่ระดับนายทะเบียน ผู้รับจดทะเบียนไม่เคยใช้ข้อมูลนี้เพื่อสร้างเรคคอร์ดกาว
  2. พวกเขาไม่ได้ใช้ในการมอบอำนาจสำหรับโดเมนทั้งหมดให้กับเซิร์ฟเวอร์อื่น ๆ การพยายามทำเช่นนั้นกับซอฟต์แวร์เช่น ISC BIND จะไม่ส่งผลให้เกิดพฤติกรรมการอ้างอิง "ที่คาดหวัง" เนื่องจากเนมเซิร์ฟเวอร์จะยังคงพิจารณาตัวตนที่มีสิทธิ์สำหรับโซนนั้นต่อไป
  3. เนมเซิร์ฟเวอร์เหล่านี้ไม่ได้ใช้เพื่อตรวจสอบว่าควรส่งคืนการตอบกลับที่มีสิทธิ์ ( AAชุดธง) หรือไม่; พฤติกรรมนั้นถูกกำหนดโดยไม่ว่าจะเป็นซอฟต์แวร์ที่บอกว่าเป็นเจ้านายหรือทาสสำหรับโซน ซอฟต์แวร์เนมเซิร์ฟเวอร์ส่วนใหญ่จะให้บริการระเบียน apex NS อย่างมีความสุขซึ่งไม่เห็นด้วยกับข้อมูลที่อยู่ในเรคคอร์ดอัปสตรีมซึ่งจะส่งผลให้เว็บไซต์ตรวจสอบ DNS ที่รู้จักกันดีนั้นสร้างคำเตือนสำหรับโดเมน

ด้วยกรณีนี้เราจะทิ้งอะไรไว้? เหตุใดเราจึงกำหนดข้อมูลนี้หากไม่ได้ใช้แคช DNS เซิร์ฟเวอร์บนอินเทอร์เน็ตเป็นจำนวนมาก

คำตอบ:


21

บัตรประจำตัวผู้ใต้บังคับบัญชา

เซิร์ฟเวอร์หลักจะใช้ระเบียน NS ระดับ Apex เพื่อระบุผู้ใต้บังคับบัญชา เมื่อข้อมูลเกี่ยวกับเนมเซิร์ฟเวอร์ที่เชื่อถือได้มีการเปลี่ยนแปลงข้อมูลดังกล่าวจะทำการโฆษณาผ่านDNS NOTIFYข้อความ ( RFC 1996 ) ให้กับเพื่อนร่วมงานทั้งหมดในรายการนั้น เซิร์ฟเวอร์เหล่านั้นจะโทรกลับพร้อมคำขอสำหรับSOAบันทึก (ซึ่งมีหมายเลขซีเรียล) และตัดสินใจว่าจะดึงสำเนาล่าสุดของโซนนั้นลงหรือไม่

  • เป็นไปได้ที่จะส่งข้อความเหล่านี้ไปยังเซิร์ฟเวอร์ที่ไม่ได้ระบุไว้ในNSส่วน แต่ต้องมีคำสั่งกำหนดค่าเซิร์ฟเวอร์เฉพาะ (เช่นalso-notifyคำสั่งของ ISC BIND ) ระเบียน apex NS ประกอบด้วยรายการพื้นฐานของเซิร์ฟเวอร์เพื่อแจ้งเตือนภายใต้การกำหนดค่าเริ่มต้น
  • เป็นที่น่าสังเกตว่าเซิร์ฟเวอร์รองจะส่งข้อความแจ้งเตือนให้แก่กันและกันโดยพิจารณาจากNSบันทึกเหล่านี้ซึ่งมักส่งผลให้เกิดการลงชื่อเข้าใช้ สิ่งนี้สามารถปิดใช้งานได้โดยสั่งให้เซิร์ฟเวอร์ส่งการแจ้งเตือนเฉพาะสำหรับโซนที่เป็นหลักสำหรับ (BIND:) notify master;หรือข้ามการNSแจ้งเตือนโดยสิ้นเชิงเพื่อแจ้งเตือนที่กำหนดไว้อย่างชัดเจนในการกำหนดค่า (ผูกnotify explicit;)

คำนิยามที่มีสิทธิ์

คำถามข้างต้นมีการเข้าใจผิด:

พวกเขาจะไม่ใช้แคชเซิร์ฟเวอร์ DNS เพื่อตรวจสอบเซิร์ฟเวอร์ที่มีสิทธิ์สำหรับโดเมน สิ่งนี้ได้รับการจัดการโดยกาว nameserver ซึ่งกำหนดไว้ที่ระดับนายทะเบียน นายทะเบียนไม่เคยใช้ข้อมูลนี้เพื่อสร้างบันทึกกาว

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

เพื่อแสดง:

$ dig @a.gtld-servers.net +norecurse +nocmd example.com. NS
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14021
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.                   IN      NS

;; AUTHORITY SECTION:
example.com.            172800  IN      NS      a.iana-servers.net.
example.com.            172800  IN      NS      b.iana-servers.net.

;; ADDITIONAL SECTION:
a.iana-servers.net.     172800  IN      A       199.43.135.53
a.iana-servers.net.     172800  IN      AAAA    2001:500:8f::53
b.iana-servers.net.     172800  IN      A       199.43.133.53
b.iana-servers.net.     172800  IN      AAAA    2001:500:8d::53

โปรดสังเกตว่าการขาดaaในแฟล็กสำหรับการตอบกลับด้านบน ผู้อ้างอิงเองไม่มีอำนาจ ในทางกลับกันข้อมูลบนเซิร์ฟเวอร์ที่ถูกอ้างถึงนั้นมีสิทธิ์

$ dig @a.iana-servers.net +norecurse +nocmd example.com. NS
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2349
;; flags: qr aa; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.                   IN      NS

;; ANSWER SECTION:
example.com.            86400   IN      NS      a.iana-servers.net.
example.com.            86400   IN      NS      b.iana-servers.net.

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

  • คำตอบสั้น ๆ คือ "พฤติกรรมที่ไม่สอดคล้อง"
  • คำตอบยาวคือว่าเซิร์ฟเวอร์จะทุกอย่างต้นขั้วแรกออกจากการอ้างอิง (และกาว) บนแคชว่างเปล่า แต่ผู้ที่NS, AและAAAAบันทึกในที่สุดอาจถูกแทนที่เมื่อพวกเขาได้รับการฟื้นฟู การรีเฟรชเกิดขึ้นเมื่อ TTLs ในบันทึกชั่วคราวเหล่านั้นหมดอายุหรือเมื่อมีคนร้องขอคำตอบสำหรับบันทึกเหล่านั้นอย่างชัดเจน
    • AและAAAAเรคคอร์ดสำหรับข้อมูลนอกเขต (เช่นเนมcomเซิร์ฟเวอร์ที่กำหนดกาวสำหรับข้อมูลนอกcomโซนเช่นexample.net) จะต้องถูกรีเฟรชอย่างแน่นอนเนื่องจากเป็นแนวคิดที่เข้าใจดีว่าเนมเซิร์ฟเวอร์ไม่ควรถูกพิจารณาว่าเป็นแหล่งข้อมูลที่เชื่อถือได้ของข้อมูลดังกล่าว . (RFC 2181)
    • เมื่อค่าของNSเรคคอร์ดแตกต่างกันระหว่างฝั่งพาเรนต์และชายด์ของการอ้างอิง (เช่นเนมเซิร์ฟเวอร์ที่ป้อนเข้าไปในแผงควบคุมของนายทะเบียนแตกต่างจากNSเร็กคอร์ดที่อาศัยอยู่บนเซิร์ฟเวอร์เดียวกันเหล่านั้น) พฤติกรรมที่มีประสบการณ์จะไม่สอดคล้องกันNSบันทึกถูกเพิกเฉยอย่างสมบูรณ์ นี่เป็นเพราะพฤติกรรมไม่ได้กำหนดไว้อย่างดีตามมาตรฐานและการใช้งานแตกต่างกันไประหว่างการใช้งานเซิร์ฟเวอร์แบบเรียกซ้ำ ในคำอื่น ๆพฤติกรรมที่สอดคล้องกันผ่านทางอินเทอร์เน็ตที่สามารถคาดหวังเฉพาะในกรณีที่คำจำกัดความ nameserver สำหรับโดเมนมีความสอดคล้องกันระหว่างผู้ปกครองและเด็กด้านของการอ้างอิง

ความยาวและสั้นของมันคือเซิร์ฟเวอร์ DNS แบบเรียกซ้ำทั่วทั้งอินเทอร์เน็ตจะเด้งกลับไปมาระหว่างจุดหมายหากบันทึกที่กำหนดไว้ในด้านต้นกำเนิดของผู้อ้างอิงไม่เห็นด้วยกับเวอร์ชันที่เชื่อถือได้ของบันทึกเหล่านั้น ในขั้นต้นข้อมูลที่มีอยู่ในการอ้างอิงจะเป็นที่ต้องการเท่านั้นที่จะถูกแทนที่ด้วยคำจำกัดความที่มีสิทธิ์ เนื่องจากแคชนั้นถูกสร้างขึ้นใหม่อย่างต่อเนื่องตั้งแต่เริ่มต้นผ่านอินเทอร์เน็ตจึงเป็นไปไม่ได้ที่อินเทอร์เน็ตจะสามารถใช้งานได้จริงในรุ่นเดียวกับการกำหนดค่านี้ หากบันทึกที่เชื่อถือได้กำลังทำบางสิ่งผิดกฎหมายตามมาตรฐานเช่นชี้NSบันทึกที่นามแฝงที่กำหนดโดยCNAMEสิ่งนี้ยากยิ่งขึ้นในการแก้ไขปัญหา โดเมนจะเป็นทางเลือกระหว่างการทำงานและการใช้งานไม่ได้สำหรับซอฟต์แวร์ที่ปฏิเสธการละเมิด (เช่นชื่อ ISC BIND / ชื่อ)

RFC 2181 §5.4.1ให้ตารางการจัดอันดับสำหรับความน่าเชื่อถือของข้อมูลนี้และทำให้เป็นที่ชัดเจนว่าข้อมูลแคชที่เกี่ยวข้องกับการอ้างอิงและกาวไม่สามารถส่งคืนเป็นคำตอบของคำขอที่ชัดเจนสำหรับบันทึกที่พวกเขาอ้างถึง

5.4.1. Ranking data

   When considering whether to accept an RRSet in a reply, or retain an
   RRSet already in its cache instead, a server should consider the
   relative likely trustworthiness of the various data.  An
   authoritative answer from a reply should replace cached data that had
   been obtained from additional information in an earlier reply.
   However additional information from a reply will be ignored if the
   cache contains data from an authoritative answer or a zone file.

   The accuracy of data available is assumed from its source.
   Trustworthiness shall be, in order from most to least:

     + Data from a primary zone file, other than glue data,
     + Data from a zone transfer, other than glue,
     + The authoritative data included in the answer section of an
       authoritative reply.
     + Data from the authority section of an authoritative answer,
     + Glue from a primary zone, or glue from a zone transfer,
     + Data from the answer section of a non-authoritative answer, and
       non-authoritative data from the answer section of authoritative
       answers,
     + Additional information from an authoritative answer,
       Data from the authority section of a non-authoritative answer,
       Additional information from non-authoritative answers.

   <snip>

   Unauthenticated RRs received and cached from the least trustworthy of
   those groupings, that is data from the additional data section, and
   data from the authority section of a non-authoritative answer, should
   not be cached in such a way that they would ever be returned as
   answers to a received query.  They may be returned as additional
   information where appropriate.  Ignoring this would allow the
   trustworthiness of relatively untrustworthy data to be increased
   without cause or excuse.

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

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

@ สูญเปล่าฉันก็ไม่เห็นด้วยกับความคิดเห็นแรกของคุณเนื่องจากมีข้อสันนิษฐานมากมาย เนื่องจากพฤติกรรมไม่ได้กำหนดไว้อย่างชัดเจนตามมาตรฐานจึงเป็นการนำไปปฏิบัติโดยเฉพาะ งานนำเสนอนี้มีอายุ 6 ปี (เริ่มที่สไลด์ # 11) แต่ยังมีประเด็นอยู่ การกำหนดค่าตามความชอบสำหรับ nameserver หลักและลูกจะแตกต่างกันไป นอกเหนือจากนั้นคุณสามารถนับได้ตามข้อกำหนด RFC 2181 เท่านั้น
Andrew B

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

@ เสียเริ่มต้นจากสไลด์ # 11 และสังเกตรูปแบบที่สาม: child centric non-sticky ( PPPCCCPPPCCC...), child centric sticky ( PPPCCCCCC...) และ parent parent ( PPPPPP...) เด็กเป็นศูนย์กลางไม่เหนียวเหนอะหนะคือไกลโดยที่พบมากที่สุดและเด็กเป็นศูนย์กลางเหนียวเป็นจริงมากขึ้นแพร่หลายกว่าเหนียวปกครอง ลูกค้าจะเด้งกลับไปกลับมาระหว่างความเป็นจริงทั้งสองเวอร์ชันหากข้อมูล NS ของเด็กและผู้ปกครองไม่สอดคล้องกันเว้นแต่ว่าซอฟต์แวร์ตัวแก้ปัญหาเป็นตัวยึดหลักซึ่งเป็นผลลัพธ์ที่น่าจะเกิดน้อยที่สุด
Andrew B

3

ระเบียน NS โซนที่มอบสิทธิ์มอบความสมบูรณ์ของคำจำกัดความของโดเมน เซิร์ฟเวอร์ NS เองจะใช้ไฟล์โซน พวกเขาไม่คาดว่าจะพยายามค้นหาตัวเองด้วยการทำแบบสอบถามแบบเรียกซ้ำจากเซิร์ฟเวอร์ราก ระเบียน NS ในไฟล์โซนมีฟังก์ชั่นอื่น ๆ อีกจำนวน ..

เซิร์ฟเวอร์แคชอาจรีเฟรชรายชื่อเซิร์ฟเวอร์โดยการสอบถามเซิร์ฟเวอร์ชื่อจากแคช ตราบใดที่เซิร์ฟเวอร์แคชรู้ที่อยู่ของเซิร์ฟเวอร์ชื่อมันจะใช้ข้อมูลนั้นแทนที่จะค้นหาระเบียน NS ที่เหมาะสมซ้ำ ๆ

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

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

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

ในกรณีของการแยก DNS (ภายใน / ภายนอก) อาจต้องมีชุดเซิร์ฟเวอร์ DNS อื่น ในกรณีนี้รายการ NS (และข้อมูลอื่น ๆ ที่เป็นไปได้) จะแตกต่างกันและระเบียน NS ในไฟล์โซนจะแสดงรายการรายชื่อเซิร์ฟเวอร์ที่เหมาะสม

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