I installed expressvpn with Chrome extension. And even when I disable the VPN my system keeps changing my DNS to and I have to manually change it back to for internet to work. And I have to do this every hour or so.

Ubuntu changes /etc/resolv.conf to this

# Generated by NetworkManager

What I have tried: I tried to set DNS globally but it didn't help


#  This file is part of systemd.


I am running Ubuntu 20.04.2 LTS

UPDATE: Here is ls -al /etc/resolv.con

$ ls -al /etc/resolv.con
-rw-r--r-- 1 root root 53 Jun 15 16:20 /etc/resolv.conf

UPDATE 2 I had also installed dnsmasq a while ago


3 Answers 3


Generated by NetworkManager

Means that DNS is not taken care of by Systemd but by NetworkManager, so modifying systemd-resolved config will not do anything, here is a way to set that up


The annoying thing here is that you basically have to "hack" either Network Manager or systemd-resolved to configure a custom DNS.

Here is a way to do it using a package called resolvconf. This package ensures that /etc/resolv.conf is updated with your custom DNS info.


$ sudo apt update
$ sudo apt install resolvconf

Check service is running: (if not enable and start)

$ sudo systemctl enable resolvconf.service
$ sudo systemctl start resolvconf.service
$ sudo systemctl status resolvconf.service

Edit config file:

$ sudo nano /etc/resolvconf/resolv.conf.d/head

Add the following lines: (your custom and Google for fallback)


Save the file and restart the service:

$ sudo systemctl restart resolvconf.service

Check that your custom DNS have been added to /etc/resolv.conf:

$ cat /etc/resolv.conf


  • Good answer, but you should also disable NetworkManager from trying to update DNS or does resolvconf takes care of that?
    – Level9
    Jun 15, 2021 at 10:12
  • Resolvconf overrides the generated /etc/resolv.conf file by always placing the contens of /etc/resolvconf/resolv.conf.d/head at the beginning of the file. So it shouldn't be necessary. Also, I don't know anything about NetworkManager, but feel free to add this step. :-) Jun 15, 2021 at 10:22

The file /etc/resolv.conf is intended to be a symbolic link for networking, dnsmasq, etc. to work properly. Yours is faulty so let’s fix it:

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

I suspect that the improvement will be immediate; please check:

ping -c3 www.ubuntu.com

If you get ping returns, you’re all set.

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.