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
?
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
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
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:
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
annuler le lien symbolique actuel vers /etc/resolv.conf
Sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
Sudo service systemd-resolved restart
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
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.
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.
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
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.