web-dev-qa-db-fra.com

DNS à 127.0.0.53 de systemd ignore certaines recherches

Le DNS de systemd adoré à 127.0.0.53 semble fonctionner sauf lorsque je demande des noms de machines locales. Mais si je leur demande et spécifie spécifiquement le serveur DNS local (mon routeur), je reçois la réponse appropriée. Mais le fichier de configuration indique qu'il utilise également le routeur comme adresse de recherche. Des pensées?

J'utilise Ubuntu 18.04 sur mon ordinateur portable Dell.

Résultats incorrects:

$ nslookup web1

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find web1: SERVFAIL

échoue également

$ nslookup -i wlp3s0 web1
nslookup: couldn't get address for 'web1': not found

résultats corrects:

$ nslookup web1 192.168.1.1

Server:     192.168.1.1
Address:    192.168.1.1#53

Name:   web1
Address: 192.168.1.107

Informations sur la configuration systemd-resolution

$ systemd-resolve --status

Global
          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 (wlp3s0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.1
          DNS Domain: wp.comcast.net

Link 2 (enp2s0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Configuration Info NetworkManager

$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-Rand-mac-address=no

Alors, comment puis-je obtenir nslookup pour renvoyer la réponse correcte? Le lien 3 semble être la bonne information (ma connexion wifi) et mon DNS sur le routeur renvoie la bonne réponse, mais le cache local n'essaie jamais de chercher l'adresse (ou semble-t-il).

13
schworak

Votre fichier resolv.conf ne pointait pas au mauvais endroit - ../run/systemd/resolve/stub-resolv.conf est là où il est censé pointer par défaut.

Le problème est que systemd-resolved ne transmet pas les noms non en point sur DNS. Apparemment, cela fonctionne "comme prévu". Voir ce problème de github qui indique que "la résolution ne permettra jamais aux recherches en une seule étiquette de fuir sur le DNS unicast".

Que vous soyez d'accord ou non avec le raisonnement de cette question de github, voici un moyen de résoudre ce problème . Il n'est même pas nécessaire de modifier la configuration par défaut sur votre machine Ubuntu:

  1. Tout d'abord, le DNS de votre réseau local doit avoir un nom de domaine.

    Si vous utilisez dnsmasq, ajoutez ce qui suit à /etc/dnsmasq.conf sur votre serveur DNS:

    expand-hosts
    domain=your-domain # replace "your-domain" with domain of your choice
    

    Vous devriez maintenant pouvoir résoudre les noms d’hôte LAN si vous ajoutez le domaine:

    nslookup web1.your-domain
    
  2. Deuxièmement, assurez-vous que le nom du domaine de votre réseau local est également défini sur votre serveur DHCP s'il est différent de votre serveur DNS. Sur mon serveur DHCP (mon routeur), ce paramètre s’appelle simplement "Nom de domaine".

    Si vous renouvelez ensuite votre bail DHCP sur votre machine Ubuntu, vous devriez voir une directive de recherche apparaître dans /run/systemd/resolve/stub-resolv.conf:

    nameserver 127.0.0.53
    search your-domain
    

Rechercher maintenant web1 le développera à web1.your-domain, ce qui résoudra ensuite à l'aide de DNS.

$ nslookup web1
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   web1.your-domain
Address: 192.168.1.107

Notez que si vous utilisez Digau lieu de nslookupname__, Dign'utilise pas le chemin de recherche par défaut - utilisez son option +search pour l'activer.

8
Laurence Gonsalves

J'ai trouvé le correctif qui a fonctionné pour moi.

mon fichier resolv.conf pointait au mauvais endroit. Cela ressemble à un bogue dans Ubuntu tel qu’il s’est produit sur mon ordinateur portable (la machine sur laquelle j’ai le premier remarqué ce problème) et lors d’une nouvelle installation du serveur Ubuntu 18.04.

Le défaut

$ ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 39 Apr 26 12:07 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

J'ai supprimé cela et pointé vers le bon fichier. Après le redémarrage, cela a résolu mon problème. Et j'ai même été capable de changer de réseau sur mon ordinateur portable et le DNS a basculé correctement. Bien sûr, lorsque sur des réseaux externes, je ne peux résoudre aucun de mes ordinateurs locaux, mais cela est à prévoir. Dès que je repasse sur mon réseau local, toutes les machines locales sont résolues correctement car mon routeur est le DNS.

Le correctif

$ Sudo rm -f /etc/resolv.conf
$ Sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
$ ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 32 May 29 08:48 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf

$ Sudo reboot

Après cela, tout a fonctionné comme prévu et 127.0.0.53 n’est plus utilisé du tout.

Les résultats corrects

$ nslookup web1

Server:     192.168.1.1
Address:    192.168.1.1#53

Name:   web1
Address: 192.168.1.107

$ nslookup google.com

Server:     192.168.1.1
Address:    192.168.1.1#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.7.174
Name:   google.com
Address: 2607:f8b0:4004:80e::200e
13
schworak