/etc/resolv.conf en Linux

Uno de los clientes para los que trabajo, usa directorio activo para los servicios de impresión y logon de red, en los escritorios, y Linux para los servidores de bases de datos y aplicaciones. Estos funcionan como clientes de los DNS del directorio activo, y así los tenemos configurados en /etc/resolv.conf. Esto funciona perfectmente.

El problema aparece cuando se nos cae alguno o todos los servidores DNS: Todo empieza a funcionar muuuyy lentoooo en Linux. Esto es así, porque la mayoría de los servicios de red de un linux, lanzan contínuamente búsquedas al DNS para resolver las direcciones IP de los equipos que inician conexiones de red.

Cuando los servidores DNS están caídos, Linux no se da cuenta, y lanza una consulta secuencial a todas las IPs de /etc/resolv.conf: Empieza por el primero que encuentra, espera a que expire el timeout (el valor por defecto es 5 segundos), y lanza la misma consulta al siguiente, y vuelve a esperar el timeout, y así sucesivamente hasta que obtenga una respuesta o hayamos llegado a la última IP del fichero /etc/resolv.conf. Paralelamente se van haciendo reintentos (hasta 3). En resumen, si sólo tuviéramos una dirección IP en /etc/resolv.conf, y esa IP estuviera caída, cada operación de red que hiciéramos en el servidor Linux, tardaría como poco 15 segundos.
Podemos configurar este timeout a 1 , y el número de reintentos a 1, para que en vez de 15 segundos, tarde 1 segundo, añadiendo a /etc/resolv.conf la siguiente línea:

options timeout:1 attempts:1
Según nos comentaron en RedHat, esta configuración no podremos comprobarla con los comandos nslookup, ni dig, pero si aplica sobre servicios de red como SSHD o Apache.
La foto la he sacado del album de Giant Ginkgo en flickr

No hay comentarios: