Do not start DNS forwarder on client side (#3094)

This commit is contained in:
Zoltan Papp 2024-12-20 16:20:50 +01:00 committed by GitHub
parent ddc365f7a0
commit 82b4e58ad0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -802,14 +802,12 @@ func (e *Engine) updateNetworkMap(networkMap *mgmProto.NetworkMap) error {
e.acl.ApplyFiltering(networkMap) e.acl.ApplyFiltering(networkMap)
} }
var dnsRouteFeatureFlag bool // DNS forwarder
if networkMap.PeerConfig != nil { dnsRouteFeatureFlag := toDNSFeatureFlag(networkMap)
dnsRouteFeatureFlag = networkMap.PeerConfig.RoutingPeerDnsResolutionEnabled dnsRouteDomains := toRouteDomains(e.config.WgPrivateKey.PublicKey().String(), networkMap.GetRoutes())
} e.updateDNSForwarder(dnsRouteFeatureFlag, dnsRouteDomains)
routedDomains, routes := toRoutes(networkMap.GetRoutes())
e.updateDNSForwarder(dnsRouteFeatureFlag, routedDomains)
routes := toRoutes(networkMap.GetRoutes())
if err := e.routeManager.UpdateRoutes(serial, routes, dnsRouteFeatureFlag); err != nil { if err := e.routeManager.UpdateRoutes(serial, routes, dnsRouteFeatureFlag); err != nil {
log.Errorf("failed to update clientRoutes, err: %v", err) log.Errorf("failed to update clientRoutes, err: %v", err)
} }
@ -874,12 +872,18 @@ func (e *Engine) updateNetworkMap(networkMap *mgmProto.NetworkMap) error {
return nil return nil
} }
func toRoutes(protoRoutes []*mgmProto.Route) ([]string, []*route.Route) { func toDNSFeatureFlag(networkMap *mgmProto.NetworkMap) bool {
if networkMap.PeerConfig != nil {
return networkMap.PeerConfig.RoutingPeerDnsResolutionEnabled
}
return false
}
func toRoutes(protoRoutes []*mgmProto.Route) []*route.Route {
if protoRoutes == nil { if protoRoutes == nil {
protoRoutes = []*mgmProto.Route{} protoRoutes = []*mgmProto.Route{}
} }
var dnsRoutes []string
routes := make([]*route.Route, 0) routes := make([]*route.Route, 0)
for _, protoRoute := range protoRoutes { for _, protoRoute := range protoRoutes {
var prefix netip.Prefix var prefix netip.Prefix
@ -890,7 +894,6 @@ func toRoutes(protoRoutes []*mgmProto.Route) ([]string, []*route.Route) {
continue continue
} }
} }
dnsRoutes = append(dnsRoutes, protoRoute.Domains...)
convertedRoute := &route.Route{ convertedRoute := &route.Route{
ID: route.ID(protoRoute.ID), ID: route.ID(protoRoute.ID),
@ -905,7 +908,24 @@ func toRoutes(protoRoutes []*mgmProto.Route) ([]string, []*route.Route) {
} }
routes = append(routes, convertedRoute) routes = append(routes, convertedRoute)
} }
return dnsRoutes, routes return routes
}
func toRouteDomains(myPubKey string, protoRoutes []*mgmProto.Route) []string {
if protoRoutes == nil {
protoRoutes = []*mgmProto.Route{}
}
var dnsRoutes []string
for _, protoRoute := range protoRoutes {
if len(protoRoute.Domains) == 0 {
continue
}
if protoRoute.Peer == myPubKey {
dnsRoutes = append(dnsRoutes, protoRoute.Domains...)
}
}
return dnsRoutes
} }
func toDNSConfig(protoDNSConfig *mgmProto.DNSConfig) nbdns.Config { func toDNSConfig(protoDNSConfig *mgmProto.DNSConfig) nbdns.Config {
@ -1243,7 +1263,7 @@ func (e *Engine) readInitialSettings() ([]*route.Route, *nbdns.Config, error) {
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
_, routes := toRoutes(netMap.GetRoutes()) routes := toRoutes(netMap.GetRoutes())
dnsCfg := toDNSConfig(netMap.GetDNSConfig()) dnsCfg := toDNSConfig(netMap.GetDNSConfig())
return routes, &dnsCfg, nil return routes, &dnsCfg, nil
} }