Make dnsmasq not altering resolv.conf
Solution 1
You can have dnsmasq
use a different resolv.conf
file, so when /etc/resolv.conf
points to 127.0.0.1, dnsmasq
will actually just use the other resolv.conf
file and leave /etc/resolv.conf
alone.
Add the following line to your dnsmasq.conf
file:
resolv-file=/etc/dnsmasq.d/dnsmasq-resolv.conf
And then create the file /etc/dnsmasq.d/dnsmasq-resolv.conf
to look something like this:
nameserver 208.67.222.222
nameserver 208.67.220.220
Solution 2
dnsmasq itself is not altering resolv.conf
If you have your configuration file and start it manually via dnsmasq -d -C <yourconfig>
you see that.
This behaviour comes from systemd unit on debian and probably on ubuntu systems and perhaps on other distributions.
Stop dnsmasq via sudo systemctl stop dnsmasq
(because otherwise changed /etc/resolv.conf won't be restored)
edit /etc/systemd/system/multi-user.target.wants/dnsmasq.service
and comment out both lines
#ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf
#ExecStop=/etc/init.d/dnsmasq systemd-stop-resolvconf
exec sudo systemctl daemon-reload
after that you can start dnsmasq and your /etc/resolv.conf file won't be changed by dnsmasq
Solution 3
systemctl disable resolvconf.service
systemctl stop resolvconf.service
rm -f /etc/resolv.conf
echo 'nameserver 8.8.8.8' > /etc/resolv.conf # or any other IP you want to use as DNS server
systemctl restart dnsmasq.service # just for testing
cat /etc/resolv.conf # just to verify
The machine won't be able to get the DNS server address(es) via DHCP, but it solves the problem.
Related videos on Youtube
Al Klimov
Updated on September 18, 2022Comments
-
Al Klimov over 1 year
Every time I (re)start dnsmasq it replaces
/etc/resolv.conf
withnameserver 127.0.0.1 ...
.However that maschine has not to use the local DNS service. (Please don't ask why, the whole environment is like it is...)
How do I actually prevent dnsmasq from touching
/etc/resolv.conf
?Neither removing
resolvconf
norchattr +i /etc/resolv.conf
is an option. -
Al Klimov about 7 yearsUnfortunately this doesn't help.
-
airhuff about 7 yearsSo, it looks like I missed something. I'm guessing it's related to your DNS configuration, and that you have a "real" DNS server listening on 127.0.0.1, other than
dnsmasq
, which is why/etc/resolv.conf
cannot point to 127.0.0.1 (as you said you don't want the local machine using the local DNS)? Would theno-resolv
option fordnsmasq
help? Have I completely missed the crux of your question? -
Al Klimov about 7 yearsThe maschine runs no dns server other than
dnsmasq
. No,no-resolv
doesn't help.