How to Check DNS Server in Linux: A Step-by-Step Guide

Understanding how to check your DNS server on Linux might seem technical, but it’s a piece of cake when you break it down. To check your DNS server in Linux, you can simply use commands like systemd-resolve --status --no-pager | grep "DNS Servers" -A 2 or cat /etc/resolv.conf. These tools let us peek into the settings guiding our internet connection, translating human-readable domain names into IP addresses our systems can understand.

How to Check DNS Server in Linux: A Step-by-Step Guide

We all know the frustration of internet connectivity issues, often stemming from DNS server problems. It’s crucial to have the know-how to troubleshoot efficiently. With Linux, proficiency in using commands such as nmcli dev show | grep 'IP4.DNS', can swiftly pinpoint your DNS server, saving us both time and sanity.

By following straightforward steps like opening the terminal and typing sudo tcpdump -n -i any port 53 to monitor DNS traffic, we can ensure our browsing experience remains smooth and uninterrupted. This guide will demystify the process, illuminating our path to network self-sufficiency, one command at a time.

Setting Up DNS Servers on Linux

Configuring DNS servers on a Linux system is crucial for managing network connections efficiently. This involves modifying the /etc/resolv.conf file, understanding and utilizing the systemd-resolved service, and leveraging NetworkManager for a streamlined setup.

Configuring /Etc/Resolv.Conf File

The resolv.conf file holds the nameserver details for DNS resolution. We can edit it directly to specify our preferred DNS servers.

To edit this file, we use the following commands:

sudo nano /etc/resolv.conf

A typical entry might look like this:

nameserver 8.8.8.8
nameserver 8.8.4.4

Note: Be aware that some services or network managers might overwrite this file, so a more permanent configuration might be required using other methods.

Understanding Systemd-Resolved Service

Modern Linux distributions often use systemd-resolved for DNS resolution. This service provides a consistent way to manage DNS through systemd.

To start and enable the service, execute:

sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolved

We can also inspect current DNS settings with:

systemd-resolve --status

The configuration file /etc/systemd/resolved.conf can be edited as follows:

sudo nano /etc/systemd/resolved.conf

In this file, we add our preferred DNS:

[Resolve]
DNS=8.8.8.8 8.8.4.4

Using NetworkManager for DNS Configuration

NetworkManager simplifies DNS configuration, especially if you use dynamic network setups. The nmcli command-line tool is particularly useful.

Firstly, list the connections to identify the one in use:

nmcli connection show

Then, modify the DNS settings for your connection:

nmcli connection modify <your-connection> ipv4.dns "8.8.8.8, 8.8.4.4"
nmcli connection modify <your-connection> ipv4.ignore-auto-dns yes

To apply changes, restart the connection:

nmcli connection down <your-connection>
nmcli connection up <your-connection>

This method ensures the DNS settings persist across reboots and network changes, offering us robust control over our network configuration.

Performing DNS Lookups with Dig and Nslookup

In this section, we explore how to use the dig and nslookup command line tools to perform DNS lookups in Linux. Both tools are valuable for querying DNS servers and interpreting responses.

Executing Basic DNS Queries

To kick things off, let’s execute some basic DNS queries using the dig and nslookup commands. Below are the commands to get you started:

Using Dig:

dig example.com

Using Nslookup:

nslookup example.com

These commands provide essential information about the domain name system records associated with example.com. It includes IP addresses, mail exchanges, etc.

For more detailed queries, with dig, we can specify query options:

dig example.com A

Whereas for nslookup, you might run:

nslookup -query=mx example.com

These commands help us, for instance, fetch A records (IP addresses) and MX records (mail servers), making it easy to dig deeper into DNS details.

Interpreting the Dig Command Output

Understanding the output of the dig command is crucial. Let’s break down the sections you’ll commonly see:

  1. Header: Provides basic information like the status of the query.
  2. Question: Lists what query was asked (usually the domain name).
  3. Answer: Contains actual DNS data, such as IP addresses, and other resource records.
  4. Authority: Details about DNS servers authoritative for the queried domain.
  5. Additional: Offers extra information, sometimes linking other relevant DNS records.

For example:

; <<>> DiG 9.11.3-1ubuntu1.13-Ubuntu <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

Interpreting the answer section allows us to resolve IP addresses tied to the queried domain.

Comparing Dig and Nslookup Tools

Dig and nslookup serve similar purposes but have some differences. Dig is often preferred for its detailed output and flexibility. It shows results in a structured, easy-to-read manner, and supports comprehensive options for querying specific DNS records.

Nslookup is simpler and more user-friendly, handy for basic queries and interactive mode. For instance:

Server:  8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name:    example.com
Address: 93.184.216.34

In our experience, dig is better for detailed diagnostics, while nslookup is great for quick checks.

Using both tools together can ensure we cover all bases while troubleshooting or analyzing DNS configurations.

Troubleshooting Common DNS Issues

Identifying and rectifying DNS issues on Unix-like systems often requires pinpointing specific problems like server response delays and connectivity errors. Let’s explore how to address and resolve these common challenges.

Analyzing DNS Server Response Time

Understanding DNS response time is crucial for system performance. A slow DNS server can bottleneck network speed. We can use commands like dig or nslookup to check response times.

For instance, when using dig:

dig google.com

Look at the Query time in the output to assess the server’s responsiveness. Ideally, this should be under 100 milliseconds.

Another effective tool is systemd-resolve. Use this by running:

systemd-resolve --status

Focus on the DNS Servers section. Check if response times vary significantly, which could indicate server issues.

Resolving Connectivity and Configuration Errors

DNS issues often stem from connectivity problems or misconfigurations. Start by verifying network cables and ensuring WiFi is connected. If the DNS server settings are incorrect, they can be updated by modifying the /etc/resolv.conf file.

To clear DNS cache and reset connectivity, use:

sudo systemctl restart systemd-resolved

For deeper analysis, nmap helps check if DNS servers accept traffic over port 53:

nmap -p 53 your.dns.server

Ensure ports are open and responding. Misconfigured firewalls can block traffic and cause issues. Correct DNS configurations and open ports ensure seamless DNS resolution.


Effective troubleshooting involves simple yet powerful commands combined with careful observation. By focusing on response times and connectivity, we can maintain efficient and reliable DNS operations in Linux environments.

Enhancing DNS Security and Performance

DNS security and performance are critical to maintaining a smooth and safe network experience on Linux systems. Let’s explore securing your DNS and optimizing it for better speed.

Implementing DNS Security Practices

Security is crucial for DNS as it often falls prey to various attacks. We need to start by using DNSSEC (DNS Security Extensions). DNSSEC adds a layer of authenticity, ensuring responses come from legitimate sources.

Setting up DNSSEC involves configuring your DNS server to sign DNS records with cryptographic signatures. This prevents DNS spoofing and cache poisoning. Besides, it’s wise to use DNS over HTTPS (DoH) or DNS over TLS (DoT). These protocols encrypt DNS queries, shielding them from prying eyes.

It’s also essential to keep software updated. Regular updates fix vulnerabilities, incorporating the latest security patches. Monitoring DNS logs frequently can alert us to unusual activities, helping us react promptly.

Optimizing DNS for Faster Web Access

Performance-wise, using fast and reliable DNS servers is key. Public DNS servers like Google’s (8.8.8.8) or Cloudflare’s (1.1.1.1) are generally faster due to their global infrastructure. We can configure these by editing the /etc/resolv.conf file or via network manager tools.

Enabling DNS caching is another technique. By caching DNS queries locally, we reduce the time it takes to resolve repeated queries. The nscd (Name Service Cache Daemon) or systemd-resolved services can help with this.

Lastly, using load-balanced and geographically distributed DNS servers ensures queries are processed swiftly, reducing latency. This fine-tuning can significantly improve our web browsing experience.

Leave a Comment