A DNS stub resolver is a client-side software component that forwards DNS queries from applications to a configured recursive resolver without performing iterative lookups itself, relying entirely on the resolver's response. Because every networked device includes a stub resolver and its configuration affects all application name lookups, misconfigurations—such as unreachable resolver addresses, stale caches, or incorrect search suffixes—cause intermittent failures, slow page loads, and application timeouts even when network connectivity is healthy. Operations teams manage stub behavior indirectly through DHCP distribution and endpoint management tools, while also facing security considerations around unencrypted DNS traffic and the potential for applications to override resolver settings with encrypted transports like DNS over TLS or DNS over HTTPS.
How DNS stub resolver works
A stub resolver sits between applications on a device and a recursive resolver. It performs no iterative lookups of its own, so its work is limited to passing queries along and handing back results.
- Application requests a name: An application calls a system library function, such as getaddrinfo, to look up a host name.
- Local sources are checked: The stub resolver may first consult a hosts file or a local cache and answer immediately if it finds a match.
- Query is sent to a recursive resolver: If there is no local answer, the stub sends a DNS query with the recursion desired flag set to the resolver address it has been configured with. That address is often learned through DHCP or set by hand.
- Answer is returned: The recursive resolver does the full lookup and replies. The stub passes the addresses or the error code back to the application and may cache the result for the record's time to live.
If the first configured resolver does not respond, the stub typically retries or tries the next one in its list. Many stubs can also use encrypted transports such as DNS over TLS or DNS over HTTPS to reach the recursive resolver.
Common DNS stub resolver issues
If the first configured resolver is down, the stub waits for a timeout before trying the next one, so users see multi-second delays on every lookup. Failover timing varies by operating system, which makes the symptom inconsistent across devices.
Short names are expanded using the configured search domains, so a lookup may generate several failed queries before one succeeds. A wrong suffix list can also resolve a short name to an unintended host.
A local cache can keep returning an old address after a record is changed, even though the recursive resolver already has the new one. Flushing the client cache clears the symptom, which points to the stub rather than the server.
When a VPN client changes resolver settings, internal names may fail off the VPN or public names may go to the internal resolver. Mixed resolver lists in which only some servers know internal zones produce intermittent failures.
A wrong DNS server option in a DHCP scope gives every client in that subnet the same bad resolver address. Failures then appear across many devices at once while IP connectivity still works.