LLMNR (Link-Local Multicast Name Resolution) 和 mDNS (Multicast DNS):用于在没有 DNS 服务器的局域网内解析主机名(类似于 Windows 的网络发现或 Apple 的 Bonjour)。
DNS over TLS (DoT): 支持加密 DNS 查询,防止隐私泄露和中间人篡改。
配置文件与工作模式
主配置文件
主要配置文件位于 /etc/systemd/resolved.conf。
常见的配置项包括:
ini
[Resolve]# 全局 DNS 服务器,配置 DNS,多个使用空格分隔DNS=8.8.8.8 1.1.1.1# 备用 DNSFallbackDNS=114.114.114.114# 是否开启多播 DNS 支持 (yes/no/resolve)MulticastDNS=yes# 是否开启 DNS over TLS (yes/no/opportunistic)DNSOverTLS=no# 是否开启缓存Cache=yes
$ resolvectl --help
resolvectl [OPTIONS...] COMMAND ...
Send control commands to the network name resolution manager, or
resolve domain names, IPv4 and IPv6 addresses, DNS records, and services.
Commands:
query HOSTNAME|ADDRESS... Resolve domain names, IPv4 and IPv6 addresses
service [[NAME] TYPE] DOMAIN Resolve service (SRV)
openpgp EMAIL@DOMAIN... Query OpenPGP public key
tlsa DOMAIN[:PORT]... Query TLS public key
status [LINK...] Show link and server status
statistics Show resolver statistics
reset-statistics Reset resolver statistics
flush-caches Flush all local DNS caches
reset-server-features Forget learnt DNS server feature levels
dns [LINK [SERVER...]] Get/set per-interface DNS server address
domain [LINK [DOMAIN...]] Get/set per-interface search domain
default-route [LINK [BOOL]] Get/set per-interface default route flag
llmnr [LINK [MODE]] Get/set per-interface LLMNR mode
mdns [LINK [MODE]] Get/set per-interface MulticastDNS mode
dnsovertls [LINK [MODE]] Get/set per-interface DNS-over-TLS mode
dnssec [LINK [MODE]] Get/set per-interface DNSSEC mode
nta [LINK [DOMAIN...]] Get/set per-interface DNSSEC NTA
revert LINK Revert per-interface configuration
Options:
-h --help Show this help
--version Show package version
--no-pager Do not pipe output into a pager
-4 Resolve IPv4 addresses
-6 Resolve IPv6 addresses
-i --interface=INTERFACE Look on interface
-p --protocol=PROTO|help Look via protocol
-t --type=TYPE|help Query RR with DNS type
-c --class=CLASS|help Query RR with DNS class
--service-address=BOOL Resolve address for services (default: yes)
--service-txt=BOOL Resolve TXT records for services (default: yes)
--cname=BOOL Follow CNAME redirects (default: yes)
--search=BOOL Use search domains for single-label names
(default: yes)
--raw[=payload|packet] Dump the answer as binary data
--legend=BOOL Print headers and additional info (default: yes)
See the resolvectl(1) man page for details.
systemd-resolved[]: Failed to add DNS server address
journalctl -u systemd-resolved 出现如上错误日志
原因:/etc/systemd/resolved.conf 中 DNS 字段配置异常导致,注意多个 DNS 使用空格分隔
总结
systemd-resolved 是现代 Linux 发行版(如 Ubuntu 18.04+, Fedora 等)网络栈的重要组成部分。它通过统一管理 DNS 请求,提供了更好的性能(缓存)和灵活性(针对不同接口的 DNS 配置)。对于大多数普通用户和服务器管理员,保留其默认设置是最佳选择;但对于需要精细控制 DNS 流量的高级用户,理解其工作原理(尤其是与 /etc/resolv.conf 的关系)至关重要。