mirror of
https://github.com/tailscale/tailscale.git
synced 2026-10-30 15:09:29 -04:00
In #20775 (and the follow-up in #21471), we started installing quad-100 as the OS's primary resolver whenever cfg has hosts not covered by a split DNS route, so that sandboxed macOS clients could still answer them. However, that check was added to the generic split DNS gate rather than to the Apple-specific one, so it also applies on Windows, where dcfg.Hosts always carries every node's records and MagicDNSHostsUnrouted is set whenever MagicDNS is disabled. As a result, a Windows node with MagicDNS off and at least one split DNS route (or with MagicDNS on and a peer shared in from another tailnet) gets a catch-all NRPT rule pointing at quad-100, and all DNS traffic on the device is proxied through it instead of only the configured suffixes. The check is redundant for Apple platforms: iOS never takes the scoped path there, and sandboxed macOS only does so via scopeApple, which already requires !cfg.requiresPrimaryResolver(). This removes it from the generic gate, restoring the pre-1.104 behavior on Windows, and adds tests. Updates tailscale/corp#45534 Fixes #21863 Signed-off-by: Nick Khyl <nickk@tailscale.com>