systemd-resolved #
https://manpages.ubuntu.com/manpages/noble/man8/systemd-resolved.service.8.html
systemd-resolved
是一个系统服务,提供网络名称解析功能,供本地应用程序使用。本地应用程序可以通过以下三种接口提交网络名称解析请求:
systemd-resolved
在系统总线上提供的原生全功能API。建议客户端使用该 API,因为它是异步的并且功能全面,glibc
的getaddrinfo(3)
API,定义于 RFC3493[1],以及其相关的解析器函数,包括gethostbyname(3)
。该API在多个平台上得到广泛支持,包括Linux以外的平台。然而,目前它不提供DNSSEC验证状态信息,并且只支持同步调用。另外,
systemd-resolved
在本地回环接口的IP地址127.0.0.53和127.0.0.54上提供了本地DNS stub监听器。可以将直接发出DNS请求且绕过本地API的程序指向这个stub,以连接到systemd-resolved
。不过,强烈建议本地程序使用glibc NSS
或总线 API(如上所述),因为某些网络解析概念(如链路本地地址或 LLMNR Unicode 域名)无法映射到单播DNS协议中。127.0.0.53 上的 DNS stub 解析器提供了本地解析器的完整功能集,包括 LLMNR 和多播 DNS 解析功能。而 127.0.0.54 上的 DNS stub 解析器则功能有限,它仅在“代理”模式下运行,也就是说,它会将大部分 DNS 消息几乎不做修改地传递给当前的上游 DNS 服务器,但不会在本地处理这些消息。
使用的 DNS 服务器由全局设置 /etc/systemd/resolved.conf
。
在Ubuntu上查看/etc/systemd/resolved.conf
:
1nameserver 127.0.0.53
2options edns0 trust-ad
3search openstacklocal
配置的DNS服务器是127.0.0.53
,如果想要查看实际的DNS服务器可以使用resolvectl
。resolvectl
是一个用于管理系统DNS解析配置的命令行工具。 它是systemd-resolved
服务的一部分。
1resolvectl
2Global
3 Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
4 resolv.conf mode: stub
5
6Link 2 (ens3)
7 Current Scopes: DNS
8 Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
9Current DNS Server: 10.10.200.21
10 DNS Servers: 10.10.200.21 10.10.200.22
11 DNS Domain: openstacklocal