systemd/NetworkManager - DNS 服务器排序

systemd/NetworkManager - DNS 服务器排序

我的 Debian 安装正在使用systemd-resolvedNetworkManager。对于我的家庭连接,我已配置 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 自动添加的其他设置,您可能也想复制这些设置。

相关内容