Meu servidor Centos 7 não resolve nomes de domínio corretamente. Pelo que vejo, em sistemas Linux modernos /etc/resolv.conf
geralmente é gerado com dhclient
, dnsmasq
ou Network Manager
.
Assim, tenho uma pergunta teórica geral sobre a pilha de rede nos Linux modernos:
Quem é responsável pela leitura /etc/resolv.conf
? Quais players (serviços ou subsistemas de kernel) estão envolvidos na resolução de nomes de domínio?
RESPOSTA CURTA: O manual do Arch linux diz que a configuração de alto nível da resolução de nomes de domínio é feita /etc/nsswitch.conf
e depende da glibc
API Name Service Switch.
glibc
usa nss-resolve
função para enviar solicitações de DNS para servidores DNS.
Normalmente, em sistemas CentOS modernos, nss-resolve
depende do systemd-resolved
serviço. Se /etc/resolv.conf
foi gerado por algo como dhclient-script
, systemd-resolved
lê e funciona em modo de compatibilidade, emulando o comportamento de sistemas mais antigos como BIND
o cliente DNS.