Estou usando o Ubuntu. Eu vejo as seguintes informações da página de manual:
Para
/etc/host.conf
(man host.conf
)host.conf - arquivo de configuração do resolvedor
O arquivo /etc/host.conf contém informações de configuração específicas para a biblioteca do resolvedor.
Para
/etc/resolv.conf
(man resolv.conf
)resolv.conf - arquivo de configuração do resolvedor
O resolvedor é um conjunto de rotinas na biblioteca C que fornece acesso ao DNS (Internet Domain Name System).
O resolvedor usa os dois arquivos, em que ordem e quais são as diferenças?
Em sistemas Linux modernos, a biblioteca de resolução referida por essas páginas de manual é integrada à
glibc
biblioteca. O/etc/host.conf
é lido pela parte integrada naglibc
biblioteca principal: observe que a página man diz que a implementação atual reconhece apenas as palavras-chavetrim
,multi
ereorder
, embora oHistorical
parágrafo naNOTES
seção indique que costumava haver mais.As pesquisas reais são executadas pelas várias bibliotecas de plug-ins, conforme determinado pelo
/etc/nsswitch.conf
arquivo. Cada método de pesquisa, comofiles
,nis
,dns
oucompat
tem uma correspondência um-para-um com um arquivo de biblioteca, comolibnss_files.so.2
,libnss_nis.so.2
,libnss_dns.so.2
oulibnss_compat.so.2
por exemplo.Os plug-ins
libnss_files.so.2
,libnss_dns.so.2
,libnss_compat.so.2
elibnss_hesiod.so.2
são fornecidos com oglibc
pacote de biblioteca principal, mas também existem outros plug-ins de diferentes fontes, comolibnss_nis.so.2
de um pacote separadolibnss-nis
,libnss_mdns*.so.2
dolibnss-mdns
pacote elibnss_resolve.so.2
projetados para serem usados comsystemd-resolved
. Se você integrar o sistema com LDAP ou Active Directory, essas soluções de integração também fornecerão suas própriaslibnss_*
bibliotecas.Se a
hosts:
linhansswitch.conf
incluidns
, entãolibnss_dns.so
é usada e será lida/etc/resolv.conf
.Mas se
dns
for substituído porresolve
, entãolibnss_resolve.so.2
será usado. Isso ignorará o clássico/etc/resolv.conf
e, em vez disso, conversará com osystemd-resolved
daemon, que é configurado por/etc/systemd/resolved.conf
arquivo, arquivos drop-in em/etc/systemd/resolved.conf.d/*.conf
,[/usr]/lib/systemd/resolved.conf.d/*.conf
ou/run/systemd/resolved.conf.d/*.conf
, ou aresolvectl
ferramenta de linha de comando.Para também cobrir programas que leem
/etc/resolv.conf
diretamente em vez de usarglibc
a biblioteca de resolvedores do 's (como certas versões donslookup
comando, por exemplo),systemd-resolved
manterá (a menos que esse recurso seja desativado) um ouvinte para solicitações de DNS em 127.0.0.53 e fornecerá um arquivo fictício/etc/resolv.conf
apontando para ele.Em outras palavras: sem consultar
/etc/nsswitch.conf
, você só pode ter certeza de que/etc/host.conf
será usado. O que acontece depois disso vai depender do que/etc/nsswitch.conf
diz.A maioria dos programas usará as funções de resolução de nomes de host da
glibc
biblioteca e, portanto, usará/etc/resolv.conf
apenas se ahosts:
linha de/etc/nsswitch.conf
incluir a palavra-chavedns
.Se a
hosts:
linha de/etc/nsswitch.conf
incluir a palavra-chaveresolve
, você deve tratar/etc/resolv.conf
como legado e usar oresolvectl
comando para verificar a configuração real do servidor DNS. Neste caso,/etc/resolv.conf
só existe para orientar aqueles poucos programas que usam suas próprias funções de resolução de DNS para usar os serviços do localsystemd-resolved
, que então encaminhará suas solicitações para os servidores DNS reais (ou fornecerá uma resposta baseada em MDNS ou LLMNR, se o solicitação é sobre um serviço de rede local e as informações MDNS/LLMNR estão disponíveis).