How to set Systemd DNS servers for Ubuntu

With many linux systems moving from /etc/resolv.conf to systemd I was unsure how to set my DNS servers.

Summary

Add the following to /etc/systemd/resolved.conf:

DNS=1.1.1.1
FallbackDNS=8.8.8.8

Then restart with:

sudo systemctl restart systemd-resolved

Check status

You can use systemd-resolve --status or sudo resolvectl status to see the current status and should see “DNS Servers” listed. Using systemd-resolve --status | grep 'Server' shows all DNS servers both global and local to a specific network, partly because more information is shown when piped, such as with systemd-resolve --status | cat. These might be

Man pages

Following the comments in resolv.conf suggests man systemd-resolved where the inner workings are described in more detail, but man resolved.conf is was more helpful in working out what to set:

DNS=
A space-separated list of IPv4 and IPv6 addresses to use as system DNS servers.

FallbackDNS=
A space-separated list of IPv4 and IPv6
addresses to use as the fallback DNS servers

Domains=
A space-separated list of domains. These domains are used as search suffixes when resolving single-label host names (domain names which contain no dot), in order to qualify them into fully-qualified domain names (FQDNs).

I’m curious what Domains= does, so might investigate that later. Edit: These are search domains and are prepended if you lookup a domain/url without a dot in it. E.g. if I added Domains=jameslearnt.com, then I’d be able to enter today in my URL bar and have that take me to today.jameslearnt.com as a kind of online hosts file shortcut.

Troubleshooting

Using dig to check DNS records, such as with dig http://www.jameslearned.com -t cname, can be traced by appending +trace to the command.

Caches can be flushed with sudo systemd-resolve --flush-caches or sudo service dns-clean start.

For more detailed diagnostics it is possible to set sytemd-resolved into debug mode and trace the lookups, but I didn’t end up needing to do this.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: