我想知道systemd-resolved
未设置域时将使用什么 DNS 服务器。它使用Global
DNS 服务器还是使用其中一台Link
DNS 服务器?例如,当没有设置域时:
$ 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.conf
Link
$ 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 服务器?Global
Link 2
10.3.0.21
Link 2
systemd-resolved
Global
这条线来自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
并继续使用它直到/除非Global
DNS 服务器没有响应吗?该文档说查询“发送到所有 DNS 服务器”,这是否意味着它实际上会立即向每个配置的 DNS 服务器发送单个查询,也许从首先响应的服务器获取响应?
很抱歉提出所有问题,并感谢您提供所有信息!
答案1
这是一篇关于该主题的有趣文章。它说:
...当不同接口上有多个相同长度的匹配时,它们会并行解析。
如果resolvectl query
有一个选项可以启用详细输出,显示哪个 DNS 服务器最终为查询提供了解析,就像dig
以前那样......