DNS หมดเวลาอย่างไรควรทำงานอย่างไร


9

ฉันเพิ่งมีปัญหาที่บริการระยะไกลที่ขอที่อยู่ IP สำหรับเซิร์ฟเวอร์ของฉัน (กับผู้ให้บริการโฮสต์ DNS) กำลังตอบสนองด้วย:

DNS problem: SERVFAIL looking up A for mysql.xavamedia.nl

(อัปเดต: บริการระยะไกลที่กล่าวถึงที่นี่คือ Let's Encrypt ฉันยื่นข้อผิดพลาดกับตัวติดตามปัญหาซึ่งนำฉันมาบนเส้นทางนี้)

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

นี่คือคำอธิบาย Wireshark ของข้อความตอบกลับที่ว่างเปล่า:

ภาพหน้าจอ Wireshark ของการตอบสนองที่ว่างเปล่า

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

มีใครรู้บ้างเกี่ยวกับแนวทางว่าควรทำงานอย่างไรและเมื่อใด / ฉันจะพิสูจน์ว่าการโฮสต์ DNS ของฉันกำลังทำอะไรผิดพลาด


1
คุณช่วยอัพเดทคำถามเพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับการตอบกลับที่ว่างเปล่าได้ไหม? นั่นอาจหมายถึงหลายสิ่งขึ้นอยู่กับการตั้งค่าสถานะและส่วนของผู้มีอำนาจดูเหมือน เราต้องการเห็นผลลัพธ์ของdig/ nslookupหรือการผ่าแบบ Wireshark ( tcpdumpจะไม่ดีพอ) หากคุณใช้งานnslookupให้ดำเนินการset debugก่อน
Andrew B

ฉันมี pcap แต่ไม่แน่ใจว่าฉันจะแสดงได้ดีที่สุดที่นี่ได้อย่างไร
djc

1
เปิดใน Wireshark คลิกที่แพ็กเก็ตแล้วขยายข้อมูลสำหรับโปรโตคอล DNS ขยายหมวดหมู่ย่อยเช่นกันจากนั้นโพสต์ภาพหน้าจอในคำถามของคุณโดยใช้ปุ่มแทรกภาพ คุณสามารถครอบตัดภาพหน้าจอเป็นสิ่งโปรโตคอล DNS
Andrew B

คำตอบ:


6

NODATAการตอบสนองที่ว่างเปล่าที่คุณกำลังมองหาที่เป็นรัฐสังเคราะห์ที่รู้จักในฐานะ NODATAและNXDOMAINทั้งคู่ระบุว่าชื่อไม่มีอยู่ แต่NXDOMAINใช้กับชื่อทั้งหมดที่อยู่ใต้ระเบียนที่ระบุเช่นกัน NODATAขอแนะนำว่าชื่อนั้นเกี่ยวข้องกับบันทึกประเภทที่ไม่ได้รับการร้องขอหรือมีระเบียนอื่น ๆ ที่อยู่ด้านล่างสิ่งที่คุณขอ (เช่นexample.test.xavamedia.nl.)

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

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

มันควรจะตั้งข้อสังเกตว่าไม่มีนี้อธิบายว่าทำไมคุณพบการตอบสนองเมื่อมองขึ้นSERVFAIL mysql.xavamedia.nl.สิ่งนี้ชี้ให้เห็นปัญหาที่เซิร์ฟเวอร์แบบเรียกซ้ำได้รับคำตอบจากเซิร์ฟเวอร์ที่เชื่อถือได้ เซิร์ฟเวอร์ที่มีสิทธิ์ตอบกลับด้วยSERVFAILเซิร์ฟเวอร์ที่เรียกซ้ำไม่สามารถเข้าถึงเซิร์ฟเวอร์ที่มีสิทธิ์ใด ๆ หรือเซิร์ฟเวอร์ที่เกิดซ้ำพิจารณาว่าข้อมูลที่ส่งคืนนั้นไม่ถูกต้อง สิ่งเหล่านี้ไม่สามารถพิสูจน์ได้ด้วยข้อมูลที่คุณให้


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

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

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

@Barmar ใช่สิ่งที่ถูกกล่าวถึงในที่นี้คือเซิร์ฟเวอร์ที่เชื่อถือได้กำลังรายงานว่าไม่มีชื่อเรคคอร์ด + ประเภทคู่และ djc แสดงความสับสนเกี่ยวกับเรื่องนี้เนื่องจากมีการบันทึกไวด์การ์ดที่มีอยู่มาระยะหนึ่งแล้ว
Andrew B

ความคิดเห็นของฉันถูกส่งไปยังจุดแรกของคุณ "NODATA และ NXDOMAIN ทั้งคู่ระบุว่าไม่มีชื่อ" NXDOMAINหมายถึงชื่อไม่มีอยู่NODATAหมายถึงชื่อไม่มีอยู่ แต่ประเภทระเบียนที่ร้องขอไม่มีอยู่
Barmar

2

ฉันไม่ทราบแนวทางเฉพาะใด ๆ ยกเว้นที่กำหนดไว้ในส่วน "6.1.3.3 การใช้ทรัพยากรอย่างมีประสิทธิภาพ" ของ RFC 1123 http://tools.ietf.org/rfcmarkup?rfc=1123#page-77

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

นอกจากนี้ยังมีเธรดสแต็คโอเวอร์โฟลว์เกี่ยวกับหัวข้อนี้ แต่มันไม่มีข้อมูลมากนักยกเว้นการสำรวจในโลกแห่งความจริง /programming/3036054/ideal-timeout-period-for-dns-lookup

นั่นคือทั้งหมดที่ฉันสามารถพูดเกี่ยวกับหัวข้อนี้ หากคนอื่นมีมากกว่าที่จะเพิ่มฉันก็จะสนใจเช่นกัน

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