What DNS servers am I using?

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)

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You should be able to get some reasonable information in:

$ cat /etc/resolv.conf

Method 2

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.

Method 3

On systems running systemd use:

systemd-resolve --status

Or:

resolvectl

Method 4

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

Method 5

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 8.8.8.8.

$ nslookup google.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.22.174

Method 6

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, on old versions of nmcli :

$ nmcli --fields ip4.dns,ip6.dns con show 'Wired connection 1'
IP4.DNS[1]:                             172.21.0.13
IP4.DNS[2]:                             172.21.0.4

Method 7

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)

Method 8

Using resolvectl

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

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

Method 9

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.

Method 10

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.

Method 11

In Ubuntu >= 15

nmcli device show <interfacename> | grep IP4.DNS

Replace <interfacename> with yours.

In Ubuntu <= 14

The command

 nmcli dev list iface <interfacename> | grep IP4

Replace <interfacename> with yours.

Examples

 nmcli device show eth0 | grep IP4.DNS

Or

 nmcli dev list iface eth0 | grep IP4

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

Method 12

On a recent Fedora 33, you can just use

# resolvectl dns
Global:
Link 2 (enp0s31f6):
Link 3 (wlp4s0): 1.1.1.1 8.8.8.8
Link 4 (virbr0):
Link 5 (virbr0-nic):

To check if systemd-resolved is active, do cat /etc/resolv.conf It will tell you who is controlling the file.

If you want more details, you can use resolvectl status resolvectl statistics, you can also flush caches …

To troubleshoot, you can use journalctl -u systemd-resolved -f -o cat | grep Looking after setting the level to DEBUG: sudo resolvectl log-level debug

Method 13

In CentOS, you can use:

/usr/sbin/named -v

Method 14

On systems where systemd-resolved is NOT installed :

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

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}'
192.168.1.1


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x