How do I configure my DNS settings in Ubuntu server?

According to this page it appears to be simple. However, /etc/bind does not exist on the default installation of Ubuntu 12.04.3 LTS server.

So, without installing any further software, how can configure DNS and remove dnsmasq on ubuntu server? I am quite familiar with sudo & nano.


Solution 1:

Set DNS Servers

You need to configure the /etc/network/interfaces file if you want to change your DNS server via the command line.

It should look something like this:

# The loopback network interface  
auto lo  
iface lo inet loopback  


# The primary network interface  
auto eth0 
iface eth0 inet static  
address 192.168.X.X
netmask 255.255.255.0
gateway 192.168.X.X
dns-nameservers X.X.X.X 

If you have more than one DNS server, just add a space between each:

dns-nameservers X.X.X.X Y.Y.Y.Y Z.Z.Z.Z

Just replace the Xs, Ys, and Zs with your own IPs of the DNS servers of choice, and when this is done, run this command to update the settings:

sudo ifdown eth0 && sudo ifup eth0

Hope this helps!

Solution 2:

However if you are on newer Ubuntu version, you might be using resolvconf (a package that manages the contents of /etc/resolv.conf).

In order to set dns-nameservers which won't be removed after reboot add them in

sudo nano /etc/resolvconf/resolv.conf.d/base 

like

nameserver x.x.x.x
nameserver x.x.y.y

And afer that just do

sudo resolvconf -u

Solution 3:

As of 20.04 Focal Fossa, Ubuntu Server uses systemd-resolved to manage nameserver configuration. /etc/resolv.conf is a static file and should not be edited.

To configure your resolver, you set it in your netplan configuration file, like this:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s25:
      addresses:
        - 192.168.0.100/24
      gateway4: 192.168.0.1
      nameservers:
          search: [mydomain, otherdomain]
          addresses: [1.1.1.1, 8.8.8.8, 4.4.4.4]

For more information on how to use the netplan system, see the Ubuntu article on network configuration.