Los cambios en el /etc/hosts
archivo 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/hosts
archivo y leerlo:La
getaddrinfo(3)
función, que es la única interfaz de resolución de nombres estándar, se abrirá y leerá/etc/hosts
cada 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/hosts
a la mezcla (por ejemplo, eldnsmasq
servidor DNS) pueden estar usandoinotify(7)
para monitorear los cambios en los/etc/hosts
archivos 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/hosts
cada 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
hosts
línea. Dice: "Al resolver un nombre de host, primero lea el/etc/hosts
archivo 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é?