La dirección del servidor DNS ya no se almacena en resolv.conf; ¿donde esta ahora?

14

A veces cambio servidores DNS, usando el indicador NetworkManager en la barra de tareas; esto funcionó bien con versiones anteriores, y en realidad también funciona bien con 12.04, excepto por una cosa: uso Conky para mostrar información del sistema, incluida la dirección DNS, y noté que ahora siempre se muestra 127.0.0.1.

Miré hacia adentro resolv.conf, que es donde obtiene esta dirección, y efectivamente, eso es lo que siempre dice. Tengo una sola línea, con la advertencia de no editar el archivo a mano:

nameserver 127.0.0.1

La única forma en que sé verificar la dirección del servidor DNS ahora es abrir la GUI del administrador de red para verificar la página de información. Entonces, ¿dónde se almacena esta información ahora?

Marty Fried
fuente

Respuestas:

17

La información es administrada internamente por Network Manager. Puede obtener esta información en la línea de comando utilizando la nmcliherramienta incluida .

Puede recuperar la información de Network Manager para una interfaz de red particular con el siguiente comando:

nmcli dev list iface eth0

(reemplace eth0con la interfaz con la que se está conectando). La salida incluirá información sobre la interfaz y la conexión actualmente activa en esa interfaz:

GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           802-3-ethernet
...
IP4.DNS[1]:                             192.168.0.1
...

No debería ser demasiado difícil extraer la información que busca de esta salida.

Si necesita un método programático para acceder a estos datos que no dependa de la salida de nmcli, esta información también debe estar disponible desde la interfaz D-Bus de Network Manager.

James Henstridge
fuente
Muchas gracias, esa es una gran información. Debería ser bastante fácil crear un script de shell simple usando ese nmclicomando para enumerar varios parámetros interesantes. Tal vez pueda preparar algo útil y compartir un lugar. Realmente no creía que fuera necesario Network Manager, y supongo que puede haber formas alternativas para que alguien haga esto, pero esto funciona para mí.
Marty Fried
Bueno, puede ver que el servidor que escucha 127.0.0.1es una instancia dnsmasqiniciada por Network Manager (vea la salida de sudo netstat -tlnp). Pero es mejor pensar en eso como un detalle de implementación y pedirle a Network Manager la información que desea, ya que es el que toma la decisión aquí.
James Henstridge
Gracias por proporcionar tan buena información. Y, gracias también por editar mi pregunta, intentaré tomarme más tiempo en el futuro. :) Mi excusa es que acababa de actualizar a 12.04 y estaba apagando pequeños incendios en múltiples frentes. :)
Marty Fried
44
nmcli dev list ifaceno funciona para mí pero nmcli dev showsí [ubuntu 15.04]
Beni Cherniavsky-Paskin
10

Los desarrolladores de Ubuntu deberían documentar estos cambios /etc/resolv.conf, pero no lo han hecho.

Aquí hay una lista de comandos rápidos para comenzar.

  1. Mostrar los servidores DNS actuales

    nm-tool | grep DNS
    
  2. Defina un servidor DNS estático en /etc/dhcp/dhclient.conf. Agregue la siguiente línea y reinicie el solucionador local:

    supersede domain-search "sub.mydomain.com", "domain.com";
    prepend domain-name-servers 192.168.0.1;
    

    Desde el símbolo del sistema:

    invoke-rc.d network-manager restart
    
cmcginty
fuente
Alguna documentación más: resolvconf (8), /usr/share/doc/resolvconf/README.gz.
jdthood
4

Tenga en cuenta que el uso de nmcli no siempre le dará la respuesta completa. por ejemplo, si usa openconnect (o vpnc, presumiblemente) para iniciar una VPN, y si tiene instalado el paquete resolvconf (para encargarse de administrar automáticamente /etc/resolv.conf), encontrará que aún puede insertar automáticamente el Configuración de DNS de VPN en /etc/resolv.conf antes de 127.0.0.1. En esta circunstancia, simplemente marcando (por ejemplo) "nmcli -f IP4 dev list" no le dará la verdadera lista de DNS actual. No estoy seguro si este escenario te afecta, pero pensé que vale la pena mencionarlo.

agd
fuente
Gracias por la información extra; Siempre es bueno aprender más. Para mi caso de uso, no tendré que preocuparme por ello, ya que principalmente solo quiero saber cuál de las dos posibles direcciones DNS está activa.
Marty Fried
Si está utilizando networkmanager para conectarse a una VPN, ¿qué comando debería darle el dns? Los dns están funcionando pero no puedo encontrarlos.
Jorge Suárez de Lis