Estoy ejecutando Ubuntu 18.04 (actualizado desde una versión anterior) que usa Network Manager y systemd-resolved para la resolución de nombres. Cuando arranco, mi conexión ethernet enp0s31f6
es activado por Network Manager y se le asignan tres direcciones de servidor de nombres a través de DHCP, 10.1.13.10
, 10.1.141.10
, 10.1.13.36
. Ejecutando nmcli
muestra los tres servidores de nombres en "Configuración de DNS". Ejecutando systemd-resolve --status
los muestra en la sección "Enlace 2 (enp0s31f6)". Puedo hacer ping a cada uno. No hay otra conexión activa.
testuser ☼ systemd-resolve --status
Global
DNS Domain: (my org's domain)
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 3 (wlp4s0)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
Link 2 (enp0s31f6)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 10.1.13.10
10.1.141.10
10.1.13.36
DNS Domain: (my org's domain)
Sin embargo, cuando trato de resolver un nombre, incluso el nombre de uno de los servidores de nombres, dig
afirma que "se agotó el tiempo de espera de la conexión:no se pudo acceder a ningún servidor".
testuser ☼ dig dcpdc001.(my org's domain)
; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> dcpdc001.(my org's domain)
;; global options: +cmd
;; connection timed out; no servers could be reached
Tenga en cuenta que este nombre debe resolverse en 10.1.13.10
, el primer servidor de nombres.
He configurado resolvconf
para usar actualizaciones dinámicas. /etc/resolv.conf
apunta a /run/resolvconf/resolv.conf
. Este archivo contiene solo (sin comentarios):
nameserver 127.0.0.53
search (my orgs local search domain)
Si agrego nameserver 10.1.13.10
a este archivo manualmente, de repente dig
puede resolverse de nuevo, y cualquier otra cosa que necesite ver los nombres locales puede hacerlo. Eliminar el servidor de nombres vuelve a romperlo.
No sé mucho sobre los servidores. Son parte de una red basada en Windows, pero puedo usarlos si edito resolv.conf
manualmente, así que no creo que ese sea el problema, e implica que no necesito estar autenticado en el dominio para usarlos. (Puedo autenticarme en el dominio a través de Ubuntu usando Realmd/SSSD, pero no si no puedo resolver el controlador de dominio...)
El journalctl
entradas para systemd-resolved
muestra solo algunos mensajes sobre "Usar un conjunto de funciones degradadas... para el servidor DNS", pero solo se refieren al tercer servidor de nombres, no a los demás. Nada para el servidor de nombres principal.
¿Cómo puedo hacer que la resolución de nombres funcione sin tener que editar manualmente resolv.conf
? cada vez que arranco?
Asumo el contenido de mi resolv.conf
¿Significa que Network Manager o Systemd tiene algún tipo de resolución de almacenamiento en caché local en ejecución? Si es así, ¿se solucionarían las cosas si se omitiera?
Aumenté el nivel de registro de systemd-resolved
y journalctl -f -u systemd-resolved
muestra:
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Got DNS stub UDP query packet for id 19836
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Looking up RR for dcpdc001.(org domain) IN A.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Switching to DNS server 10.1.13.10 for interface enp0s31f6.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Cache miss for dcpdc001.(org domain) IN A
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Transaction 12728 for <dcpdc001.(org domain) IN A> scope dns on enp0s31f6/*.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Using feature level UDP+EDNS0+DO+LARGE for transaction 12728.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Using DNS server 10.1.13.10 for transaction 12728.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Sending query packet with id 12728.
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Processing query...
Jul 20 10:33:23 heerij-ubuntu systemd-resolved[2352]: Timeout reached on transaction 12728.
Respuesta aceptada:
Systemd viene con una resolución "stub", systemd-resolved, que según ellos en realidad no está destinada a ser utilizada como un servidor DNS:
Bueno, se supone que resuelto no es un servidor DNS, se supone que es exactamente lo suficientemente bueno para que los clientes DNS tipo libc puedan resolver sus cosas, y llevamos suficiente información para que se establezca el bit AD.
Por alguna razón, Ubuntu está configurado para usarlo como un servidor DNS y, de hecho, el único.
Un comentario sobre el error n.° 1624320 señala que systemd-resolved tiene tres modos de operación, y el segundo es el que solucionó mi problema. A saber:
$ sudo rm -f /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf