From 954a2dfd31d345615b633771abe9b76defe2b2b3 Mon Sep 17 00:00:00 2001 From: Greg Steuck Date: Wed, 25 Mar 2026 10:19:02 -0700 Subject: [PATCH] net/dns: fix duplicate search line entries (OpenBSD, primarily) Fixes #12360 Signed-off-by: Greg Steuck --- net/dns/manager.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/net/dns/manager.go b/net/dns/manager.go index 889c542cf..8daa13cbc 100644 --- a/net/dns/manager.go +++ b/net/dns/manager.go @@ -431,7 +431,14 @@ func (m *Manager) compileConfig(cfg Config) (rcfg resolver.Config, ocfg OSConfig defaultRoutes = append(defaultRoutes, &dnstype.Resolver{Addr: ip.String()}) } rcfg.Routes["."] = defaultRoutes - ocfg.SearchDomains = append(ocfg.SearchDomains, baseCfg.SearchDomains...) + // Append base config search domains, but only if not already present. + // This prevents duplicates when GetBaseConfig() reads back domains that + // Tailscale itself previously wrote to resolv.conf. + for _, domain := range baseCfg.SearchDomains { + if !slices.Contains(ocfg.SearchDomains, domain) { + ocfg.SearchDomains = append(ocfg.SearchDomains, domain) + } + } } return rcfg, ocfg, nil