Troubleshooting
Linux DNS troubleshooting: test resolver, network and authoritative answers
Linux DNS troubleshooting should separate local resolver configuration, recursive resolution, authoritative DNS, and application-specific caching. “DNS is broken” can mean the server cannot reach a resolver, a hostname is genuinely misconfigured, or one process is holding stale data.
Test the resolver the server actually uses
Inspect resolv.conf or the active systemd-resolved/network configuration and query the configured resolver. Compare with a known public recursive resolver to determine whether the issue follows one resolver path.
A local caching daemon or container runtime may use a different resolver than the host shell.
Query authoritative data when ownership matters
For a domain you control, trace delegation and ask the authoritative nameservers directly. If authoritative data is wrong, changing the VPS resolver will not fix public DNS.
Record TTLs and serials during recent changes so stale recursive answers are not confused with authoritative inconsistency.
Check network and protocol reachability
DNS normally uses UDP and can fall back to TCP. Firewalls, VPN routing, broken IPv6 paths, or provider policy can make a configured resolver unreachable even when other internet access works.
Test both name resolution and direct IP connectivity to separate DNS from the application’s destination network.
Inspect application caches and search domains
Browsers, runtimes, JVMs, containers, and applications may cache results or append search domains. Restart or flush only the relevant cache after proving it is stale.
- Inspect the active resolver.
- Compare recursive and authoritative answers.
- Check UDP/TCP reachability.
- Account for application-level caches.