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