¿Cómo deshabilitar systemd-resolve en Ubuntu?

88

¿Cómo puedo desactivar systemd-resolve en Ubuntu 17.04?

Desactivarlo systemctl disableno funcionó, el servicio parece reiniciarse (¿por Networkmanager?)

Bastian Voigt
fuente
10
systemd-resolve no solo es grande, también rompe la forma en que funciona la resolución dns al no intentar siempre resolver en el orden en que los servidores dns se especifican en la configuración del cliente. Cuando un servidor no resuelve un dominio, el siguiente en la lista se mueve a la parte superior (Poettering llama a esa 'memoria'). Ver este hilo para los detalles.
LifeBoy
77
también pasa por alto las reglas de iptables, lo cual es una idea terrible.
Spongman

Respuestas:

152

Este método funciona en las versiones de Ubuntu 17.04 (Zesty), 17.10 (Artful), 18.04 (Bionic), 18.10 (Cosmic) y 19.04 (Disco):

Deshabilite y detenga el servicio resuelto systemd:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

Luego ponga la siguiente línea en la [main]sección de su /etc/NetworkManager/NetworkManager.conf:

dns=default

Eliminar el enlace simbólico /etc/resolv.conf

rm /etc/resolv.conf

Reiniciar NetworkManager

sudo systemctl restart NetworkManager

También tenga en cuenta que deshabilitar systemd-resolvd puede romper la resolución de nombres en VPN para algunos usuarios. Vea este error en la plataforma de lanzamiento (Gracias, Vincent).

Bastian Voigt
fuente
44
Esto no parece funcionar en Ubuntu 17.04. Además, el archivo de configuración es /etc/NetworkManager/NetworkManager.conf. El nombre resuelve saltos cuando hago lo anterior. systemd-resuelto apesta a lo grande, ahora la resolución de DNS de VPN no funciona correctamente para mí. El progreso del error se puede encontrar aquí: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317
Vincent Gerris el
55
Creo que debería agregar a la respuesta anterior que "apt-get install dnsmasq" debe hacerse una vez que systemd-resolve se ha deshabilitado.
LifeBoy
55
@LifeBoy No uso dnsmasq. Simplemente no uso ningún servidor de nombres local, no veo el valor de eso.
Bastian Voigt
99
Para Ubuntu 18.04, todo lo que se necesita es ejecutar los comandos sudo systemctl disable systemd-resolve.service y sudo service systemd-resolve stop. Eso funcionó para mí.
Daniel Eagle
12
Gracias. SystemD está arruinando Linux, convirtiéndolo de algo confiable y entendible en algo que funciona a través de la magia.
Forbesmyester
18

Recientemente me actualicé a (k) Ubuntu 17.04 y también me topé con el cambio a systemd.

Creo que mi configuración es bastante típica, ya que tengo un proveedor de DNS en mi HUB de banda ancha y esta es mi fuente principal de información para todos los dispositivos en mi red (de los cuales tengo algunos).

Hay algo de belleza en systemd, no todo es malo, pero lo que es realmente malo es la documentación, la falta de comunicación del equipo de Ubuntu y la mentalidad de "vamos a cambiarlo a pesar de que se rompe para todos".

La solución para mí después de arrancarme el pelo fue editar /etc/systemd/resolved.conf:

[Resolve]
DNS=192.168.1.254   # <-- change to your router address
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Domains=lan         # <-- change to your localdomain name (maybe .local)
#LLMNR=yes  <-- I dabbled with this for a while but it doesn't matter
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

Después de no entender por qué esto no funcionaría, descubrí que lo que también se necesitaba era cambiar /etc/resolv.conf al que proporciona systemd. Este no es el caso en una instalación inmediata (por razones desconocidas para mí).

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

El servidor DNS local no se usa y todas las solicitudes de DNS se envían a mi HUB.

Creo que esta es una solución mucho mejor que cortar y poner alguna otra solución ya que systemd-resolv ahora es el valor predeterminado en adelante.

Un problema relacionado por cierto es que el /etc/nsswitch.conf está castrado.

Debería leer:

hosts: archivos mdns4_minimal dns [NOTFOUND = return] resolver [! UNAVAIL = return] dns

Esta es una configuración confusa ya que [NOTFOUND = return] significa que el procesamiento termina allí. Las entradas posteriores nunca serán utilizadas.

usuario2427436
fuente
1
¿Y luego tengo que cambiar la dirección del enrutador en la configuración cada vez que me conecto a un nuevo WIFI? ¿Hablas en serio? -1
Bastian Voigt
No me di cuenta de que estabas vagando con eso. Si es así, deje los elementos de configuración comentados. Entonces debería obtener un /etc/resolv.conf que diga: nameserver 8.8.8.8 nameserver 8.8.4.4
user2427436
1
No creo que sea necesario editar resolve.conf si configuró netplan correctamente. es decir, netplan escribe los valores correctos en el archivo con enlace simbólico ... PS SYSTEMD SUCKS!
g33kz0r
3

Si tiene problemas de fugas con su VPN y no puede encontrar la manera de configurar systemd (como yo), puede eliminarlo de la manera descrita en la primera respuesta, pero no agregue la dns=defaultlínea porque activará el servidor de nombres 127.0 .0.1. Para configurar el enrutador como dns, cree el archivo "tail" en su /etc/resolvconf/resolv.conf.d/ carpeta agregando la líneanameserser 192.168.1.1

hazlo ln -sf /var/run/resolved/resolv.conf /etc/resolv.confsi te equivocaste con este archivo.

Yvain
fuente
1
De Verdad? Para mí funciona exactamente como se describe en mi respuesta. Definitivamente no estoy usando el servidor de nombres 127.0.0.1. También creo que no es muy útil codificar la IP de su servidor de nombres en un archivo de configuración. Al menos cambio las redes wifi con bastante frecuencia y cada wifi tiene un servidor de nombres diferente
Bastian Voigt
sí 'default' habilita 127.0.0.1 como dns
Yvain