โกหกผูกแคช DNS


0

ฉันพยายามกำหนดค่าเพื่อโทรหาเซิร์ฟเวอร์ DNS "โกหก"

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

พฤติกรรมที่ต้องการคือ:

  • เมื่อสอบถาม "host.domain.com" หากมีรายการสำหรับมันใน db ของตัวเองแล้วตอบด้วย

  • ถ้ามันไม่ได้อยู่ในฐานข้อมูลของมันให้ถามไปที่ต้นแบบ (และแคชทางเลือกคำตอบนั้น)

ฉันรู้ว่าฉันสามารถวาง bind9 เป็นเซิร์ฟเวอร์ทาสได้ แต่ด้วยวิธีนี้ทุกข้อสงสัยจะได้รับการตอบกลับด้วยคำตอบเดียวกับที่เซิร์ฟเวอร์จริงจะตอบกลับ

แน่นอนมันเป็นการติดตั้งที่ยุ่งยากฉันรู้ แต่มันมีวัตถุประสงค์ที่เป็นประโยชน์:

ลองนึกภาพคุณมีบริการที่ซับซ้อน (ตัวอย่างเช่นการกำหนดค่าสำรองข้อมูลและสคริปต์ของ Bacula ในกรณีของฉัน) และคุณต้องการทดสอบกับเซิร์ฟเวอร์ที่ใช้งานจริงก่อนที่จะนำไปใช้จริง

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

แน่นอนฉันสามารถใช้รายการของรายการใน/ etc / hostsได้ แต่ต้องมีการตั้งค่ามากขึ้นและเกิดข้อผิดพลาดได้ง่ายขึ้น (ฉันมีสภาพแวดล้อมการทดสอบแบบอัตโนมัติเต็มรูปแบบกับ Vagrant แต่ IP สามารถเปลี่ยนแปลงได้บางครั้ง)

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

ฉันกำหนดค่าเซิร์ฟเวอร์ dns หลักสำหรับโดเมนของเราสำเร็จและแก้ไขรายการและแบบสอบถามของตัวเองไปยังโดเมนอื่นอย่างถูกต้อง แต่ไม่รู้เกี่ยวกับข้อมูลของเซิร์ฟเวอร์โดเมนจริง

ฉันคิดว่ามันควรจะเป็นไปได้ที่จะเข้าใกล้กับการผูก แต่ฉันไม่รู้ที่จะค้นหา ...

คำตอบ:


1

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

นี่คือตัวอย่างของวิธีที่คุณใช้คุณลักษณะนี้เพื่อบังคับให้เปิดใช้งานการค้นหาที่ปลอดภัยของ Google ซึ่งจะแทนที่ระเบียน google.com, www.google.com และ google.ca

named.conf

options {
    ...
    response-policy { zone "rpz"; };
};

zone "rpz" IN {
        type master;
        file "rpdb.zone";
        allow-query {none;};
};

rpdb.zone

$TTL 10800
@ IN SOA localhost. hostmaster.example.org. (
        2014110500;
        10800;
        3600;
        604800;
        10800 )

        IN      NS      localhost.

; Google forced Safe Search
google.com      IN CNAME forcesafesearch.google.com.
www.google.com  IN CNAME forcesafesearch.google.com.
google.ca       IN CNAME forcesafesearch.google.com.

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


ขอบคุณสำหรับคำตอบ. น่าเสียดายที่ฉันคิดว่าฉันไม่เข้าใจดีมาก ... ฉันต้องบอกว่าฉันเป็นมือใหม่ในการกำหนดค่า Bind แต่ความแตกต่างที่สำคัญที่ฉันเห็นระหว่างตัวอย่างของคุณกับการตั้งค่าของฉัน (สมมติว่าชื่อโซนไม่สำคัญ) คือallow-query {none;};บรรทัด . แต่ถ้าฉันเพิ่มมันก็ไม่ได้แก้ไขชื่อโฮสต์ในฐานข้อมูลของตัวเอง แน่นอนฉันมี A register เท่านั้น แต่การใช้ CNAME เท่านั้นไม่ใช่ตัวเลือกเนื่องจากเซิร์ฟเวอร์ทดสอบไม่ได้ลงทะเบียนใน DNS ที่ใช้งานจริงแม้จะใช้ชื่ออื่น
bitifet

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

0

คำตอบบางส่วน (ใช้ได้กับการตั้งค่าของฉัน แต่ไม่เหมือนคำถามทั่วไปของฉัน):

ในกรณีของฉันฉันเพียงแค่ต้องการแทนที่อยู่ของโดเมนย่อยโดยเฉพาะอย่างยิ่งโดยเฉพาะbacula.ourDomain.com

ดังที่ฉันได้กล่าวว่าฉันกำหนดค่าการผูกเป็นหลักสำหรับbacula.ourDomain.com ได้สำเร็จแต่ฉันไม่สามารถแก้ไขโฮสต์อื่น ๆ ของourDomain.comได้

ตอนนี้ฉันเพิ่งเพิ่มนี้:

options {
  [...]
  forwarders {<real_ns_ip>;};
  [...]
}

วิธีนี้จะช่วยแก้ปัญหาเซิร์ฟเวอร์ของฉันสำหรับbacula.ourDomain.comแต่สำหรับส่วนที่เหลือของourDomain.comขอให้<real_ns_ip>

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

@Zoredache น่าจะเป็นทางออกที่ดีกว่า แต่ฉันก็ยังไม่ประสบความสำเร็จในการฝึกฝน

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