Is there a command to list dns servers used by my system?

I tried

$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
$ cat /etc/network/interfaces 
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

But it doesn't list any servers, if I go to "Network Manager GUI Tool", in Wireless section it lists "DNS"

Can I get same information from command line?

I am using Ubuntu 12.04 LTS

  • What are you trying to find? the DNS servers being used by your system? or are you trying to do a DNS lookup? – Thomas Ward Jun 18 '12 at 14:42
  • The former @LordofTime – ish Jun 18 '12 at 15:16
  • @LordofTime DNS servers being used by my system – Anurag Uniyal Jun 18 '12 at 15:19
  • you are using are you running a DNS server? – Skaperen Aug 19 '15 at 10:18
  • See unix.stackexchange.com/q/28941/38647 for a non-Ubuntu version of this question – mwfearnley Jun 11 '18 at 12:41

11 Answers 11


resolv.conf isn't really used anymore, unless you implement it yourself. The network manager does it now. I created an alias to list the DNS servers on my system, as I sometimes switch from OpenDNS to Google's open DNS.

Ubuntu >= 15

nmcli device show <interfacename> | grep IP4.DNS

Ubuntu <= 14

nmcli dev list iface <interfacename> | grep IP4

In my case, <interfacename> is eth0, which is common, but not always the case.

See if this is what you want.


I think resolv.conf is actually used indirectly, because the network manager creates the server that listens on, but I was told that this is an implementation detail that should not be counted on. I think that if you enter DNS addresses before this entry, they might get used, but I'm not sure exactly how this works. I think it's best to use the network manager in most cases, when possible.

  • 3
    thanks, yes that seems to be working, ubuntu networking seems to be confusing, so I can set dns servers in resolve.conf/base or in /etc/network/interfaces or in network manager, is there a definitive guide for ubuntu networking? – Anurag Uniyal Jun 18 '12 at 15:26
  • If you use the GUI, then the best place to set it is by creating profiles in the Network Connections Dialog. I duplicated the default, then edited the duplicate to make the changes I wanted, keeping the default to make sure I always had a working profile. Then, it's easy to switch profiles. I don't know how to do this without the GUI, but there is a user "James Henstridge" who is very knowledgeable on Ubuntu's networking; you might try searching askubuntu for his information. He told me about the command I gave you in this post. – Marty Fried Jun 18 '12 at 15:35
  • 1
    stgraber.org/2012/02/24/dns-in-ubuntu-12-04 is a nice article abount DNS resolution in ubuntu 12.04 – Anurag Uniyal Jun 18 '12 at 15:37
  • 6
    I'm using 15.04 and 'nmcli dev show |grep DNS' works for me instead. – flickerfly Aug 11 '15 at 18:37
  • 2
    @vcardillo: the original question stated: "I am using Ubuntu 12.04 LTS". It's been 5 years since I posted my answer. Nothing lasts forever. – Marty Fried May 22 '17 at 23:17

In Ubuntu 18.04 and 20.04 you can use systemd-resolve --status

  • 2
    NB if you cat /etc/resolv.conf it even says this – Rqomey Sep 6 '19 at 13:16
  • 5
    +1, built-in check. no need external utilities. – cgasp Mar 18 '20 at 9:44
  • 5
    +10, no needs extra utilities – enjoy Apr 23 '20 at 16:36
  • 1
    This should be the accepted answer! – Tuan Mar 5 at 15:03

This is valid for Ubuntu 13.10 and earlier. For Ubuntu 14.04 and above, see Koala Yeung's answer to: How to know what DNS am I using in Ubuntu from 14.04 onwards



You will get an output similar to

NetworkManager Tool

State: connected (global)

- Device: eth0  [Wired connection 1] -------------------------------------------
  Type:              Wired
  Driver:            e1000e
  State:             connected
  Default:           yes
  HW Address:        00:11:22:33:44:55

    Carrier Detect:  yes
    Speed:           1000 Mb/s

  Wired Properties
    Carrier:         on

  IPv4 Settings:
    Prefix:          24 (


Or to see just the DNS do

nm-tool | grep DNS
  • 1
    just wanted to add-up, going to nm-applet's connection information menu will also work :) – Samik Jun 18 '12 at 15:26
  • 1
    +1 this also works, as does nm-cli as answered by @Marty Fried – Anurag Uniyal Jun 18 '12 at 15:30
  • 2
    works great on lubuntu 14.04 as well. thanks – jamescampbell Oct 21 '15 at 13:50
  • 2
    nm-tool is not found on 15.10 – labyrinth Nov 24 '15 at 17:16
  • 1
    yeah this doesn't work anymore... no nm-tool in 16.x either. nmcli (in Marty Fried's answer) is the way to go – Lambart Feb 15 '17 at 0:30

The two top-scoring answers, nmcli dev list iface <interfacename> | grep IP4 and nm-tool both assume that network-manager is in control. Which it is - on desktop machines most of the time at least. But the fuller answer is that sometimes network-manager is not in control. E.g. vpnc messes with /etc/resolv.conf directly.

So: First check if is used. This could be done with dig:

> dig something.unknown  | grep SERVER:

Now you know that we are using localhost. Go ahead with one of the popular answers. I like:

> nm-tool | grep DNS:

But if is not used, then nm-tool's and nmcli's output will be misleading:

> dig something.unknown  | grep SERVER:
> nm-tool | grep DNS:

Here, dig is correct and nm-tool's information is misleading. In reality addresses local to the environment I've VPN-ed into are resolved correctly. All of which Google's DNS doesn't know about.

This is because after connecting to a VPN with vpnc, it puts a line in /etc/resolv.conf so it looks like:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
search MyDomain
  • 5
    This is the most complete answer – Marinos An Jul 4 '18 at 13:17
  • Thank you. Some of us out here do not use NM and that is good for the community. – Stephen Boston Sep 9 '18 at 12:27
  • Just for completion, the dig utility can be easily installed with apt install dnsutils. – Daniele Vrut Jul 24 '19 at 7:47

cat /etc/resolv.conf should show your DNS servers.

You may not modify the resolv.conf directly with Ubuntu 12.04. If you need to change them though, you can add new DNS servers in your /etc/network/interfaces file by adding the following:

 dns-nameservers x.x.x.x x.x.x.x

where x is the DNS servers you wish to use.

If I were you, I would uninstall network-manager. In my opinion it's a pile of crap.

You can accomplish everything you need to do manually without worrying about changing your settings, especially if you have multiple NICs on the computer.

  • 2
    Do I have to restart nm after doing the dns change? – Bhargav Nanekalva Mar 25 '15 at 7:43
  • 1
    --Thanks. This is great. It works even without that network-manager business. – Adam Jul 18 '15 at 8:23
  • "cat /etc/resolv.conf should show your DNS servers". It doesn't. – Marinos An Jul 4 '18 at 13:14

nmcli version 0.9.10

You can use either of these commands:

nmcli -t -f IP4.DNS device show eth0

nmcli -t -f IP4.DNS connection show conn-name

In Ubuntu 15.10 you can get DNS

nmcli device show <interface name> 

Amazing how many ways there are to do it. On an Ubuntu Server 18.04, if you don't want to install anything extra like nm-tool, then systemd-resolve --status will work out of the box for DNS information.

If you're interested getting not only your DNS servers, but also default gateway, IP address, network mask, etc, then netplan ip leases eth0 will give you all that information in an easy-to-read form (assuming you're interested in the eth0 interface).

  • Thank you, I didn't have NetworkManager and didn't want to install it, your answer was very helpful. – Stavros Korokithakis Apr 14 '20 at 12:49

On Ubuntu 20.04

systemd-resolve --status | grep -B 9 -A 6 "Current DNS Server"

gave me a clear result as to what DNS was in use for each adapter using DNS.

To reconfigure DNS

man systemd-resolved

reveals the DNS servers contacted are determined by global settings in /etc/systemd/resolved.conf.

Sudo edit that file and uncomment and set DNS= and FallbackDNS= to the IPv4 DNS servers you want. For example, DNS= and FallbackDNS= would use Google Public DNS. Restart the machine to apply the change.

@PLA, thank you for this answer which led me down this path.


Seems to be managed by network manager. Have a look here http://manpages.ubuntu.com/manpages/precise/man5/NetworkManager.conf.5.html

for a large explanation.

Or the short version it to look in



  • 4
    but /etc/NetworkManager/NetworkManager.conf doesn't have any dns servers listed in it – Anurag Uniyal Jun 18 '12 at 15:20

On systems where systemd-resolved is NOT installed :

$ host -v something.unknown | awk -F "[ #]" '/Received /{print$5}' | uniq

On systems where NetworkManager is running :

$ ( nmcli -f IP4.DNS,IP6.DNS dev list || nmcli -f IP4.DNS,IP6.DNS dev show ) 2>/dev/null | awk '/DNS/{print$NF}'

Not the answer you're looking for? Browse other questions tagged or ask your own question.