![如何停止系统解析的切换 DNS 服务器](https://linux22.com/image/215227/%E5%A6%82%E4%BD%95%E5%81%9C%E6%AD%A2%E7%B3%BB%E7%BB%9F%E8%A7%A3%E6%9E%90%E7%9A%84%E5%88%87%E6%8D%A2%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我有一个本地 DNS 解析器配置,但我不确定为什么我的 DNS 解析器会切换。这是我的配置
#cat /etc/systemd/resolved.conf
[Resolve]
DNS=W.X.Y.Z
#FallbackDNS=
Domains=example.com
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no-negative
#DNSStubListener=yes
#ReadEtcHosts=yes
#cat /etc/resolve.conf
nameserver 127.0.0.53
options edns0 trust-ad
search example.com test.xxnet.com
但当我看到#systemd-resolve --status
Current DNS Server: A.B.C.D
DNS Servers: W.X.Y.Z
A.B.C.D
DNS Domain: example.com
test.xxnet.com
我这里有3个问题:
- 为什么即使我在 /etc/resolv.conf 中使用了超时 5,DNS 服务器仍在切换?
- ABCD从哪里来?
- 如何停止切换或仅使用 WXYZ 作为 DNS 解析器?
感谢您的支持。
答案1
来自man systemd-resolved
,强调我的:
联系的 DNS 服务器由以下确定:
中的全局设置
/etc/systemd/resolved.conf
,文件中的每个链接静态设置
/etc/systemd/network/*.network
(如果systemd-networkd.service(8)
使用),通过 DHCP 接收的每链路动态设置,
通过提供的信息
resolvectl(1)
,和其他系统服务提供的任何 DNS 服务器信息。
生成的要使用的 DNS 服务器列表是以下内容的组合全部这些来源。因此,您的 DHCP 服务器可能指定 ABCD 作为要使用的 DNS 服务器和test.xxnet.com
要使用的域。这使得 ABCD 成为连接特定的 DNS 服务器,这也使其成为该连接的首选 DNS 服务器。
这也意味着*.example.com
将从 ABCD 和 WXYZ 查询名称,但*.test.xxnet.com
仅从 ABCD 查询名称,因为搜索域test.xxnet.com
(可能)也由特定于连接的 DNS 配置提供(由 DHCP 接收)。
您可能必须告诉 DHCP 客户端忽略 DHCP 服务器提供的 DNS 配置。
如何做到这一点取决于两件事:
您使用的是哪个 DHCP 客户端? (
dhclient
并且dhcpcd
很常见)NetworkManager
您是直接配置 DHCP 客户端,还是由其他网络配置管理系统配置?
请编辑你的问题提供此信息,如果可以的话,我会相应地更新此答案。