162

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.

Braiam
  • 69,112
Asta-Risky
  • 1,635

6 Answers6

182

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!

Update 2023

ifconfig, ifdown, ifup are deprecated. You can use:

sudo ip link set eth0 down && sudo ip link set eth0 up

Make sure to use these commands in a single line with && to avoid getting stuck out if you're using your system over a network or SSH.

Movahhedi
  • 103
  • 4
Nullet
  • 3,082
32

Ubuntu 20.04 does not use resolv.conf anymore by default, however it can be installed by:

sudo apt install resolvconf

However if you are on some older Ubuntu version or some fork, 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
26

I use Ubuntu 20.04 and unfortunately none of the other answers worked for me.

So, I will share the way I fixed the problem below:

First install resolvconf, if it is not already installed

sudo apt update
sudo apt install resolvconf

check that resolvconf service is started and enabled

sudo systemctl status resolvconf.service

If service is not enabled, you can start and enable using the following commands:

sudo systemctl start resolvconf.service
sudo systemctl enable resolvconf.service

Now edit the resolv.conf.d/head configuration file

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

and add your DNS addresses into it (for example, I use Google Public DNS, 8.8.8.8 and 8.8.4.4)

nameserver 8.8.8.8 
nameserver 8.8.4.4

Now force resolvconf to run update scripts when invoked with -u

sudo resolvconf --enable-updates 

Now run updates

sudo resolvconf -u

Now if you check the content of resolv.conf file using the following command

cat /etc/resolv.conf

you must see your DNS configuration. If not, try the following commands and check again

sudo systemctl restart resolvconf.service
sudo systemctl restart systemd-resolved.service

References

Pablo Bianchi
  • 17,371
Mahdi mehrabi
  • 484
  • 5
  • 4
18

There is no need to download additional packages to configure the DNS client in Ubuntu, it already comes with one. 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.

gcode
  • 477
7

NetworkManager TUI: nmtui

Beside this alternative using nmcli connection edit you might like a more ncurses approach with nmtui, the GNOME's CLITUI alternative to nm-connection-editor.

screenshot nmtui main window

screenshot editing a connection

Note: This answer is more related to Ubuntu Desktop, but since the suitable question was marked as duplicate of this one (incorrectly, IMO) I post it here.

Pablo Bianchi
  • 17,371
2

In Ubuntu 24 you can use resolvectl.

$ resolvectl status    
Link 3 (wlp2s0)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 172.20.10.1
       DNS Servers: 172.20.10.1

Set dns with resolvectl dns <link> <server1> <server2>

$ sudo resolvectl dns wlp2s0 1.1.1.1 1.0.0.1
$ resolvectl    
Link 3 (wlp2s0)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS
                    DNSSEC=no/unsupported
       DNS Servers: 1.1.1.1 1.0.0.1
etzl
  • 51