isitdns? wiki/Troubleshooting/How to check a resolver
Troubleshooting

🔎 How to check a resolver

resolver: the server your machine asks first

Asks one resolver for a zone's SOA record.

 dig @1.1.1.1 isitdns.net SOA
; <<>> DiG 9.20.11-0ubuntu0.2-Ubuntu <<>> @1.1.1.1 isitdns.net SOA
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28842
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;isitdns.net. IN SOA
;; ANSWER SECTION:
isitdns.net. 1800 IN SOA coleman.ns.cloudflare.com. dns.cloudflare.com. 2414911402 10000 2400 604800 1800
;; Query time: 37 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Mon Sep 14 17:42:31 CDT 2026
;; MSG SIZE rcvd: 105

GO NOERROR, one SOA, and ra on the flags line

NO GO SERVFAIL or a timeout, which means this resolver cannot answer for you

run this query in the dig tool →

what each part of this output means →

Step 1: find which resolver you use#

The setting you configured is not always the one in use.

OSCommand
Linux (systemd)resolvectl status | grep -A2 "Current DNS"
Linux (other, or a container)cat /etc/resolv.conf
macOSscutil --dns | grep nameserver | head -5
Windows (PowerShell)Get-DnsClientServerAddress -AddressFamily IPv4

Look for the nameserver line. That is who your machine asks. On modern Linux that is often 127.0.0.53, a local stub, not a real remote server; resolvectl status shows what it forwards to.

Browsers can run their own DoH (RFC 8484 section 1) and bypass this setting entirely. If a name works in the terminal but not the browser, or the other way around, that is why. See dot-doh.

Step 2: does it answer?#

Ask it something simple:

dig @1.1.1.1 isitdns.net A +short

Swap 1.1.1.1 for your own resolver's IP. Real output:

104.21.56.211
172.67.155.242

Reading it: two IPv4 addresses, so the name resolves. Two is normal; many services publish several addresses so clients can try another if one fails.

If nothing comes back, work through the header line instead, which +short hides. Run it again without +short and read the status: word:

StatusMeans
NOERROR with answersworking
NOERROR, ANSWER: 0no record of that type (RFC 9824 §6)
NXDOMAINthe name does not exist
SERVFAILthe resolver tried and failed, often DNSSEC, see dnssec-troubleshooting. If the answer carries an EDE: line, it already names the cause (extended-dns-errors)
REFUSEDthe resolver will not serve you, usually an access list
timed outno reply from that address

Step 3: is it telling you the truth?#

A resolver that answers is not necessarily a resolver that is honest. The test is to ask several and compare.

for r in 1.1.1.1 8.8.8.8 9.9.9.9; do
  echo "$r -> $(dig -4 @"$r" +short isitdns.net A | tr '\n' ' ')"
done

What you want: the same set of addresses from each, allowing for order changes and for large services that legitimately vary by location.

A network between you and the resolver can intercept port 53 and answer in the resolver's name; preventing exactly that is a stated goal of DoH (RFC 8484 section 1). Confirm over an encrypted transport, which that network cannot forge:

dig @1.1.1.1 +https +dnssec isitdns.net A

If +https shows ad and the plain UDP query does not, something on the path answered for the resolver or rewrote its reply (RFC 2694). See dot-doh.

If one differs sharply, especially by returning a single address on a private range like 192.168.x.x or 10.x.x.x when the others return public addresses, that resolver is rewriting answers. That can be deliberate (split horizon, parental filtering, enterprise blocking) or hostile.

If all three agree with each other but disagree with what you get without @, the thing rewriting answers is between you and all of them. See the interception check on the troubleshooting index.

Step 4: confirm it is a resolver, not an authority#

A resolver does the lookup work for you: RFC 1034 §2.4 calls resolvers "programs that extract information from name servers in response to client requests". An authoritative server owns a zone and answers only for that zone.

dig @1.1.1.1 isitdns.net SOA

Check the flags line:

  • ra present: recursion available, this is a resolver and it will do work for you
  • aa present: authoritative, this server owns the zone the name is in. A server can set both; read ra for the recursion question and aa for the ownership one

An authoritative-only server does not recurse (RFC 1034 §4.3.2, step 1), so a machine pointed at one can look up names in that one zone and nothing else. Details in query-types.

Quick reference#

SymptomWhere to look
nothing resolves at allstep 1, check whether you are pointed at the wrong server
one record is stale, others finecompare directly against the authority: check-an-auth
answers differ between resolversstep 3, something is rewriting
works in terminal, not in browserbrowser has its own DNS, see dot-doh
only names in one zone resolvestep 4, that is an authoritative server
SERVFAIL on one specific nameextended-dns-errors first, then dnssec-troubleshooting

See also#