Priorotize IPv4 DNS for windows underlying dns

This commit is contained in:
Nova 2025-07-22 07:53:52 +03:30
parent c77ac7cd00
commit 0d52604e72

View File

@ -73,7 +73,8 @@ func getFirstDNS(luid winipcfg.LUID) string {
} }
func getNameServersForInterface(luid winipcfg.LUID) ([]string, error) { 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() nsAddrs, err := luid.DNS()
if err != nil { if err != nil {
return nil, err return nil, err
@ -84,16 +85,25 @@ func getNameServersForInterface(luid winipcfg.LUID) ([]string, error) {
isSystemDNSAltered = true isSystemDNSAltered = true
} }
if server.IsValid() && server.String() != setMarkAddr && server.String() != dhcpMarkAddr { 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" { if isSystemDNSAltered && len(nameserversV4) > 0 && nameserversV4[0] == "127.0.0.1" {
nameservers = nameservers[1:] nameserversV4 = nameserversV4[1:]
} }
if len(nameservers) == 0 { if len(nameserversV4) > 0 {
log.Println("getNameServersForInterface: no nameservers found") return nameserversV4, nil
} }
return nameservers, nil if len(nameserversV6) > 0 {
return nameserversV6, nil
}
log.Println("getNameServersForInterface: no nameservers found")
return nil, nil
} }