From bc71beca97d3ad1f7884dd1dee9d5e216a9fc677 Mon Sep 17 00:00:00 2001 From: Viktor Liu Date: Sat, 31 May 2025 12:55:57 +0200 Subject: [PATCH] Apply DNS before routes to satisfy the dns route dependency --- client/internal/dns/server.go | 2 +- client/internal/engine.go | 18 +++++++++--------- client/internal/routemanager/manager.go | 1 - 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/client/internal/dns/server.go b/client/internal/dns/server.go index 3f49c23fd..7b845235c 100644 --- a/client/internal/dns/server.go +++ b/client/internal/dns/server.go @@ -489,7 +489,7 @@ func (s *DefaultServer) applyHostConfig() { } } - log.Debugf("extra match domains: %v", s.extraDomains) + log.Debugf("extra match domains: %v", maps.Keys(s.extraDomains)) if err := s.hostManager.applyDNSConfig(config, s.stateManager); err != nil { log.Errorf("failed to apply DNS host manager update: %v", err) diff --git a/client/internal/engine.go b/client/internal/engine.go index e04ccc9b8..e176e42bb 100644 --- a/client/internal/engine.go +++ b/client/internal/engine.go @@ -988,6 +988,15 @@ func (e *Engine) updateNetworkMap(networkMap *mgmProto.NetworkMap) error { } } + protoDNSConfig := networkMap.GetDNSConfig() + if protoDNSConfig == nil { + protoDNSConfig = &mgmProto.DNSConfig{} + } + + if err := e.dnsServer.UpdateDNSServer(serial, toDNSConfig(protoDNSConfig, e.wgInterface.Address().Network)); err != nil { + log.Errorf("failed to update dns server, err: %v", err) + } + dnsRouteFeatureFlag := toDNSFeatureFlag(networkMap) // apply routes first, route related actions might depend on routing being enabled @@ -1055,15 +1064,6 @@ func (e *Engine) updateNetworkMap(networkMap *mgmProto.NetworkMap) error { excludedLazyPeers := e.toExcludedLazyPeers(routes, forwardingRules, networkMap.GetRemotePeers()) e.connMgr.SetExcludeList(excludedLazyPeers) - protoDNSConfig := networkMap.GetDNSConfig() - if protoDNSConfig == nil { - protoDNSConfig = &mgmProto.DNSConfig{} - } - - if err := e.dnsServer.UpdateDNSServer(serial, toDNSConfig(protoDNSConfig, e.wgInterface.Address().Network)); err != nil { - log.Errorf("failed to update dns server, err: %v", err) - } - e.networkSerial = serial // Test received (upstream) servers for availability right away instead of upon usage. diff --git a/client/internal/routemanager/manager.go b/client/internal/routemanager/manager.go index ba04438e2..afb74c23e 100644 --- a/client/internal/routemanager/manager.go +++ b/client/internal/routemanager/manager.go @@ -441,7 +441,6 @@ func (m *DefaultManager) TriggerSelection(networks route.HAMap) { func (m *DefaultManager) stopObsoleteClients(networks route.HAMap) { for id, client := range m.clientNetworks { if _, ok := networks[id]; !ok { - log.Debugf("Stopping client network watcher, %s", id) client.Stop() delete(m.clientNetworks, id) }