web-dev-qa-db-fra.com

Mauvais serveur de noms défini par resolvconf et NetworkManager

Mon serveur DNS est 192.168.1.152.

Ce DNS est fourni aux clients par DHCP. Les clients Windows sur mon réseau local résolvent les noms correctement à l'aide de ce DNS, mais mon Ubuntu VM ne le fait pas.

La VM est configurée avec le réseau de pont et fournit correctement le serveur DNS, mais mes noms d'hôte locaux ne sont pas résolus par nslookup ou les navigateurs.

Voici un nslookup de l'un de mes domaines locaux:

# nslookup unraid.local
Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find unraid.local: SERVFAIL

Voici ce qu'il faut résoudre en utilisant mon serveur DNS:

# nslookup unraid.local 192.168.1.152
Server:     192.168.1.152
Address:    192.168.1.152#53

Name:   unraid.local
Address: 192.168.1.152

/etc/resolv.conf a un serveur de noms incorrect:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53

J'ai couru cette commande. Sous Serveurs DNS, il est difficile de spécifier le bon serveur (et ma passerelle par défaut).

root@ubuntu:~# 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 2 (ens33)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.152
                      192.168.1.1

Je ne veux pas "coder en dur" l'adresse IP du serveur DNS dans un fichier de configuration car je ne pourrai pas résoudre le problème lorsque je changerai de réseau.

Comment puis-je obtenir resolvconf et NetworkManager pour automatiquement définir l'adresse IP du serveur DHCP dans /etc/resolv.conf?

26
FireSpore

Essayez d’éditer /etc/systemd/resolved.conf, en ajoutant le serveur DNS souhaité:

change ça:

[Resolve]
#DNS=

à ceci (mais utilisez celui que vous voulez - ceci est un exemple):

[Resolve]
DNS=192.168.1.152

après cela, redémarrez le service:

service systemd-resolved restart

Et quand vous vérifiez le statut, vous devriez voir

$ systemd-resolve --status
Global
         DNS Servers: 192.168.1.152

      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
30
Leandro Noskoski

Bug connu systemd .

Solution temporaire sans qu'il soit nécessaire de reconfigurer si l'IP du DNS change:

Sudo rm -f /etc/resolv.conf
Sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
reboot
28
teknopaul

J'ai finalement obtenu une solution à ce problème pour Ubuntu 17.10. Par défaut, cette version d'Ubuntu utilise systemd-resolved, ce qui, j'espère, sera stable pour les prochaines versions.

Pour utiliser des DNS personnalisés à la place du cache local résolu par systemd, procédez comme suit:

  1. ajouter de nouveaux serveurs de noms. Editez le fichier dans /etc/systemd/resolved.conf en tant que sudoer. Ici, j'ai commenté l'entrée DNS et placé mon DNS [Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4

  2. annuler le lien symbolique actuel vers /etc/resolv.conf

  3. créer un nouveau lien symbolique Sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. redémarrer le service Sudo service systemd-resolved restart
  5. redémarrez le gestionnaire de réseau Sudo systemctl restart networking

Et maintenant, si vous creusez un nom fourni par votre add DNS, vous devriez voir l’enregistrement résolu Dig nexus.default.svc.cluster.mydomain

La dernière étape consiste à mettre à jour l’ordre de résolution dans /etc/nsswitch.conf, en plaçant le DNS avant le mdns4_minimal.

hosts           files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] myhostname
6
Fabio Fumarola

La solution qui a fonctionné pour moi est publiée ici sur mon blog

Utilisez nano editor pour éditer ces 2 fichiers

nano /etc/resolv.conf
nano /etc/resolvconf/resolv.conf.d/head

Ajouter les serveurs DNS que vous souhaitez utiliser

nameserver 9.9.9.9
nameserver 127.0.0.1

Puis redémarrez le service

service systemd-resolved restart

Vérification finale:

cat /etc/resolv.conf

Faire nslookup

nslookup google.com 

je viens de l'utiliser et cela a résolu le problème sur mon ordinateur portable à la maison, mais quelque temps dans l'avenir, quand je serai hors de mon réseau domestique, je peux voir que cela causera des problèmes, car le serveur DNS principal et secondaire sera toujours mon domicile. serveurs avec leurs adresses LAN.

1
ookangzheng

Votre /etc/resolv.conf n'est pas le problème. systemd-resolved est par défaut non configuré, ce qui entraîne l'échec de toutes les recherches. N'hésitez pas à vous plaindre de non configuré contre un défaut raisonnable.

Ajoutez manuellement des serveurs de noms à systemd-resolved. (éditer ci-dessous le commentaire de Olorin pour ajouter mkdir, chemin correct /etc et non /lib, afin de survivre aux mises à jour du système)

Sudo mkdir -p /etc/systemd/resolved.conf.d
Sudo nano /etc/systemd/resolved.conf.d/00-my-dns-server-is.conf

Ajouter:

[Resolved]
Cache=yes
DNS=192.168.1.152

Ensuite...

Sudo systemctl daemon-reload

systemd-resolved est intelligent, mais, non configuré en tant que tel, par les responsables de paquets, il semble stupide, car les responsables de paquets ne croient pas en un défaut raisonnable. Nous pouvons y placer 13 serveurs racine Internet "alias djb way", ou 10 serveurs open source: https://Pastebin.com/JBfYVVtG ou les trois serveurs open space les plus rapides, tels que mesurés par namebench. Plus les serveurs de noms ISP, bien sûr. Plus Google, bien sûr. systemd-resolved n'est pas le problème. Je suis le problème.

1
BobDodds

J'ai mis en place un script qui résout le problème de Netplan ne prenant pas en charge la possibilité de remplacer les serveurs DNS fournis par DHCP et l'ordre de recherche de domaine. Il crée le fichier Netplan yaml et configure systemd-resol pour fonctionner comme prévu.

################## Start Netplan config (renderer: NetworkManager)
#  Some useful commands for customisation
# NetConn=$(nmcli device show|grep GENERAL.CONNECTION|head -n1|awk '{print $2}')
# IP=$(nmcli device show|grep IP4.ADDRESS|head -n1|awk '{print $2}')
# GATEWAY=$(nmcli device show|grep IP4.GATEWAY|head -n1|awk '{print $2}')
# sed -i 's/renderer: networkd/renderer: NetworkManager/' //etc/netplan/01-netcfg.yaml
######################################
systemctl start NetworkManager
NIC=$(nmcli device show|grep GENERAL.DEVICE|head -n1|awk '{print $2}')

#####   create Netplan yaml config file
cat >/etc/netplan/01-netcfg.yaml <<EOF 
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
  network:
   version: 2
   renderer: NetworkManager
   ethernets:
EOF
echo "    ${NIC}:" >> /etc/netplan/01-netcfg.yaml
cat >>/etc/netplan/01-netcfg.yaml <<EOF
      dhcp4: yes
      nameservers:
        search: [abc.domain.edu, def.domain.edu]
        addresses: [10.10.11.22, 10.10.11.23]

EOF

#work around DNS resolv bug
systemctl stop systemd-resolved
sed -i 's/#DNS=/DNS=10.10.11.22 10.10.11.23/' /etc/systemd/resolved.conf
sed -i 's/#Domains=/Domains=abc.domain.edu def.domain.edu' /etc/systemd/resolved.conf
systemctl start systemd-resolved
systemctl restart NetworkManager
netplan apply
reboot
############### End Netplan Config
1
Wildstalker

J'ai trouvé un lien symbolique incorrect sur mon système: /etc/resolv.conf était un lien symbolique pointant vers /run/systemd/resolve/stub-resolv.conf

Ce fichier contient une seule ligne:

nameserver 127.0.0.53#53

En conséquence, la recherche DNS du réseau local était souvent manquante.

Donc, au lieu de cela, j'ai changé /etc/reolv.conf pour qu'il pointe sur /run/systemd/resolve/resolv.conf

et fonctionne maintenant correctement.

0
Bánó Gábor