Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How can I check which DNS server am I using (in Linux)? I am using network manager and a wired connection to my university's LAN. (I am trying to find out why my domain doesn't get resolved)

share|improve this question
up vote 52 down vote accepted

You should be able to get some reasonable information in:

$ cat /etc/resolv.conf 
share|improve this answer
However, please be aware that (on modern Linuxen) the contents of /etc/nsswitch.conf dictate what name services are used (DNS, LDAP, etc) and in what order. Say fgrep hosts: /etc/nsswitch.conf. If it only references DNS, /etc/resolv.conf is the right place to look for your nameservers. But chances are you're also using mDNS (aka ZeroConf, aka Avahi, aka Bonjour, etc), etc. In that case, things depend on what you're using. – Alexios Jan 12 '12 at 13:35
This file typically points at on Ubuntu - it's the local DNS cache server, not the actual upstream. – Barry Kelly Mar 8 at 10:24
@BarryKelly Check what your router uses, then – Geremia Mar 11 at 17:10

Here's how I do it:

nm-tool | grep DNS
share|improve this answer
This one is usefull if you are using VPN and NetworkManager. Your /etc/resolv.conf will point to your machine, with dnsmasq resolving names as configured by NetworkManager. – Grzegorz Żur May 30 '13 at 11:32
On Debian this requires the network-manager package. – TranslucentCloud Feb 3 '15 at 19:44
nm-tool is not available in newer linuxes. for example it is not in the 'network-manager' package of debian 8. – don bright Oct 31 '15 at 15:06

I think you can also query DNS and it will show you what server returned the result. Try this:

dig yourserver.somedomain.xyz

And the response should tell you what server(s) returned the result.

You can also tell dig to query a specific DNS server.

share|improve this answer
On Debian this requires the dnsutils package. – Faheem Mitha Jan 14 '12 at 20:54
If you use any DNS masking/caching service that is run on your local machine, it will hide the real DNS servers. – karatedog Sep 7 '15 at 9:12

If you are using network manager probably you get all network parameters from your dhcp server at your university.

If you don't want use your shell to check your dns settings (as described by hesse and Alexios), you can see them from the panel "Network information".

You can reach this panel by pressing right mouse button on network manager icon and selecting "Connection Information" from the menu.

share|improve this answer

Just do an, nslookup. Part of its results include the server that it's using.

share|improve this answer
can you give an example of what to enter in the prompt? – chovy Jan 14 at 6:41
Example: $ nslookup www.google.com – Ren Feb 13 at 23:50

to get the first DNS SERVER (IP only) :

cat /etc/resolv.conf |grep -i nameserver|head -n1|cut -d ' ' -f2
  • cat will output DNS config
  • grep filters only nameserver
  • head will keep only the first row/instance
  • cut take the ip part of the row (second column with ' ' as separator)

To put DNS ip in an environment variable, you could use as follow:

export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i nameserver|head -n1|cut -d ' ' -f2)
share|improve this answer

The command

 nmcli dev list iface <interfacename> | grep IP4

Replace "interfacename" with yours.


 nmcli dev list iface eth0 | grep IP4

This will list all DNS servers(If you use more than one).

share|improve this answer
nmcli dev list iface [devicename] is the correct command – sebix May 18 '15 at 17:33
I haven't noticed <interface> is hidden since i use <> – Maythux May 19 '15 at 5:53
On debian i get an error--- $ nmcli dev list iface eth0 Error: 'dev' command 'list' is not valid. – don bright Oct 31 '15 at 15:00
nmcli is a RH specific command. – Rui F Ribeiro Nov 16 '15 at 7:42

With the new network-manager command nmcli, do this:

nmcli --fields ipv4.dns,ipv6.dns con show <connection_name>

On newer versions of network-manager (such as in Ubuntu 16.04), the field names are slightly different:

nmcli --fields ip4.dns,ip6.dns con show <connection_name>

If you don't know the connection name, use:

nmcli -t --fields NAME con show --active

For example:

$ nmcli --fields ip4.dns,ip6.dns con show 'Wired connection 1'
share|improve this answer
My results: order «con» «show» is not valid. – Sopalajo de Arrierez Jan 30 at 22:03
It works fine for me with network-manager 1.0.4 on Ubuntu 15.10. Maybe you have an older version? – Sameer Mar 17 at 5:40

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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