我的 Debian 安装正在使用systemd-resolved
NetworkManager。对于我的家庭连接,我已配置 NetworkManager 来设置要使用的 DNS 服务器:
$cat /etc/NetworkManager/system-connections/my-wifi-ssid.nmconnection
...
[ipv4]
dns=10.30.20.1;1.1.1.1;8.8.8.8;
ignore-auto-dns=true
method=auto
...
基本上,我希望默认使用我的现场 DNS 服务器10.30.20.1
,而仅将另外两个服务器作为后备。
问题是,活动/使用的服务器似乎是随机选择的:
$resolvectl status
Link 4 (wlp3s0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 1.1.1.1
DNS Servers: 10.30.20.1 1.1.1.1 8.8.8.8
注意:我看到这三个服务器都处于活动状态,但并不一致。有没有办法强制 systemd-resolved 优先选择 NetworkManager 首先列出的服务器?
答案1
即使配置了静态 DNS 服务器,NetworkManager 偶尔也会删除所有服务器,导致没有一个服务器正常工作。此外,它会随着网络接口的启动和关闭而更改 DNS 服务器。NetoworkManager 中似乎没有办法关闭其动态管理。
另一种解决方案是完全禁用 DNS 的动态管理。您可以通过删除/etc/resolv.conf
符号链接并将其替换为静态的实际文件来实现此目的。类似这样的方法可以奏效:
nameserver 10.30.20.1
nameserver 1.1.1.1
nameserver 8.8.8.8
此文件中还有 NetworkManager 自动添加的其他设置,您可能也想复制这些设置。