nslookup Command in Linux: Query DNS Records
When a website does not load or email stops arriving, the first thing to check is whether the domain resolves to the correct address. The nslookup command is a quick way to query DNS servers and inspect the records behind a domain name.
nslookup ships with most Linux distributions and works on macOS and Windows as well. It supports both one-off queries from the command line and an interactive mode for running multiple lookups in a row.
This guide explains how to use nslookup with practical examples covering record types, reverse lookups, and troubleshooting.
Syntax
nslookup [OPTIONS] [NAME] [SERVER]-
NAME— The domain name or IP address to look up. -
SERVER— The DNS server to query. If omitted,nslookupuses the server configured in/etc/resolv.conf. -
OPTIONS— Query options such as-type=MXor-debug.
When called without arguments, nslookup starts in interactive mode.
Installing nslookup
On most distributions nslookup is already installed. To check, run:
nslookup -versionIf the command is not found, install it using your distribution’s package manager.
Install nslookup on Ubuntu, Debian, and Derivatives
sudo apt update && sudo apt install dnsutilsInstall nslookup on Fedora, RHEL, and Derivatives
sudo dnf install bind-utilsInstall nslookup on Arch Linux
sudo pacman -S bindThe nslookup command is bundled with the same packages that provide dig
.
Look Up a Domain Name
The simplest use is passing a domain name as an argument:
nslookup linux.orgServer: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: linux.org
Address: 104.26.14.72
Name: linux.org
Address: 104.26.15.72
Name: linux.org
Address: 172.67.73.26
The first two lines show the DNS server that answered the query. Everything under “Non-authoritative answer” is the actual result. In this case, linux.org resolves to three IPv4 addresses.
“Non-authoritative” means the answer came from a resolver’s cache rather than directly from the domain’s authoritative name server.
Query a Specific DNS Server
By default, nslookup queries the resolver configured in /etc/resolv.conf. To query a different server, add it as the last argument.
For example, to query Google’s public DNS:
nslookup linux.org 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: linux.org
Address: 104.26.14.72
Name: linux.org
Address: 104.26.15.72
Name: linux.org
Address: 172.67.73.26
This is useful when you want to compare results across different resolvers or verify whether a DNS change has propagated to public servers.
Query Record Types
By default, nslookup returns A (IPv4 address) records. Use the -type option to query other record types.
MX Records (Mail Servers)
MX records identify the mail servers responsible for receiving email for a domain:
nslookup -type=mx google.comServer: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.
The number before the mail server hostname is the priority. A lower number means higher priority.
NS Records (Name Servers)
NS records show which name servers are authoritative for a domain:
nslookup -type=ns google.comServer: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
google.com nameserver = ns1.google.com.
google.com nameserver = ns2.google.com.
google.com nameserver = ns3.google.com.
google.com nameserver = ns4.google.com.
TXT Records
TXT records store arbitrary text data, commonly used for SPF, DKIM, and domain ownership verification:
nslookup -type=txt google.comServer: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
google.com text = "v=spf1 include:_spf.google.com ~all"
google.com text = "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com text = "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
The output may include many entries. The example above shows a subset of the TXT records returned for google.com.
AAAA Records (IPv6)
AAAA records return the IPv6 address of a domain:
nslookup -type=aaaa google.comServer: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: google.com
Address: 2a00:1450:4017:818::200e
SOA Record (Start of Authority)
The SOA record contains administrative information about the domain, including the primary name server, the responsible email address, and timing parameters for zone transfers:
nslookup -type=soa google.comServer: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
google.com
origin = ns1.google.com
mail addr = dns-admin.google.com
serial = 897592583
refresh = 900
retry = 900
expire = 1800
minimum = 60
The serial number increments each time the zone is updated. DNS secondaries use it to decide whether they need a zone transfer.
CNAME Records
CNAME records point one domain name to another:
nslookup -type=cname www.github.comIf a CNAME record exists, the output shows the canonical name the alias points to. If the domain does not have a CNAME record, nslookup returns No answer.
Run an ANY Query
To ask the DNS server for an ANY response, use -type=any:
nslookup -type=any google.comANY queries do not reliably return every record type for a domain. Many DNS servers return only a subset of records or refuse the query entirely.
Reverse DNS Lookup
A reverse lookup finds the hostname associated with an IP address. Pass an IP address instead of a domain name:
nslookup 208.118.235.148148.235.118.208.in-addr.arpa name = ip-208-118-235-148.twdx.net.
Reverse lookups query PTR records. They are useful for verifying that an IP address maps back to the expected hostname, which matters for mail server configuration and security checks.
Interactive Mode
Running nslookup without arguments starts an interactive session where you can run multiple queries without retyping the command:
nslookup>
At the > prompt, type a domain name to look it up:
> linux.org
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: linux.org
Address: 104.26.14.72
Name: linux.org
Address: 104.26.15.72
You can change query settings during the session with the set command. For example, to switch to MX record lookups and then query a domain:
> set type=mx
> google.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.
To change the DNS server:
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
Type exit to leave interactive mode.
Interactive mode is convenient when you need to test several domains or record types in a row without running separate commands each time.
Debugging DNS Issues
The -debug option shows the full query and response details, including TTL values and additional sections that nslookup normally hides:
nslookup -debug linux.orgThe debug output is verbose, but it is helpful when you need to see TTL values, check whether answers are authoritative, or trace unexpected behavior.
nslookup vs dig
Both nslookup and dig
query DNS servers, but they differ in output and capabilities:
-
nslookupproduces simpler, more readable output. It also has an interactive mode that is convenient for quick checks. -
digprovides detailed, structured output with sections (QUESTION, ANSWER, AUTHORITY, ADDITIONAL) and supports advanced options like+tracefor tracing the full resolution path and+dnssecfor verifying DNSSEC signatures.
For quick lookups and basic troubleshooting, nslookup is often faster to type and read. For in-depth DNS debugging, dig gives you more control and detail.
Troubleshooting
nslookup returns NXDOMAIN
The domain does not exist or is misspelled. Verify the domain name and check that it is registered.
nslookup returns SERVFAIL
The DNS server could not process the query. Try a different resolver to isolate the problem:
nslookup linux.org 1.1.1.1If public resolvers return the correct answer, the issue is with your configured resolver.
Connection timed out; no servers could be reached
This means nslookup could not contact the DNS server. Check your network connection and verify that /etc/resolv.conf contains a reachable name server. A firewall may also be blocking outbound DNS traffic on port 53.
Non-authoritative answer appears on every query
This is normal. It means the answer came from a resolver’s cache, not directly from the domain’s authoritative server. The result is still valid.
Quick Reference
For a printable quick reference, see the nslookup cheatsheet .
| Task | Command |
|---|---|
| Look up a domain | nslookup example.com |
| Query a specific DNS server | nslookup example.com 8.8.8.8 |
| Query MX records | nslookup -type=mx example.com |
| Query NS records | nslookup -type=ns example.com |
| Query TXT records | nslookup -type=txt example.com |
| Query AAAA (IPv6) records | nslookup -type=aaaa example.com |
| Query SOA record | nslookup -type=soa example.com |
| Query CNAME record | nslookup -type=cname example.com |
Run an ANY query |
nslookup -type=any example.com |
| Reverse DNS lookup | nslookup 192.0.2.1 |
| Start interactive mode | nslookup |
| Enable debug output | nslookup -debug example.com |
FAQ
Can I use nslookup to check DNS propagation?
Yes. Query the same domain against several public DNS servers and compare the results. For example, run nslookup example.com 8.8.8.8, nslookup example.com 1.1.1.1, and nslookup example.com 9.9.9.9. If the answers differ, the change has not fully propagated.
Is nslookup deprecated?
The ISC (the organization behind BIND) once marked nslookup as deprecated in favor of dig, but later reversed that decision. nslookup is actively maintained and included in current BIND releases. It remains a practical tool for quick DNS lookups.
What does “Non-authoritative answer” mean?
It means the response came from a caching resolver, not from one of the domain’s authoritative name servers. The data is still accurate, but it may be slightly behind if a DNS change was made very recently and the cache has not expired yet.
Conclusion
The nslookup command is a quick way to query DNS records from the command line. Use -type to look up MX, NS, TXT, AAAA, and other record types, and pass a server argument to test against a specific resolver. For deeper DNS debugging, pair it with dig
.
![]()