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

59

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

Je pourrais 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.

Lorsque vous cliquez sur l'élément de menu Informations de connexion sur l'indicateur de réseau, le DNS primaire et le DNS secondaire sont définis correctement. Mais mon ordinateur ne veut pas les utiliser.

Donc mes questions:

  • Que dois-je mettre dans resolv.conf , le cas échéant?
  • 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?
posée Witek 30.10.2013 - 11:56
la source

4 réponses

80

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 des informations l’année dernière ici . . La chose la plus importante à savoir est que Ubuntu Server et Ubuntu Desktop utilisent resolvconf pour gérer le fichier resolv.conf . Cela signifie que vous ne devez plus éditer directement /etc/resolv.conf ; Au lieu de cela, vous devez configurer votre utilitaire de configuration d'interface réseau pour fournir les informations correctes à resolvconf. Pour Ubuntu Server, l'utilitaire de configuration de l'interface réseau est ifup et 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 & gt; 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, le serveur DHCP (distant) fournit à NetworkManager 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 transfert qui écoute localement sur 127.0.1.1. Cette adresse, 127.0.1.1, est envoyée à resolvconf qui place nameserver 127.0.1.1 en /etc/resolv.conf . NetworkManager donne également l'adresse IP (distante) du serveur de noms DNS fourni par DHCP au serveur de noms de transfert. 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 transfert local à l'adresse 127.0.1.1; le serveur de noms de transmission interroge le ou les serveurs de noms distants dont il a été informé, reçoit une réponse et la renvoie à la chaîne.

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

nmcli dev list iface eth0 | grep IP4.DNS

Mise à jour découlant des commentaires:
Notez que resolvconf écrit réellement le fichier /run/resolvconf/resolv.conf auquel /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 courir

sudo dpkg-reconfigure resolvconf

ou

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf        
    
réponse donnée jdthood 31.10.2013 - 10:45
la source
47

J'ai fait le changement suggéré sur le lien ci-dessous (désactivation de Dnsmasq). Maintenant, tout fonctionne bien! lien

Ouvrez le fichier /etc/NetworkManager/NetworkManager.conf .

sudo gedit /etc/NetworkManager/NetworkManager.conf

Commentez la ligne en tant que:

#dnsmasq deactivated
#dns=dnsmasq
    
réponse donnée Richard Lindstedt 10.03.2014 - 19:37
la source
19

EDIT 2: Le message précédent a été supprimé à juste titre par la modération, je publie ce que j'estime être une solution. Désolé pour ça.

EDIT: Je viens de trouver la réponse et c'est dans cette page même - désolé pour ma copie. J'ai posté mes conclusions ci-dessous, développant la réponse correcte de Richard Lindstedt trouvée dans cette page. J'ai quitté mon grondement tôt pour un peu de contexte. S'il vous plaît, révélez la réponse de Richard, il le mérite.

  

C'est vraiment très facile.

     

ouvrez simplement le fichier conf de vos interfaces - & gt; sudo vi / etc / network / interfaces

Cela n'a certainement pas aidé le PO et ne m'aide pas 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 bizarre, je m'attendrais à ce que toutes les interfaces soient déclarées ici (ou est-ce que je manque quelque chose?).

Bref:

  • Je n'ai pas joué avec aucun fichier 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 de DHCP
  • Ubuntu n'utilise PAS de telles adresses
  • La solution consiste à placer le correctif 8.8.8.8 sur / etc / network / interfaces QUE JE NE VEUX PAS
  • Je souhaite utiliser les serveurs DNS fournis par DHCP dans toutes les situations.

Ne pas ouvrir un autre thread parce que c'est le problème exact, sauf que je suis sur 14.10 maintenant (mais cela me harcèle depuis la mise à niveau de 12.10 à 13.04).

SOLUTION

Cette dernière phrase m'a mis sur la bonne voie, et alors seulement j'ai remarqué la réponse de Richard.

Le problème semble être lié aux paquets dnsmasq et resolvconf en conflit. Jusqu'à 12h10, dnsmasq était utilisé. À partir de 13.04, Ubuntu semblait passer à un hybride dnsmasq / resolvconf, où vous avez installé les paquets dnsmasq-base et resolvconf , mais pas dnsmasq lui-même.

Je ne peux pas dire s'il s'agit d'un bogue dans les scripts de mise à niveau pour 13.04 ou autre, parce que resolvconf est installé (comme dans les nouvelles installations), dnsmasq-base est mis à jour et dnsmasq est (correctement) désinstallé. p>

Le verrou est que le script de mise à niveau ne parvient pas à commenter la ligne dns=dnsmasq dans /etc/NetworkManager/NetworkManager.conf . Donc, 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 soit.

    
réponse donnée Henrique 21.11.2014 - 19:01
la source
7

C'est vraiment très facile.

il suffit d'ouvrir votre fichier conf config  - & gt; sudo vi / etc / network / interfaces

et sous votre interface (probablement eth0), vous verrez toutes les configurations habituelles.

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 le serveur de noms que vous allez utiliser.

Votre configuration devrait donc ê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

alors juste faire un "redémarrage du réseau de service sudo" et vous êtes prêt à partir!

    
réponse donnée sprut 06.03.2014 - 19:36
la source

Lire d'autres questions sur les étiquettes