¿Cómo hacer que NetworkManager agregue un servidor DNS en la parte superior de /etc/resolv.conf?

11

En este momento, mi /etc/resolv.conf se ve así:

# Generated by NetworkManager
nameserver 10.165.246.33
nameserver 192.135.82.60
nameserver 10.165.74.2

Los dos primeros servidores de nombres se configuran automáticamente a través de DHCP; el último es el que agregué manualmente, en NetworkManager. También es el más importante, ya que resuelve nuestros nombres de dominio internos (por ejemplo build-server-17.our-company-domain.com).

El problema es que NetworkManager lo agrega al final de la página /etc/resolv.conf, por lo que cuando accedo a una URL de intranet, mi navegador intenta resolverlo utilizando los dos primeros servidores, y lleva años.

¿Cómo hago que NetworkManager agregue el servidor DNS configurado manualmente antes que los configurados automáticamente?

Usuario novato de Linux
fuente
1
En general, todos los servidores DNS en su resolv.conf deberían devolver los mismos resultados. Tener servidores mixtos allí es una receta para fallas intermitentes y mucho dolor.
Philip Kendall el

Respuestas:

3

No veo qué sistema abordar específicamente, pero si está usando el suyo resolvconf, intente lo siguiente como root ( su -o sudo -i):

echo 'nameserver 10.165.74.2' >> /etc/resolvconf/resolv.conf.d/head
resolvconf -u

Hay una advertencia en ese archivo que indica que los cambios manuales se sobrescribirán; pero, en contexto, el mensaje se aplica a /etc/resolv.conf, no /etc/resolvconf/resolv.conf.d/head.

Esto debería colocar el servidor de nombres deseado primero en la lista. Por supuesto, si esto funciona en su sistema operativo, entonces 10.165.74.2 puede eliminarse de NetworkManager.

El resolutor local dnsmasqtambién es un excelente camino hacia adelante. Usando dnsmasq, uno puede utilizar mucho más control sobre DNS y DHCP. Por ejemplo, en este escenario, dnsmasqpuede consultar un servidor de nombres específico basado en un nombre de dominio especificado con su serveropción. Vea un fragmento de dnsmasq.confeso que podría pertenecer a su objetivo a continuación.

# Add other name servers here, with domain specs if they are for
# non-public domains.
server=/our-company-domain.com/10.165.74.2

Actualizar

Gracias por mencionar el sistema operativo. En CentOS 7, hay muchos métodos. En la GUI, haga clic en Aplicaciones> Herramientas del sistema> Configuración> Red. Seleccione una conexión para configurar.

CentOS 7 NetworkManager - Configurar conexión

Desactive DNS automático y proporcione servidores de nombres. Aplica la configuración.

CentOS 7 NetworkManager - Aplicar configuración de DNS estático

La próxima vez que NetworkManager inicie esa conexión, escribe los valores personalizados. (Durante las pruebas, apagué la red y la volví a encender porque tenía dos conexiones de red).

De acuerdo con la documentación ,

  1. Está disponible una interfaz de usuario de texto (TUI) basada en maldiciones simple para NetworkManager, nmtui.
  2. Se proporciona una herramienta de línea de comandos, nmcli, para permitir que los usuarios y los scripts interactúen con NetworkManager. Tenga en cuenta que nmcli se puede usar en sistemas sin GUI como servidores para controlar todos los aspectos de NetworkManager. Está en igualdad de condiciones con las herramientas GUI.

En particular, la nmcli documentación se veía muy bien.

Christopher
fuente
1
Lo sentimos, es CentOS, que no tiene un resolvconfpaquete. dnsmasqSin embargo, parece una buena solución.
Usuario novato de Linux
8

Accidentalmente creé una pregunta duplicada aquí . La respuesta está ahí, pero esencialmente, necesitas crear:

/etc/dhcp/dhclient.conf

si aún no existe, y agregue:

prepend domain-name-servers [ip address of server];

¡No olvides el punto y coma al final!

Después de eso, simplemente reiniciando movió automáticamente la línea 'nameserver [dirección IP del servidor]' en '/etc/resolv.conf' hacia arriba.

Alfreema
fuente
Maravilloso! Ese es el backend utilizado por NetworkManager, y la única forma de hacer que esto funcione con todas las conexiones wifi (no estáticas). Gracias !
Adrien M.
0

Hay otra forma, no es necesario desactivar el servicio NetworkManager. Simplemente configure ifcfg-idevice:

PEERDNS=no
DNS1=10.165.74.2
DNS2=OTHERDNS
DOMAIN=DEMO.COM

No necesita establecer la configuración /etc/NetworkManager/NetworkManager.conf, como:

[main]
dns=none
usuario1437464
fuente