16.10 falla al resolver DNS

34

Después de actualizar mi instalación 16.04 a 16.10, tengo problemas con DNS.

Primero tuve problemas un par de veces cuando estaba conectado a WiFi, mientras funcionaba en ethernet. Ahora parece funcionar también con WiFi. No estoy seguro de por qué, y si de alguna manera está relacionado con el problema que enfrento ahora:

Cuando se conecta a un host VPN con Cisco Anyconnect VPN , agrega una línea en '/etc/resolv.conf' . Entiendo que Ubuntu ahora está usando systemd-resolve , y la página del manual dice que hay tres modos diferentes para manejar /etc/resolv.conf. Mi /etc/resolv.conf no es un enlace simbólico, y no enumera 127.0.0.53 como un servidor DNS, por lo que entiendo que systemd resuelto debería "leerlo para los datos de configuración de DNS". Sin embargo, no parece importarle.

cavar

Lo extraño (para mí) es que dig host.customer.tlddevuelve una buena respuesta con una SECCIÓN DE RESPUESTA que muestra la ip del host solicitado, y se refiere al servidor dns agregado a /etc/resolv.conf por vpn client como el SERVIDOR. Cuando la conexión vpn está desactivada, no obtengo respuesta. Es decir, dig lee /etc/resolv.conf .

silbido

El navegador, por otro lado, no llega a /etc/resolv.conf y no puede resolver el nombre del host. Tampoco es ping / curl, por cierto.

nmcli

Encontré una publicación relacionada e intenté ejecutar

nmcli device show <interfacename> | grep IP4.DNS

pero no enumera dns para el dispositivo cscotun0. (Sin embargo, tampoco en 16.04). Además, nmcli enumera mi servidor dhcp (mi enrutador) como host IP4.DNS para mis conexiones eth / wlan. Usar dig @192.168.0.1 xxxpara cualquier dominio público funciona bien.

configuración

Hay algunos otros servidores DNS listados en mi /run/systemd/resolve/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 2001:4860:4860::8888
# Too many DNS servers configured, the following entries may be ignored.
nameserver 2001:4860:4860::8844

Estos no son atendidos por mi servidor DHCP. el archivo /etc/systemd/resolved.conf contiene solo líneas comentadas, excepto el encabezado de sección:

[Resolve]
#DNS=
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844

La página del manual para resolve.conf dice que

DNS = Una lista separada por espacios de direcciones IPv4 e IPv6 para usar como servidores DNS del sistema. ... Por razones de compatibilidad, si no se especifica esta configuración, los servidores DNS enumerados en /etc/resolv.conf se utilizan en su lugar, si ese archivo existe y algún servidor está configurado en él. Esta configuración por defecto es la lista vacía.

FallbackDNS = Una lista separada por espacios de direcciones IPv4 e IPv6 para usar como servidores DNS de reserva. Cualquier servidor DNS por enlace obtenido de systemd-networkd.service (8) tiene prioridad sobre esta configuración, al igual que cualquier servidor configurado a través de DNS = anterior o /etc/resolv.conf. Por lo tanto, esta configuración solo se usa si no se conoce otra información del servidor DNS. Si no se da esta opción, en su lugar se usa una lista compilada de servidores DNS.

Parece que el respaldo termina en /run/systemd/resolve/resolv.conf en mi caso.

EDITAR: No estaba seguro de cuál era el problema, y ​​para ser honesto, todavía no sé exactamente cómo funciona esto, pero al menos resultó que la solución en mi caso era deshabilitar el systemd-resolvedservicio. Pensé que era necesario el servicio, que era el componente que proporcionaba el servicio DNS a todas las aplicaciones locales, pero aparentemente hay algo más allí haciendo ese trabajo.

aweibell
fuente
¿Tienes algún problema con el DNS si no estás usando la VPN?
Mark Stosberg
3
Solo quería señalar que estoy teniendo exactamente los mismos problemas con Anyconnect en 16.10. Conectarse varias veces al servicio VPN parece solucionarlo temporalmente, pero en algún momento el dns ya no funciona.
jmartinez
2
Tengo problemas de resolución de DNS similares que no estaban presentes con 16.04. Mi sugerencia es comenzar eliminando (copia de seguridad) /etc/resolv.conf; desinstalar el paquete resolvconf; reiniciar; y use dig, systemd-resolve con y sin VPN para ver qué funciona o no.
philcolbourn
1
Compare este informe de error: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317
jdthood

Respuestas:

15

Experimenté problemas similares, por ejemplo, al agregar un dongle wifi USB adicional. Primero deshabilité dnsmasq en networkmanager como se describió anteriormente y detuve dnsmasq (servicio dnsmasq stop)

Noté que cuando la resolución se rompió durante mi conexión VPN, la tabla de enrutamiento se ve ligeramente diferente (salida del comando de ruta). El nombre de la puerta de enlace es DD-WRT en caso de que no funcione y simplemente 'puerta de enlace' cuando funciona. El resultado de esto no cambió:

nmcli device show wlp1s0 | grep IP4.DNS

Seguía mostrando la dirección IP de mi enrutador. Una solución alternativa para que funcione por un tiempo es reiniciar systemd-resolvd:

sudo service systemd-resolved restart

Dado que dnsmasq está fuera de la ecuación, es systemd-resolvd la causa del problema o algo que cambie la tabla de enrutamiento.

Entonces esta es la única diferencia que veo:

ubuntu@ubuntu-Lenovo-Yoga-2-11:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    601    0        0 

que funciona Y esto cuando NO funciona:

ubuntu@ubuntu-Lenovo-Yoga-2-11:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         DD-WRT          0.0.0.0         UG    601    0        0 wlp1s0

Y la misma diferencia de nombre en la línea VPN:

vpn-dns.name gateway         255.255.255.255 UGH   0      0        0 wlp1s0

¿Quién sabe qué puede influir en la tabla de enrutamiento? Sería genial si pudiéramos identificar esto para poder presentar un informe de error. Me estoy poniendo muy enfermo y cansado de buscar todos estos errores, pero me gustaría solucionarlos para que los futuros usuarios y nosotros seamos felices :).

[actualización] Parece que detener systemd-resolve puede arreglar esto y no afectar negativamente a otras cosas. Puedes intentarlo y hacerle saber si rompe cosas. Vi cuando ejecuté systemd-resolvd en depuración cuando se rompió:

Removing scope on link wlp1s0, protocol llmnr, family AF_INET
Removing scope on link wlp1s0, protocol llmnr, family AF_INET6
Removing scope on link *, protocol dns, family *

Deshabilitar:

sudo systemctl disable systemd-resolved.service

Actualicé el informe de Ubuntu con sugerencias. [/ actualización] Agregar: Nota: el informe de error: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317 tiene un parche para 17.04 para algunos problemas. Compruebe el informe de error y, si es posible, pruebe el parche. ¡Gracias!

[actualizar]

Compruebe el informe de error mencionado anteriormente, el problema parece estar resuelto para 17.10 y con un simple comando, la fuga de DNS también se puede deshabilitar.

[/actualizar]

Vincent Gerris
fuente
¡Gracias por su minucioso informe! Veo diferentes cambios en la tabla de enrutamiento que usted: mi VPN parece agregar muchas rutas, dinámicamente a medida que se utilizan, sospecho. Sin embargo, deshabilitar systemd-resolve funcionó muy bien para mi problema también.
aweibell
Creo que eventualmente el nombre en la tabla de enrutamiento no importó, fue resuelto por systemd estropeando la resolución de DNS de alguna manera. También tuve que deshabilitar el servicio dnsmasq para evitar que se inicie, pero todo funciona ahora. Esperemos que alguien arregle el conjunto adecuado de dependencias entre paquetes que se necesitan para que todo funcione correctamente. Es un error tan molesto con el que lidiar.
Vincent Gerris
Vale la pena señalar que luché por un día completo con este problema, reiniciar el servicio resuelto por systemd no hizo nada por mí, ¡pero lo deshabilité por completo y ya no tengo problemas!
fd8s0
Solo para reiterar, he tenido problemas de red durante varios días desde que actualicé a 17.04 desde 16.10.He intentado la mayoría de las respuestas aquí, la mayoría funciona por un tiempo y luego el problema surge nuevamente, lo que finalmente funcionó fue deshabilitar systemd-resolve usando sudo systemctl disable systemd-resolved.service y configurando el dns a 8.8.8.8 en /etc/resolv.conf
Japheth Ongeri - inkalimeva
Esta línea simple me resolvió: servicio de sudo reinicio resuelto por systemd, ¡gracias!
Sergio Abreu
36

El comportamiento de DNS durante la conexión OpenVPN mejoró de inmediato cuando seguí una sugerencia en ubuntuforums:

  1. Abrir /etc/NetworkManager/NetworkManager.confen un editor con derechos de root.
  2. Eliminar (o comentar con un hash #) la línea que dicedns=dnsmasq
  3. Reinicie NetworkManager a través de sudo service NetworkManager restart
krlmlr
fuente
Gracias. Intenté esto ahora, pero no funcionó. En realidad, DNS funciona bien, excepto cuando inicio el cliente VPN de Cisco, que reemplaza el enlace simbólico /etc/resolve.conf con un archivo de texto sin formato.
aweibell
1
Esta solución funcionó para mí, tenía problemas de DNS con OpenVPN. Después de este cambio, mi /etc/resolve.conf ha cambiado. Es muy extraño ya que ni siquiera tengo instalado dnsmasq.
postfuturista
Esto podría funcionar para problemas con NM y openvpn, pero al menos ralentiza las conexiones. Como se conjetura aquí .
BairDev
3

Me encontré con el mismo problema. De alguna manera debo haber instalado DNSmasq con alguna aplicación. Simplemente eliminar dnsmasq resolvió el problema por mí.

sudo apt-get remove dnsmasq 

Desde entonces, no hay más desconexiones o algunos sitios ya no pueden cargarse (he tenido un problema al cargar gmail, es decir, de repente no se pudo conectar a gmail, aunque otros sitios funcionaron).

Nitai
fuente
Cuando se trata de eliminar dnsmasq-base del paquete, la aptitud me dice que es requerido por el gestor de red y ubuntu-ventilador , y la eliminación que dará lugar a una gran cantidad de paquetes adicionales ser eliminado ..
aweibell
¿Qué distribución y versión? Estoy en Ubuntu 16.10 y no tuve problemas para eliminarlo. De lo contrario, no lo habría publicado :)
Nitai
¡También estoy en Ubuntu 16.10! Extraño. apt remove dnsmasq-base...The following packages will be REMOVED: account-plugin-ubuntuone checkbox-converged checkbox-gui dnsmasq-base indicator-network network-manager network-manager-gnome network-manager-openconnect network-manager-openconnect-gnome network-manager-openvpn network-manager-openvpn-gnome network-manager-pptp network-manager-pptp-gnome network-manager-vpnc pay-service plainbox-provider-checkbox plainbox-provider-resource-generic ubuntu-desktop ubuntu-fan ubuntu-push-client ....
aweibell
Lo mismo aquí con 16.10. También quiere eliminar todos esos otros paquetes.
Dave Kincaid el
Acabo de desconectarme el otro día. De alguna manera, una aplicación debe haber reinstalado dnsmasq nuevamente. En cualquier caso, esta vez simplemente lo deshabilité con systemd. Hasta ahora ya no funciona y tampoco tengo desconexiones.
Nitai
1

Editar /etc/nsswitch.confy cambiar

hosts:          files mdns4_minimal [NOTFOUND=return] dns

a

hosts:          files dns mdns4_minimal [NOTFOUND=return]

Editar:

Tengo los mismos problemas desde hace bastante tiempo. Pude resolver nombres de dominio desde vpn pero no pude hacer ping o rizarlos o usarlos en otras aplicaciones. El cambio descrito anteriormente lo resolvió para mí.

Camarada
fuente