Sto eseguendo Ubuntu 18.04 (aggiornato da alcune versioni precedenti) che utilizza Network Manager e systemd-resolved per la risoluzione dei nomi. All'avvio, la mia connessione ethernet enp0s31f6
viene attivato da Network Manager e gli vengono assegnati tre indirizzi di nameserver tramite DHCP, 10.1.13.10
, 10.1.141.10
, 10.1.13.36
. Esecuzione di nmcli
mostra i tre nameserver sotto “Configurazione DNS”. Esecuzione di systemd-resolve --status
li mostra in una sezione "Link 2 (enp0s31f6)". Posso eseguire il ping di ciascuno. Nessun'altra connessione è attiva.
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)
Tuttavia, quando provo effettivamente a risolvere un nome, anche il nome di uno dei server dei nomi, dig
afferma che "connessione scaduta:nessun server può essere raggiunto".
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
Nota che questo nome dovrebbe risolversi in 10.1.13.10
, il primo server dei nomi.
Ho configurato resolvconf
per utilizzare gli aggiornamenti dinamici. /etc/resolv.conf
punta a /run/resolvconf/resolv.conf
. Questo file contiene solo (non commenti):
nameserver 127.0.0.53
search (my orgs local search domain)
Se aggiungo nameserver 10.1.13.10
a questo file manualmente, improvvisamente dig
può risolversi di nuovo e qualsiasi altra cosa che ha bisogno di vedere i nomi locali può farlo. La rimozione del server dei nomi lo interrompe di nuovo.
Non so molto sui server. Fanno parte di una rete basata su Windows, ma posso usarli se modifico resolv.conf
manualmente, quindi non penso che sia questo il problema e implica che non ho bisogno di essere autenticato nel dominio per usarli. (Posso autenticarmi al dominio tramite Ubuntu usando Realmd/SSSD, ma non se non riesco a risolvere il controller di dominio...)
Il journalctl
voci per systemd-resolved
mostrano solo alcuni messaggi su "Utilizzo di un set di funzionalità degradato... per il server DNS" ma si riferiscono solo al terzo server dei nomi, non agli altri. Niente per il server dei nomi principale.
Come posso far funzionare la risoluzione dei nomi senza dover modificare manualmente resolv.conf
ogni volta che avvio?
Presumo il contenuto del mio resolv.conf
significa che Network Manager o Systemd ha una sorta di risolutore di cache locale in esecuzione? In tal caso, bypassarlo risolverebbe le cose?
Ho aumentato il livello di registrazione di systemd-resolved
e journalctl -f -u systemd-resolved
mostra:
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.
Risposta accettata:
Systemd viene fornito con un risolutore "stub", risolto da systemd, che secondo loro non è effettivamente pensato per essere utilizzato come server DNS:
Bene, risolto non dovrebbe essere un server DNS, dovrebbe essere esattamente abbastanza buono in modo che i client DNS simili a libc possano risolvere le loro cose e portiamo abbastanza informazioni per impostare il bit AD.
Per qualsiasi motivo, Ubuntu è configurato per usarlo come server DNS e, di fatto, l'unico.
Un commento sul bug n. 1624320 sottolinea che systemd-resolved ha tre modalità operative e la seconda è ciò che ha risolto il mio problema. Vale a dire:
$ sudo rm -f /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf