“ Pinging” โดยใช้โปรโตคอล DNS
มี "แนวปฏิบัติที่ดี" ที่เป็นที่ยอมรับสำหรับการตรวจสอบว่าการเชื่อมต่อเครือข่ายกับเซิร์ฟเวอร์ DNS นั้นทำงานได้หรือไม่และเซิร์ฟเวอร์ตอบสนองน้อยที่สุดนอกเหนือจากการออกคำขอค้นหาหรือไม่ เมื่อดูรหัสสำหรับ Nagios เป็นตัวอย่างหนึ่งฉันสังเกตเห็นว่าดูเหมือนว่าจะมุ่งเน้นไปที่ "ชื่อนี้แก้ไขหรือไม่" แทนที่จะเป็น "เซิร์ฟเวอร์ใช้ได้หรือไม่"
ฉันได้ลองใช้การค้นหาที่ว่างเปล่า แต่ดูเหมือนว่าจะถูกละเว้น ฉันได้ลองขอสถานะเซิร์ฟเวอร์แล้วและในขณะที่บางคนตอบกลับ (โดยทั่วไปจะ "ไม่ได้ใช้งาน") บางคนก็เพิกเฉยต่อคำขอ ฉันต้องการสิ่งที่ดีกว่าการใช้ ping เนื่องจากฉันได้เห็นระบบเซิร์ฟเวอร์มากมายที่เพิกเฉยต่อการปิงและเนื่องจากความยุ่งยากในการยุ่งเกี่ยวกับความสามารถเป็นต้น
ในปัจจุบันฉันสงสัยว่าโซลูชันเดียวที่เชื่อถือได้อย่างต่อเนื่องคือการค้นหาบางอย่างเช่น google.com โดยสมมติว่าเซิร์ฟเวอร์จะมีแคชนี้จะใช้ความพยายามเพียงเล็กน้อยในการตอบสนอง: เนื่องจากฉันต้องทำสิ่งนี้ทุกสองสามนาทีฉันไม่ทำ ต้องการทำให้เจ้าของไม่พอใจ
คำตอบ
RFC 6303แสดงรายการโซน DNS จำนวนหนึ่งโดยพื้นฐานแล้วเซิร์ฟเวอร์ DNS ทุกตัวควรสามารถตอบได้โดยพื้นฐานแล้วเพื่อหยุดการสืบค้นเหล่านั้นจากการแพร่กระจายไปยังรากของลำดับชั้น DNS โดยไม่จำเป็นหากโซนเหล่านั้นไม่ได้ใช้เพื่อวัตถุประสงค์ในท้องถิ่นใด ๆ
ที่เก่าแก่ที่สุดและเป็นที่รู้จักมากที่สุดคือโซนย้อนกลับสำหรับเครือข่ายย้อนกลับและโดยเฉพาะอย่างยิ่งบันทึก PTR สำหรับที่อยู่ IPv4 127.0.0.1 (เช่น FQDN 1.0.0.127.in-addr.arpa.
) โดยพื้นฐานแล้วเซิร์ฟเวอร์ DNS ทุกตัวควรสามารถให้บริการนั้นได้โดยไม่ต้องสอบถามเซิร์ฟเวอร์ DNS อื่น ๆ
ดังนั้นแม้ว่าในdig -x 127.0.0.1 @dns-server-address
ทางเทคนิคจะเป็นแบบสอบถามสำหรับระเบียนหนึ่ง ๆ แต่ก็ใช้ได้อย่างมีประสิทธิภาพในฐานะ "เซิร์ฟเวอร์ใช้ได้หรือไม่" ทดสอบเนื่องจากเป็นบันทึกทุกเซิร์ฟเวอร์ DNS ควรสามารถแก้ไขได้โดยใช้ความพยายามเพียงเล็กน้อยและไม่ต้องติดต่อกับเซิร์ฟเวอร์ DNS อื่น ๆ
คำค้นหาสำหรับชื่อlocalhost.
ควรใช้ได้ดีเพียงแค่สังเกตว่าคุณควรใส่จุดหยุดแบบเต็มในตอนท้ายอย่างชัดเจนเพื่อระบุว่าชื่อที่คุณกำลังค้นหานั้นมีคุณสมบัติครบถ้วนแล้วเพื่อป้องกันไม่ให้เครื่องมือที่คุณกำลังใช้เพิ่มขึ้น คำต่อท้ายโดเมนท้องถิ่นของคุณซึ่งอาจบิดเบือนผลลัพธ์