As 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?
relate perguntas
-
Encontrar threads/scripts associados a uma porta?
-
Pergunta sobre arquivos montados em rede
-
Um endereço IP pode terminar em 255 e não ser um endereço IP de transmissão?
-
Incapaz de identificar qual saída de endereço MAC do comando arp ou comando ip está correta
-
Roteador estranho funciona com centos 6 [fechado]
A mágica é abrir o
/etc/hosts
arquivo e lê-lo:A
getaddrinfo(3)
função, que é a única interface padrão de resolução de nomes, apenas abrirá e lerá/etc/hosts
cada vez que for chamada para resolver um nome de host.Aplicativos mais sofisticados que não estão usando o padrão
getaddrinfo(3)
, mas ainda estão de alguma forma adicionando/etc/hosts
à mistura (por exemplo, odnsmasq
servidor DNS) podem estar usandoinotify(7)
para monitorar as alterações nos/etc/hosts
arquivos e reler apenas se necessário.Navegadores e outros aplicativos desse tipo 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.A resolução de nomes, entre outras coisas, é gerenciada pelo
/etc/nsswitch.conf
. Aqui está um trecho:Observe a
hosts
linha. Ele diz: "Ao resolver um nome de host, primeiro leia/etc/hosts
o arquivo para pesquisar 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á porque é tão rápido. Observe que não depende dos serviços de rede na máquina, portanto, não há serviço para reiniciar ou recarregar.