dnsmasq重新启动时,resolv.conf不断被覆盖,从而破坏了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

第三个文件似乎是dnsmasq的实时resolv.conf文件,因为在dnsmasq已经运行时向其添加名称服务器行会导致DNS解析立即开始工作。所以看起来它忽略了我的/etc/resolv.dnsmasq。我还尝试了向其添加名称服务器行/etc/resolv.conf并删除其中的resolv-file/etc/dnsmasq.conf,但是这样做后,它立即被您上面看到的内容覆盖sudo service dnsmasq restart

dnsmasq怎么回事,我是否将dnsmasq配置为缓存DNS服务器?


1
如果只需要静态服务器,为什么不放入server=8.8.8.8dnsmasq配置?
三胞胎

我在想,no-poll基本上说忽略了resolv-file。在启动时,它将采用哪个较新的文件,/etc/resolv.conf以您的情况为准(因为在某些更改时它会被重写)。
三胞胎

如果我不止一个DNS服务器,我仍然不知道正确的方法是什么,但是由于我不满意,我很高兴您的评论解决了我的问题。
nullUser 2015年

Answers:



3

bigjosh是正确的-除了对dnsmasq进行了更新之外,现在还有一个选项供/etc/default/dnsmasq您取消哈希处理:

IGNORE_RESOLVCONF=yes

这就是我在Ubuntu 16.04上进行复杂设置的方式。
Ikon

1
bigjosh的方式对我有用。即使/etc/defaults/dnsmasqIGNORE_RESOLVECONF=yes指示取消注释以解决此问题,但事实并非如此。
andho '18

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不能做其他任何事情,那么最好安装lwresdunbound使用库存默认配置为您提供纯缓存的DNS服务器。然后,您只需设置/etc/resolv.conf为使用“名称服务器127.0.0.1”即可。

令人高兴的是,这两个软件包不会/etc/resolv.conf像dnsmasq那样混乱,因此是一种更干净的解决方案恕我直言。通常,您也可以删除resolvconf软件包,以免混乱/etc/resolv.conf

仅供参考,dnsmasq已经变得相当复杂,太多的花哨声响,正给大多数人造成痛苦。在我的书中违反了KISS。


不幸的是,有些软件包依赖于dnsmasq-base,例如network-managerlibvirt-bin(如果您正在执行KVM),因此并不总是能够完全摆脱它。在这种情况下,您可以删除/usr/sbin/dnsmaq它并使其成为硬链接,/bin/true以便它总是成功(使init脚本愚弄),然后chattr +i /usr/sbin/dnsmasq锁定它以免被更新。我不得不在几台笔记本电脑上做到这一点。
milli 2015年

+1以及在philandstuff.com/2013/11/07/dnsmasq-resolvconf.html中描述。真正令人恶心的行为,甚至在发布错误报告后的5年后仍引起痛苦……
user2480144
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.