diff --git a/core/server/internal/boxdns/monitor_windows.go b/core/server/internal/boxdns/monitor_windows.go index 8a99e58..fd091c5 100644 --- a/core/server/internal/boxdns/monitor_windows.go +++ b/core/server/internal/boxdns/monitor_windows.go @@ -73,7 +73,8 @@ func getFirstDNS(luid winipcfg.LUID) string { } func getNameServersForInterface(luid winipcfg.LUID) ([]string, error) { - nameservers := make([]string, 0, 4) + nameserversV4 := make([]string, 0, 4) + nameserversV6 := make([]string, 0, 4) nsAddrs, err := luid.DNS() if err != nil { return nil, err @@ -84,16 +85,25 @@ func getNameServersForInterface(luid winipcfg.LUID) ([]string, error) { isSystemDNSAltered = true } if server.IsValid() && server.String() != setMarkAddr && server.String() != dhcpMarkAddr { - nameservers = append(nameservers, server.String()) + if server.Is4() { + nameserversV4 = append(nameserversV4, server.String()) + } else { + nameserversV6 = append(nameserversV6, server.String()) + } } } - if isSystemDNSAltered && len(nameservers) > 0 && nameservers[0] == "127.0.0.1" { - nameservers = nameservers[1:] + if isSystemDNSAltered && len(nameserversV4) > 0 && nameserversV4[0] == "127.0.0.1" { + nameserversV4 = nameserversV4[1:] } - if len(nameservers) == 0 { - log.Println("getNameServersForInterface: no nameservers found") + if len(nameserversV4) > 0 { + return nameserversV4, nil } - return nameservers, nil + if len(nameserversV6) > 0 { + return nameserversV6, nil + } + + log.Println("getNameServersForInterface: no nameservers found") + return nil, nil }