ฉันพยายามกำหนดค่าเพื่อโทรหาเซิร์ฟเวอร์ DNS "โกหก"
ฉันหมายถึง: เซิร์ฟเวอร์ DNS ที่ทำหน้าที่เป็นแคช DNS (ทาส) สำหรับเซิร์ฟเวอร์ที่มีอยู่ แต่มีชุดย่อยของการลงทะเบียนของตัวเองสำหรับชื่อโดเมนไม่กี่
พฤติกรรมที่ต้องการคือ:
เมื่อสอบถาม "host.domain.com" หากมีรายการสำหรับมันใน db ของตัวเองแล้วตอบด้วย
ถ้ามันไม่ได้อยู่ในฐานข้อมูลของมันให้ถามไปที่ต้นแบบ (และแคชทางเลือกคำตอบนั้น)
ฉันรู้ว่าฉันสามารถวาง bind9 เป็นเซิร์ฟเวอร์ทาสได้ แต่ด้วยวิธีนี้ทุกข้อสงสัยจะได้รับการตอบกลับด้วยคำตอบเดียวกับที่เซิร์ฟเวอร์จริงจะตอบกลับ
แน่นอนมันเป็นการติดตั้งที่ยุ่งยากฉันรู้ แต่มันมีวัตถุประสงค์ที่เป็นประโยชน์:
ลองนึกภาพคุณมีบริการที่ซับซ้อน (ตัวอย่างเช่นการกำหนดค่าสำรองข้อมูลและสคริปต์ของ Bacula ในกรณีของฉัน) และคุณต้องการทดสอบกับเซิร์ฟเวอร์ที่ใช้งานจริงก่อนที่จะนำไปใช้จริง
หากฉันสามารถเปลี่ยนเส้นทาง DNS ชั่วคราวไปยัง DNS "โกหก" ในลักษณะที่ชื่อทั้งหมดจะได้รับการแก้ไขตามปกติยกเว้นบางส่วนของ "maskeraded" โฮสต์บางส่วนจะทำงานเหมือนเป็นการตั้งค่า "ของจริง" แต่ไม่มีการสำรองข้อมูลจริง ที่เก็บข้อมูลเซิร์ฟเวอร์พร้อมการสำรองข้อมูลทดสอบ
แน่นอนฉันสามารถใช้รายการของรายการใน/ etc / hostsได้ แต่ต้องมีการตั้งค่ามากขึ้นและเกิดข้อผิดพลาดได้ง่ายขึ้น (ฉันมีสภาพแวดล้อมการทดสอบแบบอัตโนมัติเต็มรูปแบบกับ Vagrant แต่ IP สามารถเปลี่ยนแปลงได้บางครั้ง)
การโคลนเซิร์ฟเวอร์และใช้เพื่อทำการทดสอบยังต้องใช้งานและทรัพยากรมากขึ้นและอีกครั้งมีข้อผิดพลาดเกิดขึ้นเนื่องจากหลังจากการทดสอบฉันจะต้องกำหนดค่าเซิร์ฟเวอร์จริงด้วยมือในขณะที่ใช้วิธี "โกหก DNS" ฉันแค่ต้องการเรียกคืนไฟล์ resolv.conf ดั้งเดิม
ฉันกำหนดค่าเซิร์ฟเวอร์ dns หลักสำหรับโดเมนของเราสำเร็จและแก้ไขรายการและแบบสอบถามของตัวเองไปยังโดเมนอื่นอย่างถูกต้อง แต่ไม่รู้เกี่ยวกับข้อมูลของเซิร์ฟเวอร์โดเมนจริง
ฉันคิดว่ามันควรจะเป็นไปได้ที่จะเข้าใกล้กับการผูก แต่ฉันไม่รู้ที่จะค้นหา ...
allow-query {none;};
บรรทัด . แต่ถ้าฉันเพิ่มมันก็ไม่ได้แก้ไขชื่อโฮสต์ในฐานข้อมูลของตัวเอง แน่นอนฉันมี A register เท่านั้น แต่การใช้ CNAME เท่านั้นไม่ใช่ตัวเลือกเนื่องจากเซิร์ฟเวอร์ทดสอบไม่ได้ลงทะเบียนใน DNS ที่ใช้งานจริงแม้จะใช้ชื่ออื่น