J'utilise Ubuntu 18.04 (mise à niveau depuis une version antérieure) qui utilise Network Manager et résolu par systemd pour la résolution de noms. Lorsque je démarre, ma connexion Ethernet enp0s31f6
est établie par Network Manager et trois adresses de serveur de noms lui sont attribuées via DHCP, 10.1.13.10
, 10.1.141.10
, 10.1.13.36
. Lancer nmcli
affiche les trois serveurs de noms sous "Configuration DNS". L'exécution de systemd-resolve --status
les affiche dans une section "Lien 2 (enp0s31f6)". Je peux cingler chacun. Aucune autre connexion n'est active.
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)
Cependant, lorsque j'essaie réellement de résoudre un nom, même le nom de l'un des serveurs de noms, Dig
affirme que "la connexion a expiré: aucun serveur n'a pu être atteint".
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
Notez que ce nom doit être résolu en 10.1.13.10
, le premier serveur de noms.
J'ai configuré resolvconf
pour utiliser les mises à jour dynamiques. /etc/resolv.conf
pointe sur /run/resolvconf/resolv.conf
. Ce fichier contient uniquement (non-commentaires):
nameserver 127.0.0.53
search (my orgs local search domain)
Si j'ajoute manuellement nameserver 10.1.13.10
à ce fichier, soudainement Dig
peut résoudre à nouveau et tout élément nécessitant l'affichage de noms locaux peut le faire. Supprimer le serveur de noms le casse à nouveau.
Je ne sais pas beaucoup sur les serveurs. Ils font partie d'un réseau Windows, mais je peux les utiliser si je modifie manuellement le resolv.conf
. Je ne pense donc pas que ce soit le problème. Cela implique que je n'ai pas besoin d'être authentifié auprès du domaine pour pouvoir les utiliser. (Je peux m'authentifier sur le domaine via Ubuntu à l'aide de Realmd/SSSD, mais pas si je ne parviens pas à résoudre le contrôleur de domaine ...)
Les entrées journalctl
pour systemd-resolved
affichent uniquement quelques messages concernant "Utilisation de l'ensemble de fonctionnalités dégradées ... pour le serveur DNS", mais elles ne font référence qu'au troisième serveur de noms, pas aux autres. Rien pour le serveur de noms primaire.
Comment faire fonctionner la résolution de nom sans avoir à modifier manuellement resolv.conf
à chaque démarrage?
Je suppose que le contenu de mon resolv.conf
signifie que Network Manager ou Systemd exécute une sorte de résolveur de mise en cache local? Si oui, le contourner serait-il régler le problème?
J'ai augmenté le niveau de journalisation de systemd-resolved
et journalctl -f -u systemd-resolved
indique:
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.
Systemd est livré avec un résolveur "stub", résolu par systemd, qui selon eux est n'est pas réellement destiné à être utilisé comme serveur DNS :
Eh bien, résolu n'est pas censé être un serveur DNS, il est censé être parfaitement suffisant pour permettre aux clients DNS de type libc de résoudre leurs problèmes, et nous transportons suffisamment d'informations pour que le bit AD soit défini.
Pour quelque raison que ce soit, Ubuntu est configuré pour l’utiliser en tant que serveur DNS et, en fait, le seul.
Un commentaire sur bug n ° 162432 indique que systemd-resolu a trois modes de fonctionnement, et le second est ce qui a résolu mon problème. À savoir:
$ Sudo rm -f /etc/resolv.conf
$ Sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf