Los cambios en el /etc/hostsarchivo parecen surtir efecto de inmediato. Tengo curiosidad por la implementación. ¿Qué magia se usa para lograr esta característica?
networking
hosts
Rudwna
fuente
fuente

Respuestas:
La magia es abrir el
/etc/hostsarchivo y leerlo:La
getaddrinfo(3)función, que es la única interfaz de resolución de nombres estándar, se abrirá y leerá/etc/hostscada vez que se llame para resolver un nombre de host.Las aplicaciones más sofisticadas que no usan el estándar
getaddrinfo(3), pero que de alguna manera se agregan/etc/hostsa la mezcla (por ejemplo, eldnsmasqservidor DNS) pueden estar usandoinotify(7)para monitorear los cambios en los/etc/hostsarchivos y volver a leerlo solo si es necesario.Los navegadores y otras aplicaciones similares no lo harán. Se abrirán y leerán
/etc/hostscada vez que necesiten resolver un nombre de host, incluso si no están utilizando el solucionador de libc directamente, sino que están replicando su funcionamiento por otros medios.fuente
La resolución de nombres, entre otras cosas, es administrada por
/etc/nsswitch.conf. Aquí hay un extracto:Tenga en cuenta la
hostslínea. Dice: "Al resolver un nombre de host, primero lea el/etc/hostsarchivo para buscar el nombre de host, si no lo encuentra, ejecute una consulta DNS, si no lo encuentra, intente con el nombre de host del sistema configurado localmente".Así que aquí está el por qué es tan rápido. Tenga en cuenta que no depende de los servicios de red en la máquina, por lo que no hay servicio para reiniciar o recargar.
fuente
/etc/hosts. ¿Por qué no está usando una versión en caché?