0

I've installed 19.04 and removed dsnmasq, disabled systemd-resolve using

sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved

and want to use Network Manager to set manually my DNS servers. Now I want to configure a different DNS server, so I went to the network icon on the bar and clicked Wired -> Wired Settings -> Configure -> IPV4, select Automatic (DHCP) and disable DNS as automatic, putting my desired DNS servers. Even after rebooting, my /etc/resolv.conf file now only gets 127.0.0.53, not matter what I do on the Nettwork Manager configuration. Is there a way for the /etc/resolv.conf file to be configured by Network manager?

  • Yes... sigh... quit disabling parts of your OS. /etc/resolv.conf should show 127.0.0.53. make sure that the /etc/resolv.conf symlink is intact. reinstall dnsmasq-base. re-enable and start systemd-resolved. Use resolvectl or systemd-resolve --status to check your DNS configuration. – heynnema Jul 18 at 14:23
  • Thanks, but no thanks. I have a local DNS resolver that I want to use directly, without any caching by the OS. I don't want systemd to resolve DNS for me. – Ivan Jul 18 at 14:35
  • But... how do you expect your system to resolve ANY DNS when you disable the two services that do that? – heynnema Jul 18 at 14:42
  • Incredibly, removing both systemd-resolve and dnsmasq and configuring the DNS server with the old fashioned /etc/resolv.conf using Network Manager works as expected. See my answer below. – Ivan Jul 18 at 14:45
0

I've found a solution.

First, disable systemd-resolve:

sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved

Remove the symlink for resolv.conf and create a file:

rm -rf /etc/resolv.conf
touch /etc/resolv.conf
chmod a+rw /etc/resolv.conf

Now change the configuration file for Network Manager to restore the expected result: vi /etc/NetworkManager/NetworkManager.conf:

[main]
plugins=ifupdown,keyfile
# add this line
dns=default

and leave the rest of the file as is. Restart Network Manager:

sudo /etc/init.d/network-manager restart

and configure your preferred DNS servers. Done!

  • A more standard way to do this... without disabling services... or modifying the /etc/resolv.conf symlink... is to edit /etc/systemd/resolved.conf and change the #DNS=` line... – heynnema Jul 18 at 14:49
  • And change to what, exactly? Can you provide some documentation about how this configuration would follow what is configured in NM? See, I don't want to hardcode DNS servers on files, I want to configure DNS per connection using NM. – Ivan Jul 18 at 14:49
  • #DNS= becomes DNS=8.8.8.8 8.8.4.4. Change the DNS addresses to your own. Or do it as you suggest... individually via NM GUI. – heynnema Jul 18 at 14:51
  • Yeah, that's my point. I don't want to hardcode to some DNS because I'm configuring a laptop. When I'm in some places I want to use some specific DNS, when in others I want to use DHCP to provide DNS for me. If I hardcode the google DNS I'll be always using it. My solution seems to make it work the way I want it. – Ivan Jul 18 at 14:52
  • Yes, that's my point. If you put everything back the way it was... and configured DNS via the NM GUI... then using the resolvectl or systemd-resolve --status commands, you'd see that everything works as expected. – heynnema Jul 18 at 14:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.