infractlby prmctl
runbooks › dns › resolution-failure

DNS Resolution Failure

A practical incident runbook for determining whether a DNS failure is local, recursive, authoritative, network-related, or caused by stale data.

Incident objective

Restore reliable name resolution without destroying evidence.

Establish scope first, then collect enough data to explain where resolution is failing.

Quick triage

01

Confirm scope

One hostname, one client, one resolver, one network, or everyone?

02

Identify the resolver

Determine which recursive resolver the client is actually using.

03

Compare direct queries

Query the recursive and authoritative sides independently.

04

Inspect the path

Check UDP/TCP 53 reachability, firewall changes, and packet loss.

05

Check freshness

Compare SOA serials, TTLs, negative caching, and recent DNS changes.

06

Verify recovery

Repeat the original query and compare with an independent path.

Core commands

dig example.com
dig @resolver.example example.com
dig +trace example.com

dig example.com A
dig example.com AAAA
dig example.com NS
dig example.com SOA

ss -lntup | grep ':53'
tcpdump -ni any port 53

Evidence to capture

Client side

Hostname, resolver IP, response code, timestamp, TCP/UDP behavior.

Resolver side

Cache state, logs, upstream errors, resource pressure.

Authoritative side

SOA serial, NS delegation, zone health, authoritative answers.

Network side

Firewall changes, packet loss, MTU issues, blocked TCP/53.

Do not do this first

Do not restart everything immediately.

A restart can hide the failure mode, flush useful state, and make root-cause analysis harder.

Recovery verification

# Original client path
dig example.com

# Explicit recursive resolver
dig @resolver.example example.com

# Independent path
dig +trace example.com