net/dns/resolver: skip DNS health warning when doing split DNS (#19959)
When MagicDNS is enabled but no global upstream resolvers are configured, the forwarder only handles specific suffixes and defers other names to the system resolver. A query it has no resolver for is expected in that case, so don't raise the dns-forward-failing warning unless a default "." route makes Tailscale the default resolver. Fixes #19931 Signed-off-by: Brendan Creane <bcreane@gmail.com>
This commit is contained in:
@@ -1199,10 +1199,11 @@ func (f *forwarder) forwardWithDestChan(ctx context.Context, query packet, respo
|
||||
if len(resolvers) == 0 {
|
||||
resolvers = f.resolvers(domain)
|
||||
if len(resolvers) == 0 {
|
||||
// No upstream resolver for this name isn't a forwarder failure:
|
||||
// it's split DNS / a name we weren't asked to handle. Count it
|
||||
// rather than raising dnsForwarderFailing, which is reserved for
|
||||
// resolvers we found but couldn't reach. See tailscale/tailscale#19931.
|
||||
metricDNSFwdErrorNoUpstream.Add(1)
|
||||
if f.acceptDNS {
|
||||
f.health.SetUnhealthy(dnsForwarderFailing, health.Args{health.ArgDNSServers: ""})
|
||||
}
|
||||
f.logf("no upstream resolvers set, returning SERVFAIL")
|
||||
|
||||
res, err := servfailResponse(query)
|
||||
|
||||
Reference in New Issue
Block a user