J'utilise Ubuntu 18.04 (mis à jour à partir d'une version antérieure) qui utilise Network Manager et résolu par systemd pour la résolution de noms. Au démarrage, ma connexion Ethernet enp0s31f6
est mis en place par Network Manager et reçoit trois adresses de serveur de noms via DHCP, 10.1.13.10
, 10.1.141.10
, 10.1.13.36
. Exécution de nmcli
affiche les trois serveurs de noms sous "Configuration DNS". Exécution de systemd-resolve --status
les affiche sous une section "Lien 2 (enp0s31f6)". Je peux envoyer un ping à 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 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 vers /run/resolvconf/resolv.conf
. Ce fichier contient uniquement (sans commentaires) :
nameserver 127.0.0.53
search (my orgs local search domain)
Si j'ajoute nameserver 10.1.13.10
à ce fichier manuellement, du coup dig
peut se résoudre à nouveau, et tout ce qui a besoin de voir les noms locaux peut le faire. La suppression du serveur de noms casse cela à nouveau.
Je ne connais pas grand chose aux serveurs. Ils font partie d'un réseau Windows, mais je peux les utiliser si je modifie resolv.conf
manuellement donc je ne pense pas que ce soit le problème, et cela implique que je n'ai pas besoin d'être authentifié auprès du domaine pour les utiliser. (Je peux m'authentifier sur le domaine via Ubuntu en utilisant Realmd/SSSD, mais pas si je ne peux pas résoudre le contrôleur de domaine...)
Le journalctl
entrées pour systemd-resolved
n'affichent que quelques messages sur "Utilisation d'un ensemble de fonctionnalités dégradées… pour le serveur DNS", mais ils ne font référence qu'au troisième serveur de noms, pas aux autres. Rien pour le serveur de noms principal.
Comment puis-je faire fonctionner la résolution de nom sans avoir à modifier manuellement resolv.conf
à chaque démarrage ?
J'assume le contenu de mon resolv.conf
signifie que Network Manager ou Systemd a une sorte de résolveur de mise en cache local en cours d'exécution ? Si oui, le contourner résoudrait-il les choses ?
J'ai augmenté le niveau de journalisation de systemd-resolved
et journalctl -f -u systemd-resolved
affiche :
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.
Réponse acceptée :
Systemd est livré avec un résolveur "stub", résolu par systemd, qui, selon eux, 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 exactement assez bon pour que les clients DNS de type libc puissent résoudre leurs problèmes, et nous transportons suffisamment d'informations pour que le bit AD soit défini.
Pour une raison quelconque, Ubuntu est configuré pour l'utiliser comme serveur DNS et, en fait, le seul.
Un commentaire sur le bogue # 1624320 indique que systemd-resolved a trois modes de fonctionnement, et le second est ce qui a résolu mon problème. A savoir :
$ sudo rm -f /etc/resolv.conf
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf