resolv.conf ยังคงถูกเขียนทับเมื่อ dnsmasq ถูกรีสตาร์ทแบ่งเป็น dnsmasq


9

ฉันใช้ Debian Jessie และฉันพยายามกำหนดค่า dnsmasq เป็นเซิร์ฟเวอร์แคช DNS ฉันใช้คำแนะนำเพื่อหาสิ่งต่อไปนี้/etc/dnsmasq.conf:

listen-address=127.0.0.1
bind-interfaces
domain-needed
bogus-priv
no-hosts
dns-forward-max=150
cache-size=1000
neg-ttl=3600
resolv-file=/etc/resolv.dnsmasq
no-poll

การทำsudo service dnsmasq restartล้มเหลวและจะไม่เริ่มบอกฉัน

Mar 26 17:13:01 user dnsmasq[26743]: dnsmasq: syntax check OK.
Mar 26 17:13:01 user dnsmasq[26746]: dnsmasq: only one resolv.conf file allowed in no-poll mode.

ตกลงแปลกที่การกำหนดค่าโดยตรงจากคู่มือล้มเหลว ฉันจะลบno-pollตัวเลือกเพื่อดูว่าใช้งานได้หรือไม่ คราวนี้มันเริ่มดี แต่การแก้ไข DNS ล้มเหลวอย่างชัดเจน ไฟล์ที่เกี่ยวข้อง:

/etc/resolv.conf:

nameserver 127.0.0.1

/etc/resolv.dnsmasq:

nameserver 8.8.8.8

/var/run/dnsmasq/resolv.conf:

nameserver 127.0.0.1

ไฟล์ที่สามดูเหมือนจะเป็นไฟล์สด resolv.conf ของ dnsmasq เนื่องจากการเพิ่มบรรทัดเนมเซิร์ฟเวอร์ในขณะที่ dnsmasq กำลังทำงานอยู่ทำให้การแก้ไข DNS เริ่มทำงานได้ทันที /etc/resolv.dnsmasqดังนั้นดูเหมือนว่ามันไม่สนใจฉัน ฉันได้ลองเพิ่มบรรทัด nameserver ไปที่ของฉัน/etc/resolv.confและลบresolv-fileบรรทัดเข้าไป/etc/dnsmasq.confแต่มันจะถูกเขียนทับในสิ่งที่คุณเห็นด้านบนsudo service dnsmasq restartทันที

เกิดอะไรขึ้นกับ dnsmasq และฉันจะกำหนดค่า dnsmasq เป็นเซิร์ฟเวอร์แคช DNS ได้หรือไม่


1
ถ้าคุณแค่ต้องการเซิร์ฟเวอร์แบบสแตติกทำไมคุณไม่ใส่server=8.8.8.8ใน dnsmasq config ล่ะ?
tripleee

ฉันคิดโดยทั่วไปว่าจะไม่สนใจno-poll resolv-fileเมื่อเริ่มต้นระบบจะใช้ไฟล์ใดก็ตามที่ใหม่กว่าซึ่งจะอยู่/etc/resolv.confในกรณีของคุณ (เพราะไฟล์จะถูกเขียนใหม่เมื่อมีการเปลี่ยนแปลง)
tripleee

ฉันยังไม่รู้ว่าวิธีการที่ถูกต้องคืออะไรหากฉันมีเซิร์ฟเวอร์ DNS มากกว่าหนึ่งตัว แต่เนื่องจากฉันไม่ทราบฉันยินดีที่คำพูดของคุณจะแก้ไขปัญหาของฉัน
nullUser

คำตอบ:


11

ดูเหมือนจะมีข้อผิดพลาดในสคริปต์เริ่มต้นสำหรับการdnsmasqที่จะใช้resolvconfตัวแก้ไขตัวแก้ไขท้องถิ่นหากอินเตอร์เฟสลูปแบ็คท้องถิ่นไม่ได้กำหนดอย่างชัดเจนexceptใน/etc/defaults/dnsmasqไฟล์

คำตอบสั้น ๆ คือคุณสามารถเพิ่ม ...

DNSMASQ_EXCEPT=lo

เพื่อ/etc/defaults/dnsmasqแก้ปัญหา

สำหรับข้อมูลเพิ่มเติมดูคำถามนี้ ...

/raspberrypi/37439/proper-way-to-prevent-dnsmasq-from-overwriting-dns-server-list-supplied-by-dhcp


สิ่งนี้ช่วยชีวิตฉันได้ ขอบคุณ.
Ryan Bobrowski

3

bigjosh ถูกต้อง - ยกเว้นมีการอัปเดตเป็น dnsmasq และตอนนี้มีตัวเลือกในตอนท้าย/etc/default/dnsmasqซึ่งคุณสามารถยกเลิกการแฮชได้:

IGNORE_RESOLVCONF=yes

นี่คือวิธีการทำงานกับการตั้งค่าที่ซับซ้อนของฉันบน Ubuntu 16.04
Ikon

1
วิธีการของ bigjosh เหมาะกับฉัน แม้ว่าจะ/etc/defaults/dnsmasqมีIGNORE_RESOLVECONF=yesคำแนะนำในการยกเลิกข้อคิดเห็นเพื่อแก้ไขปัญหานี้ซึ่งไม่ได้
andho

2

อย่าใช้

resolv-file=/etc/resolv.dnsmasq

ใส่เซิร์ฟเวอร์ DNS ลงใน dnsmasq.conf เช่น

server=/localnet/192.168.0.1 # change ip for your ip-server
server=8.8.8.8
server=8.8.4.4

และเพิ่มเข้าไปใน dnsmasq.conf

no-resolv

1

หากคุณต้องการเซิร์ฟเวอร์ DNS ที่ใช้แคชเท่านั้นและไม่มีอะไรแปลกที่ dnsmasq สามารถทำได้คุณควรทำการติดตั้งให้ดีกว่าlwresdหรือunboundใช้การกำหนดค่าเริ่มต้นหุ้นซึ่งให้เซิร์ฟเวอร์ DNS สำหรับการแคชเท่านั้น จากนั้นคุณเพียงตั้งค่า/etc/resolv.confให้ใช้ "nameserver 127.0.0.1" และคุณทำเสร็จแล้ว

สิ่งที่ดีคือแพ็คเกจทั้งสองนี้ไม่ยุ่งกับสิ่งที่/etc/resolv.confdnsmasq ทำและเป็นวิธีที่สะอาดกว่า IMHO นอกจากนี้คุณยังสามารถจะเอาresolvconfแพคเกจดังนั้นไม่มีอะไรยุ่ง ๆ /etc/resolv.confกับ

FYI, dnsmasq ได้รับค่อนข้างซับซ้อน, ระฆังและนกหวีดมากเกินไปและเป็นเพียงการสร้างความเจ็บปวดให้กับคนส่วนใหญ่อีกต่อไป ละเมิด KISS ในหนังสือของฉัน


น่าเสียดายที่บางแพ็คเกจขึ้นอยู่กับdnsmasq-baseเช่นnetwork-managerและlibvirt-bin(ถ้าคุณกำลังทำ KVM) ดังนั้นจึงไม่สามารถกำจัดได้อย่างสมบูรณ์ ในกรณีนี้คุณสามารถลบ/usr/sbin/dnsmaqและทำให้เป็นฮาร์ดลิงก์เพื่อ/bin/trueให้สำเร็จเสมอ (เพื่อหลอกสคริปต์เริ่มต้น) จากนั้นchattr +i /usr/sbin/dnsmasqล็อคเพื่อไม่ให้อัปเดต ฉันต้องทำสิ่งนี้กับแล็ปท็อปหลายเครื่อง
พันล้าน

+1 อธิบายไว้เช่นกันในphilandstuff.com/2013/11/07/dnsmasq-resolvconf.html พฤติกรรมน่าขยะแขยงจริงๆและยังคงทำให้เกิดอาการปวดแม้ 5 ปีหลังจากโพสต์และรายงานข้อผิดพลาด ...
user2480144
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.