[client] Add system DNS fallback for Windows, systemd-resolved, NetworkManager (#6000)

This commit is contained in:
Viktor Liu
2026-05-04 17:36:43 +09:00
committed by GitHub
parent d0f9d80c3a
commit db2a62bf29
13 changed files with 572 additions and 116 deletions

View File

@@ -1,28 +1,43 @@
package dns
import (
"net/netip"
"github.com/netbirdio/netbird/client/internal/statemanager"
)
// androidHostManager is a noop on the OS side (Android's VPN service handles
// DNS for us) but tracks the OS-reported resolver list pushed via
// OnUpdatedHostDNSServer so it can serve as the fallback nameserver source.
type androidHostManager struct {
holder *hostsDNSHolder
}
func newHostManager() (*androidHostManager, error) {
return &androidHostManager{}, nil
func newHostManager(holder *hostsDNSHolder) (*androidHostManager, error) {
return &androidHostManager{holder: holder}, nil
}
func (a androidHostManager) applyDNSConfig(HostDNSConfig, *statemanager.Manager) error {
func (a *androidHostManager) applyDNSConfig(HostDNSConfig, *statemanager.Manager) error {
return nil
}
func (a androidHostManager) restoreHostDNS() error {
func (a *androidHostManager) restoreHostDNS() error {
return nil
}
func (a androidHostManager) supportCustomPort() bool {
func (a *androidHostManager) supportCustomPort() bool {
return false
}
func (a androidHostManager) string() string {
func (a *androidHostManager) string() string {
return "none"
}
func (a *androidHostManager) getOriginalNameservers() []netip.Addr {
hosts := a.holder.get()
out := make([]netip.Addr, 0, len(hosts))
for ap := range hosts {
out = append(out, ap.Addr())
}
return out
}