Aquí hay otros dos paquetes de software que se pueden usar para el almacenamiento en caché de DNS en Linux:
- dnsmasq
- enlazar
Después de configurar el software para el reenvío y el almacenamiento en caché de DNS, configure la resolución de DNS del sistema en 127.0.0.1 en /etc/resolv.conf.
Si su sistema usa NetworkManager, puede intentar usar el dns=dnsmasq
opción en /etc/NetworkManager/NetworkManager.conf
o puede cambiar la configuración de su conexión a Automática (solo dirección) y luego usar un script en el /etc/NetworkManager/dispatcher.d
directorio para obtener el servidor de nombres DHCP, configúrelo como el servidor de reenvío de DNS en su software de caché de DNS y luego active una recarga de configuración.
En Linux (y probablemente en la mayoría de Unix), no hay almacenamiento en caché de DNS a nivel de sistema operativo a menos que nscd esté instalado y ejecutándose. Incluso entonces, la función de almacenamiento en caché de DNS de nscd está deshabilitada de forma predeterminada al menos en Debian porque está rota. El resultado práctico es que su sistema Linux muy probablemente no realiza ningún almacenamiento en caché de DNS a nivel del sistema operativo.
Podría implementar su propio caché en su aplicación (como lo hicieron con Squid, según el comentario de diegows), pero recomendaría no hacerlo. Es mucho trabajo, es fácil equivocarse (¡¡nscd se equivocó!!!), probablemente no se pueda ajustar tan fácilmente como un caché de DNS dedicado y duplica la funcionalidad que ya existe fuera de su aplicación.
Si un usuario final que usa su software necesita tener almacenamiento en caché de DNS porque la carga de consultas de DNS es lo suficientemente grande como para ser un problema o el RTT al servidor DNS externo es lo suficientemente largo como para ser un problema, puede instalar un servidor DNS de almacenamiento en caché como Unbound en la misma máquina que su aplicación, configurado para almacenar en caché las respuestas y reenviar errores a los solucionadores de DNS normales.
Aquí tienes un ejemplo de almacenamiento en caché de DNS en Debian usando dnsmasq:Almacenamiento en caché de DNS local, artículo en ManageaCloud.
Resumen de configuración:
/etc/predeterminado/dnsmasq
# Ensure you add this line
DNSMASQ_OPTS="-r /etc/resolv.dnsmasq"
/etc/resolv.dnsmasq
# Your preferred servers
nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 2001:4860:4860::8888
/etc/resolv.conf
nameserver 127.0.0.1
Luego simplemente reinicie dnsmasq.
Prueba comparativa con DNS 1.1.1.1:
for i in {1..100}; do time dig slashdot.org @1.1.1.1; done 2>&1 | grep ^real | sed -e s/.*m// | awk '{sum += $1} END {print sum / NR}'
Prueba comparativa con el reenviador DNS de almacenamiento en caché local (dnsmasq):
for i in {1..100}; do time dig slashdot.org; done 2>&1 | grep ^real | sed -e s/.*m// | awk '{sum += $1} END {print sum / NR}'