13 votos

¿Cómo persistir resolv.conf opciones como rotar, tiempo de espera en CentOS?

CentOS borrará cualquier cambio manual realizado en /etc/resolv.conf periódicamente. Los valores por defecto en Linux son pobres en términos de conmutación por error en un tiempo razonable (servidores de nombres de consulta en el mismo orden cada vez, 5 segundos de tiempo de espera, 2 reintentos).

Por lo tanto, el primer DNS de su resolv.conf es esencialmente camino crítico. Si falla, pueden pasar 10 segundos antes de que se produzca la conmutación por error.

Estos valores predeterminados pueden modificarse (véase resolv.conf man page), pero ¿cómo pueden hacerse permanentes los cambios en CentOS y persistir a través de reinicios, etc.?

16voto

Adam C Puntos 3079

La respuesta se encuentra en el /sbin/dhclient-script :

if [ -n "${RES_OPTIONS}" ]; then
    echo "options ${RES_OPTIONS}" >> ${rscf}
fi

Pero, no es terriblemente obvio donde se puede establecer RES_OPTIONS para que el script lo recoja - algunas cosas como el dominio de búsqueda se pueden establecer en la directiva ifcfg-ethX pero las opciones de resolución se establecen en otro lugar. El archivo que desea es, de hecho /etc/sysconfig/network . Para configurar las opciones pertinentes, añada algo como esta línea a ese archivo:

RES_OPTIONS="rotate timeout:1 retries:1"

Esto fijará el tiempo de espera en 1 segundo, utilizará un único reintento y le dirá al cliente que rote sus resolvers por petición en lugar de recorrer secuencialmente la lista cada vez.

Si desea que los cambios surtan efecto inmediatamente, emita un service network restart y comprueba tu nuevo /etc/resolv.conf en todo su esplendor. Este es el aspecto que tenía el mío cuando lo probé:

# cat /etc/resolv.conf 
; generated by /sbin/dhclient-script
search example.com
options rotate timeout:1 retries:1
nameserver 10.1.1.2
nameserver 10.1.1.1

6voto

La respuesta aceptada es cuando se utilizan scripts de red heredados. Si utiliza Gestor de red puede que ni siquiera tengas /etc/sysconfig/network y si lo hace seguirá sin utilizarse para las conexiones gestionadas por Gestor de red .

Si utiliza Gestor de red :

Para añadir opciones, por ejemplo rotate a bond0 :

nmcli con mod bond0 +ipv4.dns-options rotate

Para eliminar esa opción:

nmcli con mod bond0 -ipv4.dns-options rotate

En + también es bueno cambiar las opciones; Gestor de red es lo suficientemente inteligente como para detectar las opciones existentes y actualizarlas. Por ejemplo, cambiando el valor del tiempo de espera:

root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options:                       "rotate,timeout:5"
root@debian:~# nmcli con mod bond0 +ipv4.dns-options timeout:3
root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options:                       "rotate,timeout:3"

Esto significa que el valor se ignora para eliminar y ni siquiera es necesario. Para eliminar el tiempo de espera:

nmcli con mod bond0 -ipv4.dns-options timeout

También funcionará con un valor de tiempo de espera, pero ese valor será ignorado por lo que eliminar timeout:5 también eliminará cualquier otro valor de tiempo de espera.

NB: Mientras investigaba me encontré con un error relacionado que se fijó en administrador de red v1.14.6 , v1.15.2-dev y v1.16 . Si tiene algún problema, compruebe su administrador de red versión primero.

1voto

Hielke Walinga Puntos 111

Como esta respuesta apareció en mis búsquedas de cómo hacerlo en mi máquina (MX Linux, derivada de Debian) y no tenía la respuesta para esa distribución, quiero añadir cómo hacerlo para esa distribución:

Edita este archivo:

 /etc/resolvconf/resolv.conf.d/head

0voto

Xorty Puntos 4967

Sólo tiene que añadir

resolv_conf_options=rotate\ timeout:1\ retries:1

en su resolvconf.conf

0voto

Aaron Copley Puntos 6043

Si necesita hacer esto con archivos planos en lugar de nmcli (por ejemplo, con una herramienta de gestión de la configuración) Red Hat ofrece otra solución.

Crear un script /etc/NetworkManager/dispatcher.d/15-resolv que copia un /etc/resolv.conf en su sitio.

#!/bin/bash
#
# Description : script to override default resolv.conf file
# with customized file.
cp -f /etc/resolv.conf.custom /etc/resolv.conf

Después de reiniciar NetworkManager, se ejecutará este script, sustituyendo el archivo por el suyo propio.

https://access.redhat.com/solutions/61921

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X