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