วิธีการบังคับใช้ dnsmasq เพื่อใช้เซิร์ฟเวอร์ upstream dns สำหรับชื่อโดเมนที่ระบุเท่านั้น


16

ตอนนี้ฉันมีบรรทัดต่อไปนี้ใน dnsmasq.conf ซึ่งจัดการคำขอทั้งหมดได้ดี ( /#/ตรงกับโดเมนใด ๆ จำเป็นต้องมี):

address=/#/127.0.0.1

ยังมีบางโดเมนซึ่งจำเป็นต้องได้รับการแก้ไขเพื่อที่อยู่ IP 127.0.0.1อื่นที่ไม่ใช่

ในฐานะที่เป็นโซลูชั่นชั่วคราวพวกเขาได้รับการเพิ่มไปที่/etc/hosts:

209.85.148.95   ajax.googleapis.com
207.97.227.245  underscorejs.org
72.21.194.31    s3.amazonaws.com

น่าเสียดายที่นี่เป็นวิธีแก้ปัญหาชั่วคราว: มันจะหยุดทำงานทันทีที่ที่อยู่ IP ของการเปลี่ยนแปลงโดเมนเป้าหมาย

คำถามของฉันคือ: วิธีการบังคับใช้ dnsmasq เพื่อใช้เซิร์ฟเวอร์ upstream dns สำหรับการแก้ไขที่อยู่ IP ของชื่อโดเมนบางชื่อ (ระบุ)?

คำตอบ:


29

คุณสามารถทำได้โดยใช้server=คำสั่งเช่น

server=/ajax.googleapis.com/8.8.8.8

จะสอบถามเซิร์ฟเวอร์ DNS สาธารณะ google สำหรับโดเมน ajax.googleapis.com เช่นเดียวกัน

server=/amazonaws.com/209.244.0.3

จะสอบถามเซิร์ฟเวอร์ DNS สาธารณะของ Level3 สำหรับโดเมน amazonaws.com

คุณสามารถจัดกลุ่มหลายโดเมนเข้าด้วยกัน

server=/co.uk/com/8.8.4.4

จะส่งโดเมน. co.uk และ. com ไปยังเซิร์ฟเวอร์ DNS ที่ 8.8.4.4

คุณสามารถมีหลายserver=คำสั่งได้เช่นกัน

−S, --server = [/ [<domain>] / [โดเมน /]] [<ipaddr> [# <port>] [@ <source> [# <port>]]]

ระบุที่อยู่ IP ของผู้ให้บริการต้นน้ำโดยตรง การตั้งค่าสถานะนี้ไม่ระงับการอ่าน /etc/resolv.conf ใช้ -R เพื่อทำเช่นนั้น หากมีการระบุโดเมนตัวเลือกตั้งแต่หนึ่งตัวขึ้นไปเซิร์ฟเวอร์นั้นจะใช้สำหรับโดเมนเหล่านั้นเท่านั้นและพวกเขาจะถูกสอบถามโดยใช้เซิร์ฟเวอร์ที่ระบุเท่านั้น สิ่งนี้มีไว้สำหรับเนมเซิร์ฟเวอร์ส่วนตัว: หากคุณมีเนมเซิร์ฟเวอร์ในเครือข่ายของคุณซึ่งเกี่ยวข้องกับชื่อของแบบฟอร์ม xxx.internal.thekelleys.org.uk ที่ 192.168.1.1 ให้ตั้งค่าสถานะ -S /internal.thekelleys.org.uk/ 192.168.1.1 จะส่งข้อความค้นหาทั้งหมดสำหรับเครื่องภายในไปยัง Nameserver นั้นทุกอย่างจะไปที่เซิร์ฟเวอร์ใน /etc/resolv.conf ข้อกำหนดของโดเมนที่ว่างเปล่า // มีความหมายพิเศษของ "ชื่อที่ไม่มีเงื่อนไขเท่านั้น" คือชื่อที่ไม่มีจุดใด ๆ อาจระบุพอร์ตที่ไม่ได้มาตรฐานเป็นส่วนหนึ่งของที่อยู่ IP โดยใช้อักขระ #

อนุญาตยังเป็นธง -S ซึ่งให้โดเมน แต่ไม่มีที่อยู่ IP; สิ่งนี้บอก dnsmasq ว่าโดเมนเป็นโลคัลและอาจตอบแบบสอบถามจาก / etc / hosts หรือ DHCP แต่ไม่ควรส่งต่อข้อความค้นหาในโดเมนนั้นไปยังเซิร์ฟเวอร์ upstream ใด ๆ ท้องถิ่นเป็นคำพ้องสำหรับเซิร์ฟเวอร์ที่จะทำให้ไฟล์การกำหนดค่าที่ชัดเจนในกรณีนี้

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


ฉันไม่คิดว่าเขาต้องการหลายserverบรรทัด: สิ่งใดก็ตามที่ที่อยู่ที่เขาต้องการล้มเหลวในการแก้ไข (127.0.0.1) เขาสามารถเพิ่มพวกเขาด้วยaddressบรรทัด; สิ่งอื่น DNSMasq serverจะสอบถาม ค่อนข้างแน่ใจว่าเป็นวิธีการตั้งค่าของฉัน
gravyface

1
@gravyace: ฉันอ่านคำถามว่าต้องการแก้ไขทุกอย่างเป็น 127.0.0.1 โดยมีข้อยกเว้นบางอย่างซึ่งเขาต้องการใช้ DNS เพื่อแก้ไขปัญหาในกรณีที่พวกเขาเปลี่ยนที่อยู่ฉันเห็นวิธีการทำเช่นนี้คือการใช้คำสั่งเซิร์ฟเวอร์
user9517

อาจจะ ใครจะรู้. ไม่ว่าจะด้วยวิธีใดเขาก็ควรจะไป
gravyface

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