Le DNS de systemd adoré à 127.0.0.53 semble fonctionner sauf lorsque je recherche des machines locales par nom. Mais si je les interroge et spécifie spécifiquement le serveur DNS local (mon routeur), j'obtiens la bonne réponse. 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 de configuration systemd-resolver
$ 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
Informations de configuration 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 retourner la bonne réponse? Le lien 3 semble être les informations correctes (ma connexion wifi) et mon DNS sur le routeur renvoie la bonne réponse mais le cache local n'essaie jamais de rechercher l'adresse (ou du moins il semble).
la source
nslookup -i wlp3s0 web1
Réponses:
Votre fichier resolv.conf ne pointait pas au mauvais endroit -
../run/systemd/resolve/stub-resolv.conf
c'est là qu'il est censé pointer par défaut.Le problème est que les
systemd-resolved
noms non pointés ne sont pas transmis au DNS. Apparemment, cela fonctionne "comme prévu". Voir ce problème de github qui déclare que «résolu 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 github, il existe un moyen de résoudre ce problème. Cela ne nécessite même pas de modifier la configuration par défaut de votre machine Ubuntu:
Tout d'abord, le DNS de votre LAN doit avoir un nom de domaine.
Si vous utilisez dnsmasq, ajoutez ce qui suit
/etc/dnsmasq.conf
sur votre serveur DNS:Vous devriez maintenant être en mesure de résoudre les noms d'hôtes LAN si vous ajoutez le domaine:
Ensuite, assurez-vous que le nom du domaine de votre LAN est également défini dans votre serveur DHCP s'il est différent de votre serveur DNS. Sur mon serveur DHCP (mon routeur), ce paramètre est simplement appelé "Nom de domaine".
Si vous renouvelez ensuite votre bail DHCP sur votre box Ubuntu, vous devriez voir une directive de recherche apparaître dans
/run/systemd/resolve/stub-resolv.conf
:Maintenant, la recherche
web1
le développeraweb1.your-domain
, ce qui résoudra ensuite en utilisant DNS.Notez que si vous utilisez
dig
au lieu denslookup
,dig
n'utilise pas le chemin de recherche par défaut - utilisez son+search
option pour l'activer.la source
/etc/resolv.conf
ou dans la sortie denmcli -g all
ousystemd-resolve --status
? Essayez peut-être de regarder ce qui est dans votre bail DHCP ?J'ai trouvé le correctif qui fonctionnait pour moi.
mon fichier resolv.conf pointait au mauvais endroit. Cela semble être un bug dans Ubuntu car il s'est produit sur mon ordinateur portable (la machine sur laquelle j'ai remarqué ce problème pour la première fois) et sur une nouvelle installation d'Ubuntu 18.04 Server.
Le défaut
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 pu changer de réseau sur mon ordinateur portable et le DNS a été commuté correctement. Bien sûr, lorsque je suis sur des réseaux externes, je ne peux résoudre aucune de mes machines locales, mais cela est attendu. Dès que je reviens à mon réseau local, toutes les machines locales se résolvent correctement car mon routeur est le DNS.
The Fix
Après cela, tout a fonctionné comme prévu et 127.0.0.53 n'est plus utilisé du tout.
Les bons résultats
la source
ubuntu-bug resolvconf
.systemd-resolve
est fourni par lesystemd
paquet , veuillez donc essayer à laubuntu-bug systemd
place.resolv.conf
est configuré de cette façon pour le DNS du réseau de docker bridge, non?