80 votes

Comment puis-je réparer la résolution DNS qui ne fonctionne pas après la mise à niveau vers Ubuntu 13.10 (Saucy) ?

Après la mise à jour vers la version 13.10, la résolution DNS échoue. Il semble que les serveurs DNS que je reçois par DHCP (LAN) ne sont pas utilisés.

J'ai pu résoudre temporairement le problème en ajoutant nameserver 8.8.8.8 à /etc/resolv.conf . Mais les hôtes intranet ne peuvent toujours pas être résolus.

En cliquant sur l'icône Informations sur la connexion de l'indicateur de réseau, le DNS primaire et le DNS secondaire sont correctement définis. Mais mon ordinateur semble ne pas les utiliser.

Donc mes questions :

  • Que dois-je mettre dans resolv.conf s'il y a lieu ?
  • Comment savoir quels serveurs de noms mon ordinateur interroge ?
  • Où chercher ensuite, pour savoir pourquoi les serveurs de noms reçus par DHCP ne sont pas utilisés ?

89voto

jdthood Points 11817

Tout d'abord, vous devez savoir comment fonctionne la résolution de noms dans Ubuntu depuis Ubuntu 12.04.

Stéphane Graber a publié sur son blog quelques informations à ce sujet l'année dernière aquí . La chose la plus importante à savoir est que Ubuntu Server et Ubuntu Desktop utilisent tous les deux resolvconf pour gérer les resolv.conf fichier. Cela signifie que vous ne devez plus modifier /etc/resolv.conf Vous devez plutôt configurer votre utilitaire de configuration d'interface réseau pour fournir les bonnes informations à resolvconf. Pour Ubuntu Server, l'utilitaire de configuration de l'interface réseau est le suivant ifup et il est configuré par le fichier /etc/network/interfaces . Pour Ubuntu Desktop, l'utilitaire de configuration de l'interface réseau est NetworkManager . C'est ce que vous utilisez.

NetworkManager est configuré au moyen de Indicateur de réseau > Modifier les connexions . Cependant, pour les interfaces réseau configurées par DHCP, il n'est normalement pas nécessaire de modifier les paramètres manuellement. Normalement, ce qui se passe est que le serveur DHCP (distant) fournit à NetworkManager à la fois une adresse IP pour l'interface locale et l'adresse d'un serveur de noms DNS (distant) à utiliser. NetworkManager démarre une instance d'un serveur de noms de redirection qui écoute localement à 127.0.1.1. Cette adresse, 127.0.1.1, est envoyée à resolvconf qui met nameserver 127.0.1.1 sur /etc/resolv.conf . NetworkManager donne également l'adresse IP (distante) du serveur de noms DNS fourni par DHCP au serveur de noms de redirection. Ainsi, un programme exécuté sur le système local demande au résolveur de traduire un nom d'hôte en une adresse IP ; le résolveur interroge le serveur de noms de redirection local à 127.0.1.1 ; le serveur de noms de redirection interroge le(s) serveur(s) de noms distant(s) dont il a été informé, reçoit une réponse et la renvoie en amont de la chaîne.

NetworkManager communique avec le processus de transfert du serveur de noms via D-Bus. Vous pouvez voir ce que NetworkManager a dit au serveur de noms de redirection en exécutant la commande suivante

nmcli dev list iface eth0 | grep IP4.DNS

Mise à jour découlant des commentaires :
Notez que resolvconf écrit en fait le fichier /run/resolvconf/resolv.conf à laquelle /etc/resolv.conf est censé être un lien symbolique. Si /etc/resolv.conf n'est pas un lien symbolique, vous devez le recréer. Pour ce faire, vous pouvez exécuter

sudo dpkg-reconfigure resolvconf

ou

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf

54voto

Richard Lindstedt Points 549

J'ai fait le changement suggéré sur le lien ci-dessous (désactivation de dnsmasq). Maintenant tout fonctionne parfaitement ! http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubuntu-12-04precise.html

Ouvrir /etc/NetworkManager/NetworkManager.conf fichier.

sudo gedit /etc/NetworkManager/NetworkManager.conf

Commenter la ligne comme :

#dnsmasq deactivated
#dns=dnsmasq

21voto

Henrique Points 677

EDIT 2 : Le message précédent a été supprimé à juste titre par la modération, je poste ce que j'ai trouvé comme solution. Désolé pour cela.

EDIT : Je viens de trouver la réponse et elle se trouve dans cette même page - désolé pour mon miopy. J'ai posté mes conclusions ci-dessous, en élargissant la réponse correcte de Richard Lindstedt trouvée dans cette page. J'ai laissé mon grondement précoce pour un peu de contexte. S'il vous plaît upvotez la réponse de Richard, il le mérite.

C'est en fait très facile.

ouvrez simplement votre fichier de conf d'interfaces --> sudo vi /etc/network/interfaces

Ça n'a pas aidé le PO et ça ne m'aide pas non plus maintenant. Nous ne voulons pas d'adresses statiques, nous voulons utiliser celles que le serveur DHCP nous envoie. NetworkManager semble les reconnaître, mais Ubuntu les ignore carrément :

# nmcli dev list iface wlan0 | grep IP4.DNS
IP4.DNS[1]:          10.*.*.*
IP4.DNS[2]:          10.*.*.*
IP4.DNS[3]:          8.8.8.8

Mais...

# dig microsoft.com
; <<>> DiG 9.9.5-4.3-Ubuntu <<>> microsoft.com
;; global options: cmd
;; connection timed out; no servers could be reached

Et mon /etc/network/interfaces est :

auto lo
iface lo inet loopback

ce qui est un peu étrange, je m'attendrais à ce que toutes les interfaces soient déclarées ici (ou est-ce que je rate quelque chose ?).

Donc, en résumé :

  • Je n'ai pas touché aux fichiers pour commencer.
  • J'ai déjà exécuté dpkg-reconfigure resolvconf
  • Le bon lien symbolique est en place
  • NetworkManager récupère les serveurs DNS corrects à partir du DHCP.
  • Ubuntu N'UTILISE PAS de telles adresses
  • La solution de contournement consiste à mettre le 8.8.8.8 fixe dans /etc/network/interfaces, ce que je ne veux pas.
  • Je veux utiliser les serveurs DNS fournis par le DHCP dans toutes les situations.

Je n'ouvre pas un autre fil de discussion car c'est exactement le même problème, sauf que je suis sur 14.10 maintenant (mais cela me tracasse depuis la mise à jour de 12.10 à 13.04).

SOLUTION

Cette dernière phrase m'a mis sur la bonne voie, et ce n'est qu'ensuite que j'ai remarqué la réponse de Richard.

Le problème semble être lié au conflit entre dnsmasq y resolvconf paquets. Jusqu'au 12.10, dnsmasq a été utilisé. À partir de la version 13.04, Ubuntu semble passer à un hybride dnsmasq/resolvconf, où vous avez installé les paquets dnsmasq-base y resolvconf mais pas dnsmasq lui-même.

Je ne peux pas dire si c'est un bogue dans la mise à niveau scripts pour 13.04 ou quelque chose d'autre, car lors de la mise à niveau (comme dans les installations fraîches), resolvconf est installé, dnsmasq-base est mis à niveau et dnsmasq est (correctement) désinstallé.

Le hic, c'est que la mise à niveau script ne commente pas l'option dns=dnsmasq ligne dans /etc/NetworkManager/NetworkManager.conf . Ainsi, même si le démon dnsmasq n'est plus présent sur le système, /etc/resolv.conf s'attend toujours à ce qu'il le soit.

8voto

sprut Points 97

C'est en fait très facile.

Ouvrez simplement le fichier de configuration de vos interfaces --> sudo vi /etc/network/interfaces

et sous votre interface (probablement eth0) vous verrez toute la configuration habituelle.

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1

Après la passerelle, ajoutez simplement 'dns-nameservers 8.8.8.8 8.8.8.9' ou tout autre serveur de noms que vous allez utiliser.

Donc votre configuration devrait être :

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1
dns-nameservers 8.8.8.8 8.8.8.9

puis faites simplement un 'sudo service networking restart' et vous êtes prêt à partir !

2voto

Daber Points 191

J'utilise Pop!OS mais je pense que ma solution pourrait être applicable aux utilisateurs d'ubuntu également. Pour moi, il y avait deux problèmes.

Le premier systemd-resolved n'était pas configuré pour utiliser mdns. Il faut donc l'activer en modifiant /etc/systemd/resolved.conf et l'option d'activation MulticastDNS=yes

après ce changement, systemd-resolved doit être redémarré.

systemctl restart systemd-resolved.service

Ensuite, vérifiez si la configuration a été mise à jour par systemd-resolve --status

Il aurait dû

Global LLMNR setting: no MulticastDNS setting: yes mais si vous vérifiez l'interface particulière, le multicast sera désactivé.

Current Scopes: none DefaultRoute setting: no LLMNR setting: yes MulticastDNS setting: no DNSOverTLS setting: no DNSSEC setting: no

Le problème est que l'activation de MulticastDNS ne peut pas être faite à partir du configurateur d'interface réseau de l'interface utilisateur (du moins le mien), vous devez donc faire une configuration en ligne de commande nmcli.

nmcli connection edit enp4s0

vous êtes intéressé par la propriété connection.mdns vous pouvez obtenir plus d'informations à ce sujet en

describe connection.mdns

donc set connection.mdns reslove (ou ce que vous préférez)

puis save persistent quit maintenant mdns devrait être opérationnel

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X