¿Cómo incluyo líneas en resolv.conf que no se perderán al reiniciar?

148

Finalmente he migrado a 12.04 desde 7.10. Tengo una última parte para completar, pero estoy perplejo. Estoy usando Puppet en cada servidor, y en el pasado he incluido una dirección de servidor de nombres y un nombre de dominio de búsqueda para el titiritero en resolv.conf.

search puppetmaster.com
nameserver 192.168.1.XXX

En 12.04 resolv.conf se sobrescribe cuando se reinicia. No puedo usar una IP estática para estos, así que usar las interfaces / etc / network / para ayudarme es un punto cero.

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

¿Hay alguna forma de que resolvconf maneje esto en la cabeza, la cola o la base? Si existe, ¿hay algún ejemplo que pueda usar para ajustar en mi servidor?

Cualquier ayuda es muy apreciada.

    
pregunta Sam 28.06.2012 - 13:54

16 respuestas

120

Probablemente sea mejor que el servidor DNS pueda resolver 'títere' a la dirección correcta y que el servidor DHCP proporcione la dirección del servidor de nombres DNS y la lista de búsqueda, o bien (si tiene direcciones IP estáticas) a tenga algo como lo siguiente en / etc / network / interfaces.

iface eth0 inet static
    address 192.168.3.3
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-search example.com
    dns-nameservers 192.168.3.45 192.168.8.10

Pero si desea hacerlo a través de los archivos de configuración resolvconf, querrá editar /etc/resolvconf/resolv.conf.d/base . En ese archivo, ingrese su información como lo haría en resolv.conf .

nameserver 192.168.1.XXX

Luego, dile a resolvconf que regenere resolv.conf .

sudo resolvconf -u
    
respondido por el tgm4883 28.06.2012 - 15:35
32

Creo que la respuesta es verificar tu /etc/dhcp/dhclient.conf , es decir, no solicitar dns-nameservers de tu dhcp cliente.

Luego actualiza tu /etc/network/interfaces

auto eth0
iface eth0 inet dhcp
dns-search google.com
dns-nameservers dnsserverip

Entonces su resolv.conf se configurará automáticamente de la manera que lo desee.

Agregue al dns-search y luego ejecute un /etc/init.d/networking restart (aunque este script está en desuso aún funciona).

    
respondido por el Jamin 26.11.2012 - 01:58
18

Es probable que esto se deba a la configuración de DHCP cuando instaló Ubuntu por primera vez. Pruebe este proceso de 3 pasos para manejar este problema de configuración automática.

Primero

Edite la configuración de su interfaz, que se encuentra en: /etc/network/interfaces

Agregue esta línea debajo de iface lo inet loopback :

dns-nameservers yourdns youraltdns

Como ejemplo para DNS de Google, es posible que desee utilizar esto:

dns-nameservers 8.8.8.8 8.8.4.4

Segundo

Edite su archivo de configuración de DHCP, ubicado en:

/etc/dhcp/dhclient.conf

Marque la sintaxis como un comentario usando # en cada línea o simplemente elimine todos los servidores de nombres de solicitudes. En 16.04, es posible que no deba realizar ningún cambio aquí.

Tercero

Reinicie su red mediante este comando:

/etc/init.d/networking restart

En 16.04:

sudo ifdown -a
sudo ifup -a
    
respondido por el astrajingga 20.06.2013 - 01:50
7

Consulte la página man de resolvconf . Puede forzar la inclusión de ciertas configuraciones de DNS creando, p. /etc/resolvconf/resolv.conf.d/base :

  /etc/resolvconf/resolv.conf.d/base
          File containing basic resolver information.  The lines  in  this
          file  are  included in the resolver configuration file even when
          no interfaces are configured.

Hay otros archivos especiales (cabeza y cola) que pueden ayudarlo a lograr lo que desea.

    
respondido por el roadmr 04.09.2012 - 14:26
4

Para mí, las respuestas anteriores fueron inadecuadas por las siguientes razones:

  • No estoy usando resolvconf , simplemente /etc/resolv.conf .
  • Usar chattr +i para bloquear resolv.conf parece demasiado hacky. Necesito que Puppet sea libre de realizar cambios cuando sea necesario.
  • AFAIK, la edición de /etc/network/interfaces no impide que se sobrescriba resolv.conf ; simplemente especifica los servidores de nombres que deberían escribirse. Para mí, especificar los servidores de nombres no era el punto. Intento establecer options timeout:1 y options attempts:1 en mi archivo resolv.conf .

La mejor solución descubrí que anula el comportamiento predeterminado de dhclient utilizando sus enlaces documentados.

Crea un nuevo archivo en /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate con los siguientes contenidos:

#!/bin/sh
make_resolv_conf() {
    :
}

Luego haz que el archivo sea ejecutable:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Ahora cuando dhclient se ejecuta, ya sea al reiniciar o cuando ejecuta manualmente sudo ifdown -a ; sudo ifup -a , carga este script nodnsupdate . Esta secuencia de comandos anula una función interna llamada make_resolv_conf() que normalmente sobrescribiría resolv.conf y en su lugar no hace nada.

Esto funcionó para mí en Ubuntu 12.04.

    
respondido por el richardkmiller 05.03.2015 - 22:12
3

Como muchas otras respuestas indican que esto tiene que ver con que resolvconf esté instalado en su sistema.

Así que la mejor manera de mantener algo en resolv.conf que no se perderá al reiniciar es incluirlo en los archivos de configuración resolvconf que están en:

/etc/resolvconf/resolv.conf.d/

Ahí va para el archivo head . Lo que sea que pongas allí estará escrito en la parte superior de /etc/resolv.conf

Entonces, todo irá a algo como esto:

# echo nameserver 8.8.8.8 >> /etc/resolvconf/resolv.conf.d/head
# resolvconf --enable-updates
# resolvconf -u
    
respondido por el Juan Javier Triff Cabanas 17.10.2016 - 13:59
2

agregue su servidor de nombres al archivo /etc/resolvconf/resolv.conf.d/head. El archivo contiene el mensaje que ha recibido:

ese archivo debería verse así después de agregar 8.8.8.8

root@hvnatvcc: ~ # cat /etc/resolvconf/resolv.conf.d/head 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
    
respondido por el HVNSweeting 23.10.2012 - 10:43
2

Esto puede ser solo un extraño capricho en mi máquina, pero alguien más podría tener el mismo estuche en la esquina.

Intenté numerosas formas de incluir mis servidores de nombres de ISP en /etc/resolv.conf sin éxito:

  • Los incluí en /etc/network/interfaces y reinicié las redes. No aparecieron en /etc/resolv.conf .

  • Los puse en /etc/resolv.conf explícitamente, pero por supuesto se sobrescribieron. Aparecieron en /run/resolvconf/interface/eth0.inet , pero nunca llegaron a /etc/resolv.conf .

  • Intenté configurar resolvconf para las actualizaciones dinámicas. Sin cambios.

Finalmente leí en alguna parte que si la máquina local (127.0.0.1) aparece en /etc/resolv.conf , no se incluyen otros servidores de nombres.

En mi desesperación edité /run/resolvconf/interface/lo.named , eliminé la única línea en él ( nameserver 127.0.0.1 ) y reinicié: ifdown eth0 && ifup eth0 .

/etc/resolv.conf luego incluyó mis servidores de nombres de ISP por primera vez. Ejecuté service network-manager restart para ver si era estable y /etc/resolv.conf aún incluye mis servidores de nombres ISP. Reiniciado solo para asegurarse y todavía está allí pero /run/resolvconf/interface/lo.named se restableció a: nameserver 127.0.0.1 .

Curiosamente, reiniciar las redes todavía funciona: /etc/resolv.conf todavía contiene mis servidores de nombres ISP. No puedo explicar esto (¿alguien puede?), Pero esto podría ayudar a alguien atrapado en el mismo lugar.

    
respondido por el user297954 26.06.2014 - 05:18
1

Las otras soluciones no me funcionaron en mi sistema Fedora 20. Mi problema particular era que la línea de "búsqueda" en /etc/resolv.conf se sobrescribía. Esto es lo que lo solucionó. (Esto supone que NetworkManager está produciendo la línea search rn.yourcompany.com y quieres que sea search rn.yourcompany.com yourcompany.com intnet.yourcompany.com :

1.Utilice el comando "ifconfig" para descubrir qué interfaz es de interés:

$ ifconfig
  :
  :

em2:  <this was the one which was connected>

2. Se convierte en root y se cambia al directorio de dispositivos de red de configuración del sistema:

$ sudo su -[sudo] 
password for youruser:
# cd /etc/sysconfig/networking/devices'
  1. Use su editor favorito favorito para agregar una línea Domain con los dominios adicionales para buscar:

DOMAIN="yourcompany.com intnet.yourcompany.com"

Guardar, cerrar sesión y volver a iniciar sesión. NetworkManager ahora debería tener la línea en \etc\resolve.conf :

search rn.yourcompany.com yourcompany.com intnet.yourcompany.com
    
respondido por el CBI 29.08.2014 - 14:54
0

agregar en la última línea, por ejemplo:

nameserver 8.8.8.8

Abre una terminal y escribe

sudo chattr +i /etc/resolv.conf

el + i se ocupa de que el archivo no se reinicie en un arranque.

Para deshacer lo anterior

sudo chattr -i /etc/resolv.conf

Para obtener más

man chattr
    
respondido por el tanmay.01 23.02.2013 - 17:42
0

Traducción al inglés:

Mi problema. "solo 12.4"

Me di cuenta de que si agrega el dns-nameserver en las interfaces que no toman el nombre de servidor de resolución Gracias a la ayuda encontrada aquí hemos resuelto el problema.

enlace

Para hacer que resolv.conf no cambie cuando editamos manualmente, haga esto en la terminal:

sudo resolvconf –disable-updates

después:

sudo resolvconf -a eth0 # or your network Interfas

luego edite manualmente /run/resolvconf/resolv.conf

agregar un máximo de dos servidores DNS. Gracias PD No olvide reiniciar:

sudo /etc/init.d/networking restart

Texto original:

solo ubuntu 12.4

Mi solución.

Él vio que si agregas los nombres DNS en interfaces esta no toma el servidor de resolución de nombres

Gracias a la ayuda encontrada en esta pagina que resuelto el problema.

enlace

Para hacer que resolv.conf no cambie cuando la editamos manualmente hacemos esto en la terminal:

sudo resolvconf –disable-updates

despues:

sudo resolvconf -a eth0 # o tu interfas de red

luego editamos manualmente /run/resolvconf/resolv.conf

agregando un maximo de 2 servidores DNS. saludos P.D. no reiniciar reiniciar:

sudo /etc/init.d/networking restart
    
respondido por el enlinea777 04.09.2012 - 14:16
0

Si usa DHCP, edite /etc/dhcp/dhclient.conf para agregar servidores DNS adicionales:

prepend domain-name-servers 12.34.56.78, 12.34.56.79;

El cliente DHCP sobrescribe el dns-nameservers en etc/network/interfaces y creo que en /etc/resolvconf/resolv.conf.d/base también.

Esto funcionó para mí en el servidor Ubuntu 14.04.3.

Consulte la Wiki Debian NetworkConfiguration para obtener más información.

    
respondido por el Kevin S. Miller 14.10.2015 - 13:38
0

Encontré esta la solución más simple. Si tiene los archivos resolv.conf y resolvconf, se pisarán el uno al otro. Debe eliminar el archivo resolv.conf que se sobrescribe cada vez que reinicia. Coloque el servidor de nombres 8.8.8.8 8.8.4.4 en la parte inferior del archivo resolvconf y luego ejecute el comando sudo rm /etc/resolv.conf para deshacerse del archivo. Luego, reinicia y todo funcionará.

    
respondido por el Irv 19.10.2016 - 12:09
0

Añadir entradas en /etc/resolvconf/resolv.conf.d/head

echo 'search puppetmaster.com' | sudo tee -a /etc/resolvconf/resolv.conf.d/head
echo 'nameserver 192.168.1.XXX' | sudo tee -a /etc/resolvconf/resolv.conf.d/head

y ejecute el siguiente comando

sudo resolvconf -u
    
respondido por el siz 17.05.2016 - 13:22
-1

Solo pon un

dns-search google.com && dns-nameservers (sample: 8.8.8.8)

comando en su configuración /etc/network/interfaces . luego reinicia tu red.

debería funcionar.

    
respondido por el tesar 06.02.2015 - 09:15
-2

Esa configuración se declara en /etc/default/bind9

RESOLVCONF=no|yes

no = no aplica la condición en init.d bind9

sí u otro valor = anular resolv.conf

Este problema se acumula cuando instala bind9 y no le importa comprobar todos los confs.

    
respondido por el user147967 09.04.2013 - 09:40

Lea otras preguntas en las etiquetas