¿Cómo hacer que la dirección del servidor de nombres sea permanente en /etc/resolv.conf?

14

No puedo retener la dirección del servidor de nombres que configuré mediante /etc/resolv.conf. Cada vez que configuro el valor, el administrador de red lo anula con la puerta de enlace predeterminada al reiniciar.

¿Cómo arreglarlo?

Preferiría una forma diferente a cambiar el servidor de nombres en el enrutador.

Ashildr
fuente
Debe cambiarlo con NetworkManager(como se indica en la primera línea). Este archivo se vuelve a generar en cada arranque mediante NetworkManager. Depende de su distribución de Linux (que no mencionó) cómo acceder a esto NetworkManager.
Rik

Respuestas:

13

Depende. Por favor, lea hasta el final.

Si no tiene instalado el paquete resolvconf , entonces es fácil: después de cambiarlo como desee, ejecute el comando

 sudo chattr +i /etc/resolv.conf

El comando cambia los atributos del archivo, haciéndolo immutable(la opción + i).

Sin embargo, si tiene instalado el paquete resolvconf, el archivo /etc/resolv.conf puede transformarse en un enlace simbólico,

 # file /etc/resolv.conf
 /etc/resolv.conf: symbolic link to `../run/resolvconf/resolv.conf'

que es un archivo en un sistema de archivos virtual, la epitomía de una versión no permanente. Lo curioso es que es posible que no sepa que tiene instalado resolvconf, porque las versiones recientes de sistemas operativos tipo Debian vienen preinstalados. Puede establecer si su distribución lo ha instalado para usted emitiendo el comando:

 #whereis resolvconf
 resolvconf: /sbin/resolvconf /etc/resolvconf /lib/resolvconf /usr/share/man/man8/resolvconf.8.gz

Aún más importante, puede establecer si su /etc/resolv.confse ha transformado en un enlace mediante el comando (archivo /etc/resolv.conf) anterior. Si la respuesta es ASCII text, use chattr, de lo contrario ...

Si usa una IP estática, lo más simple es agregar la siguiente línea (o algo así)

 dns-nameservers 8.8.4.4 8.8.8.8

a la estrofa que define las propiedades de su interfaz estática en / etc / network / interfaces.

Si, en cambio, está en una computadora portátil que se conecta todo el tiempo a diferentes redes, puede seguir LawrenceCla excelente sugerencia. Pero, si tiene resolvconf en su sistema, la forma correcta (y más simple) de proporcionar un conjunto fijo de DNS es utilizar los archivos en /etc/resolvconf/resolv.conf.d . En particular, se utilizan los siguientes archivos (consulte la página de Stephane Graber ):

base : se utiliza cuando no se pueden encontrar otros datos

head : Se usa para el encabezado de resolv.conf, se puede usar para garantizar que un servidor DNS sea siempre el primero en la lista

tail : cualquier entrada en tail se agrega al final del resolv.conf resultante.

Coloque sus servidores de nombres favoritos en la cabeza , de la siguiente manera

  nameserver 8.8.8.8

y listo

MariusMatutiae
fuente
2
@dhiller Ultrasawblade cambió su nombre a LawrenceC, es el siguiente.
MariusMatutiae
Muy bonita e interesante publicación, me gustaría que agregue algunos enlaces de documentación sobre este tema para los usuarios que quieran saber más sobre el tema, Thx
Philippe Gachoud
/etc/resolvconf/no existe por defecto en Ubuntu 18.04.
Dan Dascalescu el
9

Agregue una línea similar al /etc/dhcp/dhclient.confuso de un terminal raíz:

supersede domain-name-servers 74.122.198.48, 50.116.23.211;

Esto hace que dhclientel programa que emite una solicitud DHCP y realiza cambios de acuerdo con lo que la respuesta le indicó, reemplace la información que obtuvo del servidor DHCP con lo anterior antes de realizar cambios.

Los anteriores son dos servidores DNS OpenNIC. Reemplace según sea necesario para cualquier servidor que desee usar.

Como esto sucede cada vez que obtiene información de configuración de DHCP, utilice dhclient -v eth0o cualquier interfaz para actualizarla y ver el cambio.

LawrenceC
fuente
1
En lugar de simplemente anular el DNS (generalmente el enrutador), se podría agregar la línea, prepend domain-name-servers 8.8.8.8por ejemplo. Esto usaría el DNS del ISP cuando esté disponible.
Axel Latvala
3

Parece que, según lo mencionado por @Rik, la razón de los reemplazos de DNS al reiniciar se debe al administrador de red / utilidad que está configurada. En Linux Mint, según la captura de pantalla, tenía mi método IPv4 configurado solo en direcciones automáticas (DHCP). Luego puede ingresar la configuración correcta en /etc/resolv.conf o en la sección de servidores DNS. Recuerdo que en Ubuntu 13.04 mis servidores de nombres cambiaron varias veces durante un largo período de tiempo, pero después de que en realidad fui y los edité en la GUI, todo parecía estar estable de allí en adelante.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Rudolph
fuente
3

Tuve el mismo problema, pero uso una dirección IP estática. La solución fue simplemente agregar el dns en / etc / network / interfaces

iface eth0 inet static
    address [your ip>
    netmask [your netmask]
    network [your network]
    broadcast [your broadcast]
    gateway [your gateway]
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers [dns server1] [dns server2]
    dns-search [your domain]
kanelbolle
fuente
Sí, eso lo soluciona porque NetworkManager ignora las interfaces enumeradas en /etc/network/interfaces. ¡Buena atrapada!
Izzy
1

Si usó wicd, haga clic derecho en el icono y haga clic en información de conexión. Cuando se abra la ventana, haga clic en las propiedades de la que está conectado.

Verifique usar DNS estático y en la línea que dice Servidor DNS 1 escriba la IP para el DNS de Google 8.8.8.8y en la línea para el servidor DNS 2 escriba 8.8.4.4luego haga clic en "ok".

Si recibe errores de los valores predeterminados, puede comunicarse con su ISP y mencionarlo. Por lo general, asignan servidores DNS a su módem cuando se conecta con ellos.

Yames
fuente
0

Hackear su entrada por chattr +io similar es una solución rápida en el mejor de los casos, y debe evitarse siempre que sea posible (al menos a largo plazo, como se dijo, es una solución temporal a corto plazo hasta que se encuentre tiempo para la solución real) . Como ya se señaló, este es un trabajo para NetworkManager, que ofrece una CLI que podemos usar para eso:

# Encuentra qué interfaz ajustar
dispositivo nmcli
# la salida se ve así:
# TIPO DE DISPOSITIVO CONEXIÓN ESTADO
# enp0s3 ethernet conectado my-office
# lo loopback no administrado -
# De eso, necesitamos la CONEXIÓN.

# Ahora agregue nuestros "dominios de búsqueda":
conexión nmcli modificar my-office ipv4.dns-search example1.com
nmcli con mod my-office + ipv4.dns-search example2.com

# Y nuestros servidores de nombres:
nmcli con modificar mi oficina ipv4.dns 213.73.91.35
nmcli con modificar my-office + ipv4.dns 87.118.100.175
# tenga en cuenta el "+" en la segunda línea: agregue otro,
# mientras la primera línea sobrescribe la entrada existente.
# podríamos haber hecho eso con una sola llamada:
nmcli con modificar mi oficina ipv4.dns "213.73.91.35 87.118.100.175"

# OK, ahora digamos que ignore las actualizaciones del servidor DHCP:
nmcli con modificar mi-oficina ipv4.ignore-auto-dns sí

# y aplicar las modificaciones a nuestra configuración en ejecución
nmcli con hasta mi oficina

Si usa una dirección IP estática, también puede usar la solución de la respuesta de kanelbolle .

Izzy
fuente
0

Es sorprendente lo frustrante que puede ser este pequeño problema, cuando las soluciones dadas para él ya no funcionan en Ubunutu 18.04.

Lo que funcionó para mí fue simplemente sobrescribir el nameservervalor en /etc/resolv.confcada arranque. sudoedite /etc/rc.localy agregue esta línea:

 sed -i "s/nameserver 127.0.0.53/nameserver 8.8.8.8/" /etc/resolv.confsudo /etc/rc.local
Dan Dascalescu
fuente