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
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>
1 year ago
..
art all: use Go 1.22 range-over-int 2 years ago
connstats all: use Go 1.22 range-over-int 2 years ago
dns net/dns: re-query system resolvers on no-upstream resolver failure on apple platforms (#12398) 1 year ago
dnscache net/dnscache: use parent context to perform lookup 1 year ago
dnsfallback tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing 2 years ago
flowtrack all: update copyright and license headers 3 years ago
ktimeout net/ktimeout: add a package to set TCP user timeout 2 years ago
memnet net/memnet: export the network name (#9111) 2 years ago
netaddr all: update copyright and license headers 3 years ago
netcheck net/netcheck: fix probeProto.String result for IPv6 probes 2 years ago
neterror net/neterror, wgengine/magicsock: use UDP GSO and GRO on Linux (#7791) 3 years ago
netkernelconf ipn/{ipnlocal,localapi},net/netkernelconf,client/tailscale,cmd/containerboot: optionally enable UDP GRO forwarding for containers (#12410) 2 years ago
netknob all: update copyright and license headers 3 years ago
netmon net/netmon: remove spammy log statements (#11953) 2 years ago
netns net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2 years ago
netstat net/{netns,netstat}: use new x/sys/cpu.IsBigEndian 3 years ago
netutil net/netmon, add: add netmon.State type alias of interfaces.State 2 years ago
packet all: use Go 1.22 range-over-int 2 years ago
ping net/ping: fix ICMP echo code field to 0 2 years ago
portmapper all: use math/rand/v2 more 2 years ago
proxymux all: cleanup unused code, part 1 (#10661) 2 years ago
routetable net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2 years ago
socks5 net/socks5: add password auth support 3 years ago
sockstats net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2 years ago
speedtest all: update copyright and license headers 3 years ago
stun all: make more tests pass/skip in airplane mode 2 years ago
stunserver all: use Go 1.22 range-over-int 2 years ago
tcpinfo all: use Go 1.22 range-over-int 2 years ago
tlsdial tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing 2 years ago
tsaddr types/views: remove duplicate SliceContainsFunc 2 years ago
tsdial tsnet,wgengine/netstack: add ListenPacket and tests 2 years ago
tshttpproxy all: use Go 1.22 range-over-int 2 years ago
tstun net/tstun: do SNAT after filterPacketOutboundToWireGuard 2 years ago
wsconn net/wsconn: accept a remote addr string and plumb it through 2 years ago