¿Cómo soluciono la resolución de DNS que no funciona después de actualizar a Ubuntu 13.10 (Saucy)

64

Después de la actualización a 13.10, mi resolución de DNS falla. Parece que los servidores DNS que obtengo por DHCP (LAN) no se usan.

Podría resolver temporalmente el problema agregando nameserver 8.8.8.8a /etc/resolv.conf. Pero los hosts de la intranet aún no se pueden resolver.

Al hacer clic en el elemento del menú Información de conexión en el indicador de red, el DNS primario y el DNS secundario se configuran correctamente. Pero mi computadora parece no usarlos.

Entonces mis preguntas:

  • ¿Qué debo poner resolv.conf, si es que hay algo?
  • ¿Cómo averiguar qué servidores de nombres está consultando mi computadora?
  • ¿Dónde buscar a continuación para averiguar por qué no se utilizan los servidores de nombres recibidos por DHCP?
Witek
fuente
2
Tuve el mismo problema al actualizar de 12.04 a 14.04.
Tarrasch
66
Recibí fallas diarias de DNS desde la actualización a 16.10 hace unos días.
WindRider
@WindRider tiene el mismo problema, el truco con dnsmasq a continuación parece funcionar.
Suor
Tuve el problema en una nueva instalación de Lubuntu 17.04 y lo resolví agregando manualmente las URL necesarias al archivo de hosts: askubuntu.com/a/936972/34298
rubo77

Respuestas:

83

Primero necesita saber un poco sobre cómo funciona la resolución de nombres en Ubuntu desde Ubuntu 12.04.

Stéphane Graber blogueó información sobre esto el año pasado aquí . Lo más importante que debe saber es que tanto Ubuntu Server como Ubuntu Desktop usan resolvconf para administrar el resolv.confarchivo. Eso significa que ya no deberías editar /etc/resolv.confdirectamente; en su lugar, debe configurar su utilidad de configuración de interfaz de red para proporcionar la información correcta para resolvconf. Para Ubuntu Server, la utilidad de configuración de la interfaz de red es ifup y está configurada por el archivo /etc/network/interfaces. Para Ubuntu Desktop, la utilidad de configuración de la interfaz de red es NetworkManager . Esto es lo que estás usando.

NetworkManager se configura mediante el indicador de red> Editar conexiones . Sin embargo, para las interfaces de red configuradas por DHCP, normalmente no es necesario cambiar ninguna configuración manualmente. Normalmente, lo que sucede es que el servidor DHCP (remoto) proporciona a NetworkManager tanto una dirección IP para la interfaz local como la dirección de un servidor de nombres DNS (remoto) para usar. NetworkManager inicia una instancia de un servidor de nombres de reenvío que escucha localmente en 127.0.1.1. Esta dirección, 127.0.1.1, se envía a resolvconf que pone nameserver 127.0.1.1en/etc/resolv.conf. NetworkManager también proporciona la dirección IP (remota) del servidor de nombres DNS proporcionado por DHCP al servidor de nombres de reenvío. Por lo tanto, un programa que se ejecuta en el sistema local le pide al solucionador que traduzca un nombre de host en una dirección IP; el resolutor consulta el servidor de nombres de reenvío local en 127.0.1.1; el servidor de nombres de reenvío consulta los servidores de nombres remotos de los que se le ha informado, recibe una respuesta y la envía de vuelta a la cadena.

NetworkManager se comunica con el proceso de reenvío del servidor de nombres a través de D-Bus. Puede ver lo que NetworkManager le dijo al servidor de nombres de reenvío ejecutando el comando

nmcli dev list iface eth0 | grep IP4.DNS

Actualización derivada de los comentarios:
tenga en cuenta que resolvconf realmente escribe el archivo /run/resolvconf/resolv.confen el que /etc/resolv.confse supone que es un enlace simbólico. Si /etc/resolv.confno es un enlace simbólico, debe volver a crearlo. Para hacerlo puedes correr

sudo dpkg-reconfigure resolvconf

o

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf        
jdthood
fuente
Muchas gracias por esta información. En mi caso, el comando muestra los servidores DNS correctos. Pero el archivo resolf.conf no se actualiza. Tiene la marca de tiempo de cuando puse mis valores allí. Entonces tendré que averiguar por qué resolvconf no está escribiendo el archivo.
Witek
15
Resolvconf realmente escribe el archivo /run/resolvconf/resolv.conf y se supone que /etc/resolv.conf es un enlace simbólico a /run/resolvconf/resolv.conf. Si eliminó /etc/resolv.conf, eliminó el enlace simbólico. Para recrear el enlace simbólico que puede ejecutar sudo dpkg-reconfigure resolvconfo puede hacermv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
jdthood
77
Esto tiene todo menos la 'solución'. ¿Cómo puedo resolver este problema?
Amal Murali
55
La solución puede ser ejecutar sudo dpkg-reconfigure resolvconfcomo se sugiere en la última parte de la respuesta.
jdthood
¡¡¡Gracias!!! No estoy seguro de lo que le sucedió a mi sistema, pero ejecutar el sudo dpkg-reconfigure resolveconfparecía funcionar muy bien.
meanbunny
49

Realicé el cambio sugerido en el siguiente enlace (desactivando dnsmasq). ¡Ahora todo funciona muy bien! http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubuntu-12-04precise.html

Abrir /etc/NetworkManager/NetworkManager.confarchivo

sudo gedit /etc/NetworkManager/NetworkManager.conf

Comenta la línea como:

#dnsmasq deactivated
#dns=dnsmasq
Richard Lindstedt
fuente
44
Después de comentar a cabo dnsmasq, es necesario reiniciar administrador de la red: sudo restart network-manager.
Don Kirkby
2
En mi caso (Xubuntu) el comando es: sudo /etc/init.d/network-manager restart
aviram83
Si le sucede esto, aunque no haya instalado dnsmasq y no haya nada que comentar, agréguelo dns=defaulta la [main]sección. NetworkManager tiene su propio plugin dnsmasq desagradable que usará de otra manera.
dstibbe
1
Necesito hacer esto reinicio network-manager-sudo service network-manager restart
Sungam
Uno de mis cuadros no tenía DNS después de la actualización a 17.10 y resulta que /etc/resolv.conf no era un enlace simbólico. Arreglado. Otro cuadro no terminó de actualizar y encontré un archivo .dpkg-new en el directorio, la diferencia principal es dnsmasq. Lo copié y funcionó sin reiniciar ningún demonio
fchen
20

EDITAR 2: la publicación anterior se eliminó legítimamente por la moderación, estoy publicando lo que he encontrado como una solución. Lo siento por eso.

EDITAR: Acabo de encontrar la respuesta y está en esta misma página, perdón por mi miopy. Publiqué mis hallazgos a continuación, ampliando la respuesta correcta de Richard Lindstedt que se encuentra en esta página. Dejé mis retumbos tempranos por un poco de contexto. Vota la respuesta de Richard, se lo merece.

En realidad es muy fácil.

simplemente abra el archivo conf de sus interfaces -> sudo vi / etc / network / interfaces

Eso seguro no ayudó al OP y no me ayuda ahora. No queremos direcciones estáticas, queremos usar las que nos envía el servidor DHCP. NetworkManager parece reconocerlos, pero Ubuntu los ignora sin rodeos:

# nmcli dev list iface wlan0 | grep IP4.DNS
IP4.DNS[1]:          10.*.*.*
IP4.DNS[2]:          10.*.*.*
IP4.DNS[3]:          8.8.8.8

Pero...

# dig microsoft.com
; <<>> DiG 9.9.5-4.3-Ubuntu <<>> microsoft.com
;; global options: cmd
;; connection timed out; no servers could be reached

Y mi / etc / network / interfaces es:

auto lo
iface lo inet loopback

lo cual es un poco extraño, esperaría que todas las interfaces se declaren aquí (¿o me falta algo?).

Entonces, en resumen:

  • No me metí con ningún archivo para empezar
  • Ya he corrido dpkg-reconfigure resolvconf
  • El enlace simbólico correcto está en su lugar
  • NetworkManager recupera los servidores DNS correctos de DHCP
  • Ubuntu NO usa tales direcciones
  • La solución consiste en poner 8.8.8.8 fijo en / etc / network / interfaces LO QUE NO QUIERO
  • Quiero usar los servidores DNS proporcionados por DHCP en todas y cada una de las situaciones.

No abro otro hilo porque es el problema exacto, excepto que ahora estoy en 14.10 (pero esto me ha estado molestando desde la actualización de 12.10 a 13.04).

SOLUCIÓN

Esa última frase me llevó por el buen camino, y solo entonces noté la respuesta de Richard.

El problema parece estar relacionado con los conflictos dnsmasqy los resolvconfpaquetes. Hasta las 12.10, dnsmasqse utilizó. A partir del 13.04 en adelante, Ubuntu pareció cambiar a un híbrido dnsmasq / resolvconf, donde instaló los paquetes dnsmasq-basey resolvconf, pero no a dnsmasqsí mismo.

No puedo decir si es un error en los scripts de actualización para 13.04 o algo más, porque cuando se actualiza (como en las nuevas instalaciones) resolvconf se instala, se actualiza dnsmasq-base y se desinstala (correctamente) dnsmasq.

El problema es que el script de actualización no puede comentar la dns=dnsmasqlínea /etc/NetworkManager/NetworkManager.conf. Entonces, aunque el demonio dnsmasq ya no está presente en el sistema, /etc/resolv.conf todavía espera que lo esté.

Henrique
fuente
¡ESTO ES TAN GENIAL!
metadings
1
¡Dios mío, esto resolvió mis problemas de DNS que he tenido durante los últimos 3 años! Si tiene dnsmasqe dnsmasq-baseinstaló, NM se colocará 127.0.0.1en /etc/resolv.conflugar de 127.0.1.1. Simplemente desinstalé dnsmasq(y habilité NM) y todo funciona bien.
user1129682
44
Los futuros Googlers deben tener en cuenta que debe hacerlo sudo service network-manager restartpara que esto surta efecto.
Timelmer
Buen punto de reinicio del administrador de red de servicio!
Henrique
7

En realidad es muy fácil.

simplemente abra el archivo conf de sus interfaces -> sudo vi / etc / network / interfaces

y debajo de su interfaz (probablemente eth0) verá toda la configuración habitual.

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1

Después de la puerta de enlace, simplemente agregue 'dns-nameservers 8.8.8.8 8.8.8.9' o cualquier servidor de nombres que vaya a utilizar.

Entonces su configuración debería ser:

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1
dns-nameservers 8.8.8.8 8.8.8.9

entonces solo haz un 'reinicio de la red del servicio sudo' y listo.

brotar
fuente