Fix tailscale preferred MagicDNS domain matching

This commit is contained in:
NagaseMinato
2026-08-10 19:11:10 +08:00
committed by GitHub
parent efbd84276c
commit 65380457b8
+12 -1
View File
@@ -98,6 +98,7 @@ type Endpoint struct {
routerCfg *router.Config
dnsCfg *tsDNS.Config
routeDomains common.TypedValue[map[string]bool]
routeSuffixes common.TypedValue[[]string]
searchDomains atomic.Bool
routePrefixes atomic.Pointer[netipx.IPSet]
@@ -790,6 +791,11 @@ func (t *Endpoint) PreferredDomain(domain string) bool {
if routeDomains[domain] {
return true
}
for _, suffix := range t.routeSuffixes.Load() {
if mDNS.IsSubDomain(suffix, domain) {
return true
}
}
return !strings.Contains(domain, ".") && t.searchDomains.Load()
}
@@ -828,13 +834,18 @@ func (t *Endpoint) onReconfig(cfg *wgcfg.Config, routerCfg *router.Config, dnsCf
t.dnsCfg = dnsCfg
routeDomains := make(map[string]bool)
for fqdn := range dnsCfg.Routes {
for fqdn := range dnsCfg.Hosts {
routeDomains[fqdn.WithoutTrailingDot()] = true
}
for _, fqdn := range dnsCfg.SearchDomains {
routeDomains[fqdn.WithoutTrailingDot()] = true
}
routeSuffixes := make([]string, 0, len(dnsCfg.Routes))
for fqdn := range dnsCfg.Routes {
routeSuffixes = append(routeSuffixes, fqdn.WithoutTrailingDot())
}
t.routeDomains.Store(routeDomains)
t.routeSuffixes.Store(routeSuffixes)
t.searchDomains.Store(len(dnsCfg.SearchDomains) > 0)
var builder netipx.IPSetBuilder