Alterações no /etc/hosts
arquivo parecem entrar em vigor imediatamente. Estou curioso sobre a implementação. Que mágica é usada para alcançar esse recurso?
networking
hosts
Rudwna
fonte
fonte
Respostas:
A mágica é abrir o
/etc/hosts
arquivo e lê-lo:A
getaddrinfo(3)
função, que é a única interface de resolução de nomes padrão, será aberta e lida/etc/hosts
sempre que for chamada para resolver um nome de host.Aplicativos mais sofisticados que não estão usando o padrão
getaddrinfo(3)
, mas que ainda estão adicionando alguma/etc/hosts
mistura ao mix (por exemplo, odnsmasq
servidor DNS), podem estar usandoinotify(7)
para monitorar alterações nos/etc/hosts
arquivos e relê-los somente se necessário.Navegadores e outros aplicativos não farão isso. Eles abrirão e lerão
/etc/hosts
toda vez que precisarem resolver um nome de host, mesmo que não estejam usando o resolvedor da libc diretamente, mas estejam replicando seu funcionamento por outros meios.fonte
A resolução de nomes, entre outras coisas, é gerenciada por
/etc/nsswitch.conf
. Aqui está um trecho:Observe a
hosts
linha. Ele diz: "Ao resolver um nome de host, primeiro leia o/etc/hosts
arquivo para procurar o nome do host, se não for encontrado, execute uma consulta DNS, se não for encontrado, tente o nome do host do sistema configurado localmente".Então aqui está o porquê de ser tão rápido. Observe que ele não depende dos serviços de rede da máquina, portanto, não há serviço para reiniciar ou recarregar.
fonte
/etc/hosts
. Por que não está usando uma versão em cache?