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)

14 Answers 14


You should be able to get some reasonable information in:

$ cat /etc/resolv.conf 
|improve this answer|||||
  • 28
    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
  • 42
    This file typically points at on Ubuntu - it's the local DNS cache server, not the actual upstream. – Barry Kelly Mar 8 '16 at 10:24
  • 2
    @BarryKelly Check what your router uses, then – Geremia Mar 11 '16 at 17:10
  • 3
    And if you have several upstream server configured ? How to know which one is currently used ? – Sylvain Leroux Nov 24 '16 at 23:31
  • 4
    See the answers by @G32RW or @Lonniebiz for a more robust approach under various circumstances, e.g. when you get an answer like – nealmcb Nov 11 '18 at 22:13

Here's how I do it:

( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS

This worked previous to the way above:

nm-tool | grep DNS

On Debian, you need to have the network-manager package installed.

|improve this answer|||||
  • 16
    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
  • 7
    On Debian this requires the network-manager package. – Neurotransmitter Feb 3 '15 at 19:44
  • 2
    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
  • 2
    I've updated the answer to reflect what's working for me in 2016. – Lonniebiz Sep 1 '16 at 16:36
  • 3
    this is the best answer, resolve.conf not always show the truth – blade Feb 7 '18 at 22:58

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. The output you're interested in will look something like this:

;; Query time: 91 msec
;; SERVER: 172.xxx.xxx.xxx#53(172.xxx.xxx.xxx)
;; WHEN: Tue Apr 02 09:03:41 EDT 2019
;; MSG SIZE  rcvd: 207

You can also tell dig to query a specific DNS server by using dig @server_ip

|improve this answer|||||
  • 9
    On Debian this requires the dnsutils package. – Faheem Mitha Jan 14 '12 at 20:54
  • 7
    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
  • 5
    Ubuntu 18.04 just shows the local dns cache: SERVER: – wisbucky Nov 14 '18 at 2:16

On systems running systemd use:

systemd-resolve --status
|improve this answer|||||
  • 6
    systemd-resolve: unrecognized option '--status' – Acumenus Apr 1 '18 at 18:03
  • @A-B-B system? systemd version? – G32RW Apr 1 '18 at 20:21
  • 1
    Says Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found. – xji Apr 12 '18 at 11:19
  • 12
    This is the new default way to do it in Ubuntu 18.04 Bionic Beaver - get used to it, everybody! – AveryFreeman Apr 24 '18 at 20:32
  • 5
    This is the only solution that worked for me, as the others returned – greuze Oct 25 '18 at 7:50

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

In the example below, it shows that the DNS server used is at

$ nslookup google.com

Non-authoritative answer:
Name:   google.com
|improve this answer|||||
  • 1
    can you give an example of what to enter in the prompt? – chovy Jan 14 '16 at 6:41
  • Example: $ nslookup www.google.com – Ren Feb 13 '16 at 23:50
  • 8
    On Debian this requires the dnsutils package. – Gayan Weerakutti Aug 13 '17 at 7:00
  • 7
    On a recent Ubuntu, this again points to the local cache server as already hinted at in this comment – FriendFX Dec 1 '17 at 1:50
  • In CentOS 7 it quits with error, but it is a vm so I did nslookup google.com in the Windows host and I found the nameserver. Add it in /etc/resolv.conf like: nameserver xx.xx.xx.xx and restart service network, and all is fine. Praise you. – WesternGun May 3 '18 at 15:22

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'
|improve this answer|||||
  • My results: order «con» «show» is not valid. – Sopalajo de Arrierez Jan 30 '16 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 '16 at 5:40
  • The tabular format is pretty bad. I hope to get a column like format similar to Powershell. – CMCDragonkai Mar 14 '17 at 6:42
  • 1
  • simply nmcli was all i needed on ubuntu 19.04 – John Mee Oct 2 '19 at 5:54

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)
|improve this answer|||||
  • 2
    grep -m 1 stops matching after first match so you don't have to use head – sshow Jul 28 '17 at 8:30
  • To lighten the pipeline even more, capture groups with Perl regexp is very neat, and grep takes a file argument: grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf. Just wrote up Capture groups with grep perl regular expression – sshow Jul 28 '17 at 9:04
  • There's both IPv4 and IPv6 DNS servers. Also, secondary servers exist for a reason. Which one this command returns? Is it advised to take the first one, and just ignore the others? – André Werlang Jan 16 at 2:53

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.

|improve this answer|||||

Using resolvectl

$ resolvectl status | grep -1 'DNS Server'
    DNSSEC supported: no
  Current DNS Server:
         DNS Servers:

For compatibility, systemd-resolve is a symbolic link to resolvectl on many distros as for Ubuntu 18.10:

$ type -a systemd-resolve
systemd-resolve is /usr/bin/systemd-resolve

$ ll /usr/bin/systemd-resolve
lrwxrwxrwx 1 root root 10 nov.  15 21:42 /usr/bin/systemd-resolve -> resolvectl

$ type -a resolvectl
resolvectl is /usr/bin/resolvectl

$ file /usr/bin/resolvectl
/usr/bin/resolvectl: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=09e488e849e3b988dd2ac93b024bbba18bb71814, stripped
|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).

|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
  • 1
    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
  • This is correct answer! – VAdaihiep Aug 10 '18 at 8:00

I have Fedora 25 and also had similar slow response on command line to sudo commands.

nmcli dev show | grep DNS 

showed that only one of my 3 adapters (two active) had DNS entries. By adding DNS entries to the one active card that didn't have an entry - presto! All is good and response time is immediate.

|improve this answer|||||
  • perhaps alternatively – Amos Folarin Jun 12 '19 at 17:44

In CentOS, you can use:

/usr/sbin/named -v
|improve this answer|||||

Once you think you found your dns, you can query it directly with dig: dig @<dns ip> <host to lookup>. If it works, you should see it after SERVER with a status of NOERROR.

|improve this answer|||||

My command :

( \nmcli dev list || \nmcli dev show ) 2>/dev/null | grep DNS || egrep -v '^(#|$)' /etc/resolv.conf
|improve this answer|||||

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