Make dnsmasq not altering resolv.conf

8,774

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

  1. systemctl disable resolvconf.service
  2. systemctl stop resolvconf.service
  3. rm -f /etc/resolv.conf
  4. echo 'nameserver 8.8.8.8' > /etc/resolv.conf # or any other IP you want to use as DNS server
  5. systemctl restart dnsmasq.service # just for testing
  6. 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.

Share:
8,774

Related videos on Youtube

Al Klimov
Author by

Al Klimov

Updated on September 18, 2022

Comments

  • Al Klimov
    Al Klimov over 1 year

    Every time I (re)start dnsmasq it replaces /etc/resolv.conf with nameserver 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 nor chattr +i /etc/resolv.conf is an option.

  • Al Klimov
    Al Klimov about 7 years
    Unfortunately this doesn't help.
  • airhuff
    airhuff about 7 years
    So, 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 the no-resolv option for dnsmasq help? Have I completely missed the crux of your question?
  • Al Klimov
    Al Klimov about 7 years
    The maschine runs no dns server other than dnsmasq. No, no-resolv doesn't help.