DNS (Domain Name System) is a fundamental facilitator of several networking technologies such as mail servers, Internet browsing, and streaming services e.g. Netflix and Spotify, among others.
It works on a special computer called a DNS server – which keeps a database record of several public IP addresses along with their corresponding hostnames for it to resolve or translate hostnames to IP addresses upon user request.
This happens so that we would not need to bother ourselves with remembering the IP addresses of the different websites we visit.
While there are several things we can discuss on DNS servers such as redirection and malware attack prevention, our focus today is on how to find out your very own dns server IP address.
There are several ways to check for it depending on the Operating System that you’re running but Linux, BSD, and Unix-like systems all share the same method so let’s begin with them.
How to Find My DNS Server IP Address
1. To find out your DNS Server IP address, use the following cat command or less command.
$ cat /etc/resolv.conf OR $ less /etc/resolv.conf
2. Another way is to use the following grep command.
$ grep "nameserver" /etc/resolv.conf nameserver 109.78.164.20
3. In newer Linux distributions that use systemd, you can use the systemd-resolve command to check the DNS server.
$ systemd-resolve --status | grep "DNS Servers"
4. If you’re using NetworkManager, you can use the nmcli command to get the DNS server information.
$ nmcli dev show | grep 'IP4.DNS'
Here, nameserver 192.168.0.1 is a name server IP address in what is called the dot notation – the format that applications on your workstation use for DNS routing.
How to Find My Website DNS Server IP Address
To find out a website DNS Server IP address, you can use the following dig command, which is used to query DNS information.
$ dig tecmint.com
Sample Output
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.1 <<>> tecmint.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30412 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;tecmint.com. IN A ;; ANSWER SECTION: tecmint.com. 21 IN A 204.45.67.203 tecmint.com. 21 IN A 204.45.68.203 ;; Query time: 0 msec ;; SERVER: 209.74.194.20#53(209.74.194.20) ;; WHEN: Mon Jun 24 07:25:42 2019 ;; MSG SIZE rcvd: 61
The output will provide you with a list of IP addresses for authoritative nameservers for your website (i.e., the DNS servers responsible for your domain).
tecmint.com. 21 IN A 204.45.67.203 tecmint.com. 21 IN A 204.45.68.203
Please note that the actual IP addresses you receive may vary depending on your website hosting provider or domain registrar. If your website is using third-party DNS services like Cloudflare or Google Cloud DNS, the IP addresses will be specific to those services.
Easy right? Perhaps we’ll talk about primary and secondary DNS Server addresses next time. Till then, feel free to share and drop your comments/suggestions in the discussion section below.
When using local dns cache systemd-resolved you can use:
It will show the current DNS servers for each interface. You can specify the interface name (found with
$ ifconfig
) to filter a specific interface.For example,
Sample Output
Server: 192.168.7.1
Address: 192.168.7.1:53
Non-authoritative answer:
Name: google.com
Address: 142.250.191.206
google.com nameserver = ns1.google.com
google.com nameserver = ns4.google.com
google.com nameserver = ns2.google.com
google.com nameserver = ns3.google.com
Server: 192.168.7.1
Many Linux users these days use a dns cache and so the dns server in resolve.conf is a loopback address to the dns cache on your own PC/Linux.
systemd’s resolved is also often used but this updates resolve.conf for informational reference. Systemd-Resolved can have different dns servers for different networks concurrently and the resolve.conf will not reflect this but the man pages and status command are very informative.
network manager also does some things differently. i think it sets up one of these dns caches but id don’t know much about it.
I keep reading these “how to find my dns” how to pages but have yet to find one that covers the more modern scenarios.
You missed probably one of the easiest one: nslookup
On my Fedora 29 and RHEL 8 /etc/resolv.conf is still used for listing the nameservers.
Same for my PureOS, Alpine, TinyCore and Atomic Host…
My Ubuntu 16.04 LTSB and 18.04 LTSB have 127.0.0.1 and 127.0.0.53 respectively.
@Andrew 127.0.0.52 is correct, because modern OSs use a local name server cache.
I think you will find this is a dns cache on your local machine. see my other comment on the root article
Except that all the modern Desktop Linux distros stopped listing nameservers in /etc/resolve.conf many years ago! If you look in that file now, all you get is 127.0.1.1, because most now have a local caching nameserver.
Yes, anytime I see an article written since NetworkManager was forced upon us that still thinks resolv.conf is at all a useful source, I immediately know the author is clueless.
/etc/resolv.conf says my nameserver is 127.0.0.53. That can’t be right.
How to find your own external IP address?
This works fine on CentOS and RHEL but not on Ubuntu. Looks like Ubuntu’s dig command has less capabilities.
That’s almost completely wrong and complete deprecated on almost every recent Ubuntu or Debian version I’ve used ! Contents of resolv.conf on my Raspberry Pi running Raspbian Stretch :
looking at the contents /etc/resolv.conf may have been true 10+ years ago – on a UNIX system like Solaris…