Editar dns-nameservers en / etc / network / interfaces sin reiniciar [duplicar]

18

Después de editar dns-nameservers en /etc/network/interfaces , ¿cómo le digo a resolvconf(8) que lea el nuevo valor sin reiniciar la red? (causando una interrupción del servicio)

La opción -u no parece funcionar, solo se actualiza a los mismos valores.

    
pregunta Eric 19.10.2012 - 22:44

3 respuestas

26

Tiene razón, "resolvconf -u" no es suficiente para activar el cambio que realizó. Ese comando solo actualiza resolv.conf desde la base de datos de resolvconf, mientras que usted necesita actualizar la base de datos.

Supongamos que la interfaz en cuestión es eth0. Suponga que en / etc / network / interfaces tiene una estrofa que se ve así.

iface eth0 inet static
    [...]
    dns-nameservers 1.1.1.1 2.2.2.2

Ahora cambia la línea "DNS-nameservers". Para activar este cambio, haga (tenga en cuenta que & amp; & amp; evite romper una conexión ssh potencialmente abierta)

ifdown eth0 && ifup eth0

o reiniciar.

    
respondido por el jdthood 29.10.2012 - 07:29
12

Me topé con esto dos veces recientemente.

La primera vez, hice sudo ifdown eth0 que, por supuesto, mató mi conexión ssh y dejó la máquina ignorando su NIC. Ay. Tuve que ingresar a través de la interfaz IPMI en el servidor para obtener el control nuevamente.

La segunda vez, aprendí de mis errores anteriores e hice sudo ifdown eth0 ; sudo ifup eth0 . La ventana de ssh murió, por supuesto, pero la máquina respondió rápidamente a una nueva conexión ssh y mis modificaciones de DNS estaban en efecto. Hice lo mismo en un segundo servidor, pero esta vez esperé antes de escribir nada en la ventana de ssh. La ventana se mantuvo y se aplicaron los cambios de DNS. Impresionante.

Lo más importante era utilizar el operador de punto y coma de la shell para que ambos comandos estuvieran en una línea. De esta manera, el comando para restaurar la interfaz ya se ha ingresado cuando la interfaz deja de funcionar. Supongo que podría haber escrito un guión y haberlo ejecutado, pero me pareció más fácil.

ACTUALIZAR: hay otra forma de hacerlo. También puede reiniciar el servicio de red de Ubuntu en un solo paso: sudo /etc/init.d/networking restart o sudo service network-interface restart INTERFACE=eth0 . Gracias JFA por la inspiración.

    
respondido por el Randall Cook 23.02.2013 - 00:53
2

Acabo de pasar por este mismo problema; incluso un reinicio sería perder el cambio al invocar manualmente el enlace libc.

Así que la forma más estable que he encontrado es, después de poner el contenido deseado en /etc/network/interfaces , editar /etc/resolvconf/resolv.conf.d/original para incluir las líneas deseadas, asegúrese de que tail (en ese directorio) no esté presente, cd /etc/resolvconf/resolv.conf.d y luego invocar /etc/resolvconf/update.d/libc .

Tenga en cuenta que si tail está presente (de forma predeterminada, apunta a original , los contenidos derivados de /etc/network/interfaces serán seguidos por la configuración original también.

Que estos cambios se puedan aplicar con mayor seguridad mediante un reinicio es, francamente, insano. El sistema actual toma lo que solía ser "editar este archivo, tal vez implementarlo desde un sistema de gestión de configuración" y lo oculta detrás de varias capas de abstracción y sin una forma clara de invocar el mantenimiento fuera del marco de arranque normal.

    
respondido por el Phil P 10.04.2013 - 06:48

Lea otras preguntas en las etiquetas