You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/net/dns
Jonathan Nobels 02e3c046aa
net/dns: re-query system resolvers on no-upstream resolver failure on apple platforms (#12398)
Fixes tailscale/corp#20677

On macOS sleep/wake, we're encountering a condition where reconfigure the network
a little bit too quickly - before apple has set the nameservers for our interface.
This results in a persistent condition where we have no upstream resolver and
fail all forwarded DNS queries.

No upstream nameservers is a legitimate configuration, and we have no  (good) way
of determining when Apple is ready - but if we need to forward a query, and we
have no nameservers, then something has gone badly wrong and the network is
very broken.

A simple fix here is to simply inject a netMon event, which will go through the
configuration dance again when we hit the SERVFAIL condition.

Tested by artificially/randomly returning [] for the list of nameservers in the bespoke
ipn-bridge code responsible for getting the nameservers.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
3 weeks ago
..
publicdns Net/DNS/Publicdns: update the IPv6 range that we use to recreate route endpoint for control D 2 months ago
recursive all: use Go 1.22 range-over-int 3 months ago
resolvconffile clientupdate, net/dns: fix some "tailsacle" typos 3 months ago
resolver net/dns: re-query system resolvers on no-upstream resolver failure on apple platforms (#12398) 3 weeks ago
config.go all: update copyright and license headers 1 year ago
debian_resolvconf.go all: update copyright and license headers 1 year ago
direct.go health, all: remove health.Global, finish plumbing health.Tracker 2 months ago
direct_linux.go health, all: remove health.Global, finish plumbing health.Tracker 2 months ago
direct_notlinux.go all: update copyright and license headers 1 year ago
direct_test.go clientupdate, net/dns: fix some "tailsacle" typos 3 months ago
flush_default.go all: update copyright and license headers 1 year ago
flush_windows.go cmd/tailscaled, net/dns, wgengine/router: start Windows child processes with DETACHED_PROCESS when I/O is being piped 3 weeks ago
ini.go all: update copyright and license headers 1 year ago
ini_test.go all: update copyright and license headers 1 year ago
manager.go net/dns: fix crash in tests 4 weeks ago
manager_darwin.go health, all: remove health.Global, finish plumbing health.Tracker 2 months ago
manager_default.go health, all: remove health.Global, finish plumbing health.Tracker 2 months ago
manager_freebsd.go health, all: remove health.Global, finish plumbing health.Tracker 2 months ago
manager_linux.go health, all: remove health.Global, finish plumbing health.Tracker 2 months ago
manager_linux_test.go health, all: remove health.Global, finish plumbing health.Tracker 2 months ago
manager_openbsd.go health, all: remove health.Global, finish plumbing health.Tracker 2 months ago
manager_tcp_test.go net/dns: don't set MatchDomains on Apple platforms when no upstream nameservers available (#12334) 4 weeks ago
manager_test.go net/dns: fix crash in tests 4 weeks ago
manager_windows.go cmd/tailscaled, net/dns, wgengine/router: start Windows child processes with DETACHED_PROCESS when I/O is being piped 3 weeks ago
manager_windows_test.go health, all: remove health.Global, finish plumbing health.Tracker 2 months ago
nm.go all: cleanup unused code, part 2 (#10670) 6 months ago
noop.go all: update copyright and license headers 1 year ago
nrpt_windows.go net/dns: unconditionally write NRPT rules to local settings 3 months ago
openresolv.go net/dns: log more info when openresolv commands fail 5 months ago
osconfig.go net/dns: fix typo in OSConfig logging (#12330) 4 weeks ago
osconfig_test.go all: update copyright and license headers 1 year ago
resolvconf-workaround.sh all: update copyright and license headers 1 year ago
resolvconf.go net/dns: properly detect newer debian resolvconf 9 months ago
resolvconfpath_default.go net/dns: overwrite /tmp/resolv.conf on gokrazy 12 months ago
resolvconfpath_gokrazy.go net/dns: overwrite /tmp/resolv.conf on gokrazy 12 months ago
resolvd.go all: update copyright and license headers 1 year ago
resolved.go health, all: remove health.Global, finish plumbing health.Tracker 2 months ago
utf.go all: update copyright and license headers 1 year ago
utf_test.go all: update copyright and license headers 1 year ago
wsl_windows.go cmd/tailscaled, net/dns, wgengine/router: start Windows child processes with DETACHED_PROCESS when I/O is being piped 3 weeks ago