我的 Centos 7 服务器无法正确解析域名。据我所知,在现代 Linux 系统/etc/resolv.conf
中,通常使用dhclient
, dnsmasq
或Network Manager
.
因此,我对现代 Linux 中的网络堆栈有一个一般性的理论问题:
谁负责阅读/etc/resolv.conf
?域名解析涉及哪些参与者(服务或内核子系统)?
简短的回答: Arch linux 手册说域名解析的高级配置是 /etc/nsswitch.conf
在名称服务切换glibc
API 中完成的。
glibc
使用nss-resolve
函数向 DNS 服务器发送 DNS 请求。
通常在现代 CentOS 系统上nss-resolve
依赖于 systemd-resolved
服务。如果/etc/resolv.conf
由类似的东西生成dhclient-script
,systemd-resolved
读取它并在兼容模式下工作,模拟旧系统(如BIND
DNS 客户端)的行为。