DNS on Ubuntu

For years it’s been simple to set up DNS on a Linux machine. Just add a couple of entries to /etc/resolv.conf and you’re done.

# Use Google's public DNS servers.
nameserver 8.8.4.4
nameserver 8.8.8.8

But things change and now it’s not that simple. If you now edit /etc/resolv.conf on Ubuntu you’ll find that the edits are ephemeral. If you restart (or even hibernate) your machine then they’ll be overwritten by default content.

nameserver 127.0.0.53
search Home

Option 1: Embracing resolvconf

The first approach is to go all in with resolvconf.

  1. Install the resolvconf package.

    sudo apt install resolvconf
    
  2. Enable updates.

    # Enable updates.
    sudo resolvconf --enable-updates
    
    # Check that updates are enabled.
    resolvconf --updates-are-enabled
    echo $?
    

    The result should be a 0.

  3. Edit /etc/resolvconf/resolv.conf.d/head and add the following:

nameserver 8.8.4.4 nameserver 8.8.8.8 ```

I’m using the Google name servers here, but you can replace them with your preferred servers.

  1. Restart the resolvconf service.

    sudo service resolvconf restart
    

Fix should be permanent.

Option 2: Removing resolvconf

If the above approach doesn’t work for you then an alternative is to remove the resolvconf package and manage /etc/resolv.conf manually (the old way).

  1. Remove the resolvconf package.

    sudo apt purge resolvconf
    
  2. Delete /etc/resolv.conf (it’s probably a symlink to another file).

  3. Edit /etc/resolv.conf and add the following:

nameserver 8.8.4.4 nameserver 8.8.8.8 ```