systemd-resolve no consulta el servidor dns para el dominio local

12

Desde la actualización a 17.04 ya no puedo resolver direcciones en mi red local (silvesternet.local). Recibo la siguiente respuesta:

$ systemd-resolve edgerouter
edgerouter: resolve call failed: No appropriate name servers or networks for name found

En el diario solo hay informes de tiempos de espera para transacciones relacionadas con esta búsqueda.

Utilicé Wireshark para rastrear el tráfico de la red, y parece que ni siquiera intenta buscar el nombre. No hay tráfico de dns en absoluto. Buscar otro dominio externo funciona bien.

Muchos problemas relacionados con el mismo tema mencionan el cambio de nsswitch.conf, pero eso no parece resolver nada. Mi configuración actual es:

hosts:          files mdns4_minimal dns [NOTFOUND=return] resolve [!UNAVAIL=return] mdns4
Rob van der Most
fuente
1
¿Has corrido sudo apt update && sudo apt full-upgrade? Insectos imagen de la liberación en lo arreglaron ...
Zanna
si está utilizando systemd-networkdpara configurar interfaces, es posible que deba agregar UseDomains=trueen la [DHCP]sección de sus .networkarchivos: wiki.archlinux.org/index.php/systemd-networkd#.5BDHCP.5D
quixotic
De hecho, cierra con el dominio. En realidad, fue un error en el firmware de edgerouter que no configuró el dominio en la respuesta dhcp.
Rob van der Most

Respuestas:

10

Creo que esto es por diseño.

Ubuntu 17.04 ha cambiado a systemd resuelto para la resolución de nombres y usa solo LLMNR (búsqueda de nombres de multidifusión) para la resolución de nombres de etiqueta única. Vea este enlace para más detalles: https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html

Para conocer el razonamiento detrás de esta decisión, consulte la respuesta de poettering en este informe de error: https://github.com/systemd/systemd/issues/2514

UPD: este problema puede solucionarse utilizando un dominio para la red local. Si la interfaz de red está configurada (ya sea manualmente o por DHCP) para usar un dominio de búsqueda, systemd-resolve agregará este dominio a nombres de etiqueta única y luego los buscará mediante DNS de unidifusión.

Obviamente, el servidor DNS local debe reconfigurarse para reconocer estos dominios. En el caso de dnsmasq que lee pares locales de host a IP desde / etc / hosts, se puede lograr agregando las siguientes instrucciones a dnsmasq.conf:

domain=mydomain.net
local=/mydomain.net/
expand-hosts

UPD2: O simplemente podría volver a dnsmasq como se describe aquí /ubuntu//a/911432/692094

Ish-West
fuente
Y una página de error más con algunas explicaciones: github.com/systemd/systemd/issues/4821
ish-west
El nombre de dominio fue el problema aquí. En realidad, también fue causado por un error en el firmware de edgerouter. La opción de nombre de dominio de la configuración no se almacenó correctamente en la configuración de dhcp. Entonces los clientes no obtuvieron un dominio para buscar.
Rob van der Most
8

Tengo el mismo problema en Ubuntu 18.04, que también usa systemd-resolve para DNS. Su configuración predeterminada no resuelve nombres de host de etiqueta única o nombres de host de dominio .local por DNS, sino por LLMNR o mDNS respectivamente.

Para hacer que los nombres de host de etiqueta única local o los nombres de host de dominio .local se resuelvan mediante DNS, habilité el tercero de los "Cuatro modos de manejo /etc/resolv.conf" descritos en la página del manual para systemd-resolve.service :

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

Aquí se dio una respuesta similar . Y de nuevo, para el razonamiento detrás del valor predeterminado, vea la respuesta de poética en este informe de error .

Mats Lindén
fuente
2

Lo que funcionó para mí después de actualizar a 18.04 fue configurar el archivo /etc/systemd/resolved.conf cambiando el parámetro Domains al dominio (local o como en mi caso mydomain.local). También cambié el parámetro DNS, pero parecía que no era relevante, pero lo menciono en caso de que no sea cierto. Para más información, vaya a https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html .

Además, cambié la configuración de avahi (/etc/avahi/avahi-daemon.conf) para cambiar el parámetro de dominio dentro de la sección del servidor de local (el valor predeterminado) a otra cosa como algunas personas señalaron en este foro.

Con los cambios mencionados, puedo llegar a las máquinas usando nombres sin puntos, por ejemplo, haciendo ping a mi computadora, la máquina se contacta con éxito. Sin embargo, si hago ping a mycomputer.mydomain.local no funciona, el FQDN no se resuelve como se esperaba.

Esperando que esto ayude en algunos casos o conduzca a una solución más general.

Jorge
fuente
0

Me enfrenté a este problema debido a una configuración incorrecta nsswitch.conf. Desde la 12.04siguiente cadena funcionó como se esperaba. Los nombres de host sin dominio se resuelven con éxito.

Pero la nueva 17.04versión (así como la versión 16.10) de ubuntu con la plantilla anterior para configurar el sistema nss no funciona como antes.

Versión mal configurada de hosts, desde versiones antiguas de ubuntu: hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

Versión de trabajo exitosa de hosts, por ejemplo, de 17.04: hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns

vskubriev
fuente