web-dev-qa-db-fra.com

Pourquoi dois-je ajouter des serveurs de noms à resolv.conf?

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.
3
detly

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
8
detly