¿Debo editar mi archivo resolv.conf para solucionar un problema de DNS incorrecto?

35

Tengo el problema de que mi máquina Ubuntu usa el servidor DNS incorrecto. Por alguna razón, la máquina consulta la localhostinformación de DNS.

He agregado el servidor DNS en la GUI de configuración de red, pero /etc/resolv.confaún contiene 127.0.0.1como la dirección del servidor DNS. Ahora, pensé que podría editar el archivo yo mismo, pero explícitamente dice que no debería editar el archivo a mano.

Ahora, dado que la GUI de configuración de red no generó el archivo con la configuración correcta, ¿cómo puedo generar un resolv.confarchivo nuevo por mí mismo?

Ahatius
fuente
1
Si está utilizando Ubuntu Server 12.04 LTS, hágase un gran favor y edite /etc/resolvconf/resolv.conf.d/head directamente como desea que se vea su resolv.conf heredado. No tenía nada más que resolver problemas hasta que la fuerza bruta lo resolvió.
askubuntu.com/questions/157154/… tal vez una pregunta relacionada.
Ehtesh Choudhury

Respuestas:

40

Lo que ninguna de las respuestas ha publicado hasta el momento direcciones es la apariencia de que el interlocutor no comprende que tener nameserver 127.0.0.1en /etc/resolv.confes correcta, en el supuesto de que un servidor de nombres local se está ejecutando. Y en Ubuntu 12.04 Desktop hay, por defecto, un servidor de nombres local en ejecución, es decir, un dnsmasqproceso controlado por NetworkManager que escucha 127.0.0.1. En Ubuntu 12.10, la dirección de escucha se ha cambiado a 127.0.1.1.

Entonces, la solución no es hacer ningún cambio resolv.conf. Es correcto, suponiendo que el interlocutor quiere usar el servidor de nombres local.

Si el servicio de nombres no funciona, entonces el servidor de nombres local no recibe las direcciones de reenvío correctas, o hay algún otro problema de red.

El interlocutor intentó utilizar la "GUI de configuración de red" para "generar el archivo con la configuración correcta" y esto no funcionó. No sé exactamente qué significa esto, pero esta es la forma correcta de ingresar las direcciones del servidor de nombres para que terminen en resolv.confel momento adecuado. Supongo que el interlocutor está utilizando NetworkManagery no ifuppara configurar interfaces.

La mayoría de las interfaces se configuran utilizando el protocolo DHCP. En ese caso, no es necesario configurar nada en el sistema local. El servidor DHCP sabe qué dirección de servidor de nombres deben usar sus clientes y envía esta información al cliente DHCP, que la envía a NetworkManager, que la envía a resolvconf, que coloca la información resolv.conf. Entonces, en este caso, es posible que sea necesario configurar el servidor DHCP.

Si la interfaz de red en la máquina local está configurada estáticamente, entonces las direcciones correctas del servidor de nombres deben ingresarse en NetworkManager en, por ejemplo, el indicador de red | Editar conexiones ... | Inalámbrico | myconnection | Editar ... | Configuración de IPv4 | Servidores DNS adicionales.

Es posible que el servidor de nombres local no funcione correctamente. En ese caso, el interlocutor debería editar/etc/NetworkManager/NetworkManager.conf

sudo gedit /etc/NetworkManager/NetworkManager.conf

y comentar la línea

dns=dnsmasq

en la sección "[principal]". Para comentar la línea, coloque un #al principio de la línea, luego guarde el archivo. Luego reinicie el administrador de red.

sudo restart network-manager

Después de esto, se ingresarán direcciones de servidor de nombres no locales en resolv.conflugar de la dirección 127. *.

Si el interlocutor está utilizando en ifuplugar de NetworkManager para configurar las interfaces de red, entonces la respuesta de jmartin2279 es correcta: debe agregar las direcciones del servidor de nombres a / etc / network / interfaces de la manera descrita por jmartin2279.

Contrariamente a lo que algunas otras respuestas aconsejan, en general, usted debe no añadir nameserver, domaino searchlas opciones de archivos en /etc/resolvconf/resolv.conf.d/. Vea mis comentarios sobre esas respuestas.

jdthood
fuente
1
"El servidor DHCP sabe qué dirección de servidor de nombres deben usar sus clientes" - Excepto cuando no tiene control sobre el servidor DHCP (piense en puntos de acceso WiFi públicos) y quiera anular el servidor de nombres que se está utilizando ... Establecer la misma configuración en una conexión base, una y otra vez para cada punto de acceso WiFi al que se conecta, no es la solución.
Teoh Han Hui
Parece que necesito ejecutar dhclientpara que nameserverfinalmente lleguen los cambios (las líneas) etc/resolv.conf. Estoy ejecutando un live personalizado de Xubuntu 14.04 (tal vez esa es la razón).
Sopalajo de Arrierez
¿Cuáles podrían ser las desventajas de deshabilitar DNSMasq, jdthood? Por supuesto, la resolución de nombres e Internet parecen funcionar bien después de hacerlo.
Sopalajo de Arrierez
Ver bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1003842 , por ejemplo, mi comentario # 60.
jdthood
Mi resolv.conf sigue cambiando a 127.0.0.1pesar de que mi administrador de red tiene otros servidores de nombres + dnsmasq siendo comentado + reiniciado + dnsmasq asesinado (ya que aún se inicia) + red reiniciada: /
algún usuario
17

Si está utilizando ifup para configurar la interfaz de forma estática, puede agregarla al archivo / etc / network / interfaces.

Abra una terminal y escriba:

sudo gedit /etc/network/interface*

Deberías ver algo como:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Editar a:

auto eth0
iface eth1 inet static
address 192.168.1.10 
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8

utilizando su propia información de red. esto le permitirá configurar el dns. puedes usar varios servidores dns aquí:

dns-nameservers 8.8.8.8 8.8.4.4

Después de hacer esto, corre

ifdown eth0
ifup eth0
jmartin2279
fuente
Si es su caso, esta es la solución: "Si está utilizando ifup para configurar la interfaz estáticamente ..."
angelcervera
¿Incluso probaste esto? ifdown: interface eth0 not configured
Cerin
3
si está conectado a través de ssh, no puede usar ifdown / ifup. en su lugar usesudo /etc/init.d/networking restart
TD_Nijboer
11

En Ubuntu 12.04, el manejo de resolv.conf cambió.

Si desea agregar sus propias direcciones de servidor de nombres, edite el archivo /etc/resolvconf/resolv.conf.d/ head

sudo nano /etc/resolvconf/resolv.conf.d/head

y agregue su servidor de nombres allí (por ejemplo: Google open dns)

nameserver 8.8.8.8

guardar el archivo y luego ejecutar

sudo resolvconf -u

No reiniciar ni nada más. Tal vez deba reiniciar el administrador de red

sudo service network-manager restart

Hecho.

Puedes probarlo con el comando

nslookup www.google.com

El resultado debe ser similar a

Server: 8.8.8.8
Address: 8.8.8.8#53
NickTux
fuente
44
Agregar una línea de "servidor de nombres" a /etc/resolvconf/resolv.conf.d/head puede funcionar como un truco rápido, pero no es la solución correcta para ningún problema. Hacer eso hace que el solucionador use esa dirección de servidor de nombres en todas las circunstancias, mientras que los servidores de nombres a usar dependen de las circunstancias. Por ejemplo, si está conectado a una LAN (quizás a través de VPN), generalmente desea utilizar los servidores de nombres de LAN para poder resolver nombres privados en la LAN. Y en el presente caso, el sistema parece estar ejecutando un servidor de nombres de almacenamiento en caché local, pero agregar "servidor de nombres 8.8.8.8" simplemente lo omite.
jdthood
@jdthood - Señalaste un problema. ¿Te importa proporcionar una solución?
TJ Biddle
@TJ Ya publiqué una respuesta a la pregunta principal ("¿Cómo edito mi archivo resolv.conf?") Si eso es lo que quieres decir.
jdthood
1
Por favor no recomiende esto. En el muy superior del archivo, "No edite este archivo manualmente - Los cambios se pueden sobrescribir".
Cerin
Me gustaría señalar que editar /etc/resolv.conf sobrescribe manualmente los cambios al reiniciar, sin embargo, editar /etc/resolvconf/resolv.conf.d/head manualmente NO sobrescribe los cambios al reiniciar, sin embargo, probablemente lo haga al reiniciar instalación de resolvconf, por lo que es probable que aparezca la advertencia
Ken
1

Para agregar más entradas /etc/resolv.conf, cree un /etc/resolvconf/resolv.conf.d/tailarchivo y agréguelas allí.

Pero si /etc/resolv.confcontiene 127.0.0.1, agregar entradas a /etc/resolvconf/resolv.conf.d/tailno cambiará nada. Debe configurar las direcciones de su servidor DNS estáticamente en NetworkManager, que las enviará a dnsmasq, que escucha 127.0.0.1.

La configuración de DNS para una interfaz estática debe ir como entradas " dns-nameservers", " dns-search" y " dns-domain" agregadas a la stanza iface apropiada en/etc/network/interfaces

Lea esto para más información.

`Además:

Puede instalar una herramienta gui llamada gnome-network-adminque configurará su DNS. Intentalo :

sudo apt-get install gnome-network-admin
Kevin Bowen
fuente
3
(1) No, no agregue opciones de "servidor de nombres" a /etc/resolvconf/resolv.conf.d/tail. Eso es ineficaz (porque otras opciones de "servidor de nombres" tienen prioridad) y subóptima (porque es una configuración estática mientras que la configuración debe reflejar las circunstancias de la red). (2) No, no use gnome-network-admin. No funciona correctamente con resolvconf. Ver error # 60518 ( bugs.launchpad.net/ubuntu/+source/gnome-system-tools/+bug/60518 ).
jdthood