Setting DNS via NetworkManager/nm-applet doesn't update the /etc/resolv.conf (17.10)

My /etc/resolv.conf shows

# Generated by NetworkManager
search [value provided by local network]
nameserver 127.0.1.1

The nameserver value is not the one provided by the local network (checked using nm-applet), but the search is.
I've removed dns=dnsmasqd from /etc/NetworkManager/NetworkManager.conf. There's only dnsmasq-base installed.

I don't want to set DNS permanently because I still want resolv.conf to be updated by the VPN, so
no prepend domain-name servers in /etc/dhcp/dhclient.conf
no dns-nameservers in /etc/network/interfaces
no /etc/resolvconf/resolv.conf.d/ base head tail files.

resolv.conf remains the same when I set the DNS on nm-applet using Automatic (DHCP).
When I set Automatic (DHCP) addresses only, there is no search value, but nameserver 127.0.1.1 is still in resolv.conf.

Edit: Did some more checking. /etc/NetworkManager/dnsmasq.d is empty.

$ cat /usr/lib/NetworkManager/conf.d/10-dns-resolved.conf 
[main]
dns=systemd-resolved


/etc/systemd/resolved.conf is all commented out.

$ systemd-resolve --status
Global
         DNS Servers: 127.0.1.1
          DNS Domain: [same as resolv.conf]

How do I configure that the DNS values from nm-applet overrides the systemd-resolve?.

Ultimately, what I want is to initially set the dns in resolv.conf to my preferred server, and then when I connect to VPN (nm-applet's OpenVPN), resolv.conf will have the value provided by the VPN.


Solution 1:

It took me a while to get there...

If you already know what you want to set in resolv.conf then you can simply write your settings in /etc/systemd/resolved.conf with your favorite editor.

sudo nano /etc/systemd/resolved.conf

Just uncomment DNS and domains, enter the IPs and searchdomains (blank seperated) and restart systemd-resolv or reboot your host.

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details

[Resolve]
DNS=<IP> <IP>
#FallbackDNS=
Domains=<domain> <domain>
#LLMNR=yes
#MulticastDNS=yes
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

NetworkManager should be able to modify the DNS. I don't have a VPN to test, but I was able to append nameservers with NM on my wired connection.