¡El servidor de nombres 127.0.1.1 en resolv.conf no desaparecerá!

60

He leído que debería tener nameserver 127.0.1.1en mi /etc/resolv.confarchivo solo si mi máquina tiene su propio servidor DNS. Como no es así, tenerlo causa problemas. ¡Pero no importa lo que haga, no puedo deshacerme de él!

Aquí están las cosas que he hecho hasta ahora:

  1. Agregando nameserver 192.168.1.3al /etc/resolvconf/resolv.conf.d/basearchivo. (192.168.1.3 es el DNS de nuestra red).
  2. Duración: sudo resolvconf --enable-updates.
  3. Duración: sudo resolvconf -u.
  4. Ejecutando: sudo service network-manager restart(solo para asegurarse).

Sin embargo, cuando abro el /etc/resolv.confarchivo dice nameserver 127.0.1.1:! ¿Alguien tiene alguna idea de lo que está mal?

Tenga en cuenta que en realidad es 127.0.1.1! ¡Y no tengo idea de por qué no lo es 127.0.0.1!

Incluso cuando actualizo el /etc/resolv.confmanual y lo cambio a cualquier otra cosa, ¡ sudo resolvconf -uvolverá a hacerlo 127.0.1.1! ¿De dónde viene esta dirección?

Mehran
fuente

Respuestas:

100

NetworkManager es el programa que (a través de la utilidad resolvconf) inserta la dirección 127.0.1.1en resolv.conf. NM inserta esa dirección solo si está configurada para iniciar una instancia del programa dnsmasq para que sirva como servidor de nombres de reenvío local. Esa instancia de dnsmasq escucha las consultas en la dirección 127.0.1.1.

Si no desea utilizar un servidor de nombres de reenvío local, configure NetworkManager para que no inicie una instancia de dnsmasq y no inserte esa dirección. En /etc/NetworkManager/NetworkManager.confcomentar la líneadns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

y reinicie el servicio NetworkManager.

sudo service network-manager restart

En este modo, NetworkManager se actualiza /etc/resolv.conf(aún a través de resolvconf) para incluir las direcciones del servidor de nombres que NetworkManager tiene para las conexiones activas.

Si desea deshabilitar el mecanismo resolvconf para actualizar resolv.conf y simplemente usar un archivo resolv.conf estático, haga lo siguiente.

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo nano /etc/resolv.conf   # Create static file

# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8
2707974
fuente
Tengo 3 DNS y la consulta nunca llega al tercero si desactivo dnsmasq, ¿algún consejo? Quiero consultar Google, luego consultar la intranet dns. Gracias
JorgeeFG
3
restart network-managerno funciona en Xenial ya que usa systemd en lugar de upstart. probarsystemctl restart network-manager
Matthias Weiler
Mi pregunta es ¿el programa dnsmasq preguntará qué servidor DNS? solicitará al servidor DNS del DHCP la consulta de la dirección IP del host?
Reloj ZHONG
11

Es posible que resolvconf esté mal configurado. Esto es especialmente probable si ha estado jugando con sus archivos de configuración sin comprender realmente cómo funcionan resolvconf y NetworkManager.

Para obtener información general, lea la documentación de resolvconf y la publicación de blog de Stéphane Graber.

https://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

Primero debe saber que tanto Ubuntu Desktop como Ubuntu Server tienen resolvconf instalado y activado por defecto. Resolvconf proporciona un marco para actualizar dinámicamente el archivo /etc/resolv.conf de manera ordenada y reversible.

En segundo lugar, debe saber que Ubuntu Desktop por defecto tiene NetworkManager instalado y activado. De manera predeterminada, NetworkManager inicia una instancia de dnsmasq para que sirva como servidor de nombres de reenvío local. Esta instancia dnsmasq controlada por NetworkManager escucha consultas en 127.0.1.1. Cuando NetworkManager inicia la instancia de dnsmasq, le dice a resolvconf que inserte la dirección 127.0.1.1en resolv.conf. Como se mencionó en otra respuesta, si configura NetworkManager para que no inicie una instancia de servidor de nombres de reenvío local, no iniciará un servidor de nombres de reenvío local y no le indicará a resolvconf que inserte la dirección 127.0.1.1en resolv.conf.

Esta configuración predeterminada funciona correctamente, por lo que, a menos que su situación sea especial, debe restaurar la configuración predeterminada.

Para restaurar la configuración predeterminada, asegúrese de que

  • /etc/resolvconf/resolv.conf.d/head contiene solo el texto del encabezado resolvconf que consta de dos líneas que comienzan con un #carácter
  • /etc/resolvconf/resolv.conf.d/base es un archivo vacío
  • /etc/resolvconf/resolv.conf.d/tail es un archivo vacío
  • /etc/resolv.conf es un enlace simbólico con contenido ../run/resolvconf/resolv.conf

Para lograr esto, ejecute los siguientes comandos.

sudo su
dpkg-reconfigure resolvconf   # And answer `Yes` to agree to dynamic updates
cd /etc/resolvconf/resolv.conf.d
echo '# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN' > head
rm -f base tail original
:> base
:> tail

La configuración original de NetworkManager es tener

[main]
...
dns=dnsmasq
...

en /etc/NetworkManager/NetworkManager.conf. Es una opción razonable deshabilitar el servidor de nombres de reenvío local controlado por NetworkManager comentando la dns=dnsmasqlínea.

[main]
...
#dns=dnsmasq
...

Después de hacer todo esto, es recomendable reiniciar la máquina para borrar los registros de información obsoletos del servidor de nombres.

sudo reboot
jdthood
fuente
1

En mi caso, no había una dns=dnsmasqlínea en el /etc/NetworkManager/NetworkManager.confarchivo y /etc/resolv.confNetwork Manager lo sobrescribió para tener solonameserver 127.0.1.1

La solución fue restaurar un enlace simbólico para una actualización adecuada:

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
Valery Markov
fuente