systemd-resolved:未设置域时使用哪个 DNS 服务器?

systemd-resolved:未设置域时使用哪个 DNS 服务器?

我想知道systemd-resolved未设置域时将使用什么 DNS 服务器。它使用GlobalDNS 服务器还是使用其中一台LinkDNS 服务器?例如,当没有设置域时:

$ resolvectl domain
Global:
Link 217 (vethcad2158):
Link 215 (vethbcc93d0):
Link 213 (veth97a2e2d):
Link 205 (vethea47238):
Link 201 (vethfd64a0e):
Link 3 (docker0):
Link 2 (ens160):

我们通过 DHCP 配置了DNSGlobal服务器:/etc/systemd/resolved.confLink

$ resolvectl dns
Global: 10.3.0.21
Link 217 (vethcad2158):
Link 215 (vethbcc93d0):
Link 213 (veth97a2e2d):
Link 205 (vethea47238):
Link 201 (vethfd64a0e):
Link 3 (docker0):
Link 2 (ens160): 10.3.0.21 10.3.0.22 10.3.0.23 8.8.8.8 8.8.4.4

如果没有设置域,是否systemd-resolved默认将所有内容发送到,或者是否会选择发送到任何内容?如果全局 DNS 服务器 ( ) 没有响应,它是否会通过 DNS 服务器进行循环?如果是,什么时候(如果有的话)决定何时再次尝试DNS 服务器?GlobalLink 210.3.0.21Link 2systemd-resolvedGlobal

这条线来自systemd-resolved文档似乎相关:

If a query does not match any configured routing domain (either per-link or global), it is sent to all DNS servers that are configured on links with the DefaultRoute= option set, as well as the globally configured DNS server.

所以我的猜测是,它将使用来自Global和 的所有已配置的 DNS 服务器Links。什么是优先事项?它会开始Global并继续使用它直到/除非GlobalDNS 服务器没有响应吗?该文档说查询“发送到所有 DNS 服务器”,这是否意味着它实际上会立即向每个配置的 DNS 服务器发送单个查询,也许从首先响应的服务器获取响应?

很抱歉提出所有问题,并感谢您提供所有信息!

答案1

是一篇关于该主题的有趣文章。它说:

...当不同接口上有多个相同长度的匹配时,它们会并行解析。

如果resolvectl query有一个选项可以启用详细输出,显示哪个 DNS 服务器最终为查询提供了解析,就像dig以前那样......

相关内容