¿Cómo puedo ejecutar un solucionador de DNS de almacenamiento en caché local en Ubuntu 14.04?

¿Cómo puedo ejecutar un solucionador de DNS de almacenamiento en caché local en Ubuntu 14.04?

Ejecuto instancias de Ubuntu 14.04 en AWS EC2 en una VPC. Estos utilizan el servidor de nombres proporcionado por nuestra VPC. Cada búsqueda de DNS realizada por un proceso se envía al servidor de nombres de VPC. Nuestros procesos realizan muchas búsquedas y algunas fallan, lo que resulta en procesos bloqueados.

Deseo solucionar este problema instalando un solucionador de DNS de almacenamiento en caché local en cada máquina. Este solucionador escuchará 127.0.0.1:53y atenderá los procesos locales. El solucionador aparecerá en /etc/resolv.conf, es decir, nameserver 127.0.0.1en lugar del servidor de nombres VPC, lo proporcionaré dinámicamente a través de DHCP.

Hay muchos programas alternativos para esto: bind9, nscd, dnsmasq, dnscache, etc. Pero parece haber muchas formas de administrar manualmente /etc/resolv.conf, por ejemplo, marcar el archivo como de solo lectura, editarlo /etc/network/interfaceso editarlo /etc/dhcp/dhclient.conf. ¿Cuál es recomendable?

Tengo un requisito más: el solucionador local reenviará las búsquedas al servidor de nombres de VPC, nuestra autoridad confiable para la información de DNS. Sin embargo, los programas que enumeré no parecen comportarse de esta manera. En cambio, reenvían sus búsquedas a servidores de nombres raíz preconfigurados.

En teoría, podría hacer que esto funcione personalizando dhclient-script, resolvconfo algo así. Agregaría un enlace que toma la IP del servidor de nombres proporcionada por DHCP, la inyecta en la configuración de mi resolución de DNS local y luego reinicia el demonio de resolución de DNS local. Pero esto es bastante complicado y quiero evitar hacerlo. (Los scripts predeterminados en Ubuntu 14.04 parecen tener algún conocimiento incorporado de nscdy dnscache, y posiblemente hagan lo que quiero, pero no está muy claro).

¿Cuál es la forma "bendita" de ejecutar un solucionador de DNS de almacenamiento en caché local en Ubuntu 14.04? En particular, ¿cómo hago para que el solucionador local reenvíe al servidor de nombres DHCP predeterminado?

Respuesta1

La forma más sencilla probablemente sea nscd.

Instale nscd, usando la configuración predeterminada.

Actualice /etc/nsswitch.conf y agréguelo cacheantesdns a la línea de hosts.(Editar: esta parte no es aplicable a glibc como se usa en la mayoría de las distribuciones de Linux, pero es necesaria en fbsd)

hosts: files cache dns

Prueba

tcpdump -v -n 'port 53'
getent hosts superuser.com

No debería necesitar alterar /etc/resolve.conf o incluso capturar el solucionador dhcp para actualizar el upstream de nscd. nsswitch enrutará correctamente las llamadas gethost* a través del servidor de caché ya que es parte de glibc.

información relacionada