mirror of
https://github.com/tailscale/tailscale.git
synced 2026-09-13 06:19:11 -04:00
Add a new modular dnsresolvecache feature that records every successful DNS resolution from net/dnscache as a JSON file per hostname in $statedir/dns-cache/, so a later boot with misconfigured DNS can still find last-known-good IPs for critical hostnames like the control plane. Files are rewritten only when their contents change, so a file's modification time records when the answer last changed. When regular DNS resolution fails, the disk cache is now consulted before the DERP-based bootstrap DNS in net/dnsfallback. This is the first step toward removing the DERP-based mechanism: new clientmetrics (dnscache_disk_fallback_hit, dnscache_disk_fallback_miss, dnscache_derp_fallback_ok, dnscache_derp_fallback_dial_ok) will tell us when the DERP path no longer fires in the fleet and can be deleted. The feature is linked into tailscaled by default (omittable with ts_omit_dnsresolvecache) and is not included in tsnet. Updates #21028 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com> Change-Id: I59228cbf68e3b48dfb1215cdd12bd8166ab14034