Après la mise à niveau vers 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.
Je pourrais temporairement résoudre le problème en ajoutant nameserver 8.8.8.8
à /etc/resolv.conf
. Mais alors, 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 principal et le DNS secondaire sont correctement définis. Mais mon ordinateur semble ne pas les utiliser.
Donc mes questions:
resolv.conf
, le cas échéant?Tout d’abord, vous devez connaître un peu le fonctionnement de la résolution de noms sous Ubuntu depuis Ubuntu 12.04.
Stéphane Graber a publié sur son blog des informations à ce sujet 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 devriez plus éditer directement /etc/resolv.conf
; à la place, vous devez configurer votre utilitaire de configuration d'interface réseau pour fournir les informations appropriées à resolvconf. Pour Ubuntu Server, l'utilitaire de configuration de l'interface réseau est 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 manuellement les paramètres. Normalement, 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 transfert qui écoute localement en 127.0.1.1. Cette adresse, 127.0.1.1, est envoyée à resolvconf qui place nameserver 127.0.1.1
dans /etc/resolv.conf
. NetworkManager attribue é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 convertir un nom d'hôte en une adresse IP; le résolveur interroge le serveur de noms de transfert local en 127.0.1.1; le serveur de noms de transfert interroge le ou les serveurs de noms distants dont il a été informé, reçoit une réponse et la renvoie dans la chaîne.
NetworkManager communique avec le processus de serveur de noms de transfert via 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 résultant des commentaires:
Notez que resolvconf écrit le fichier /run/resolvconf/resolv.conf
dans lequel /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
J'ai apporté le changement suggéré sur le lien ci-dessous (en désactivant Dnsmasq). Maintenant tout fonctionne bien! http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubuntu-12-04precise.html
Ouvrez le fichier /etc/NetworkManager/NetworkManager.conf
.
Sudo gedit /etc/NetworkManager/NetworkManager.conf
Commentez la ligne en tant que:
#dnsmasq deactivated
#dns=dnsmasq
EDIT 2: le message précédent a été supprimé de manière légitime par la modération, je publie ce que j'ai trouvé être une solution. Désolé pour cela.
EDIT: Je viens de trouver la réponse et elle se trouve sur cette page même - désolé pour ma mini-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 début gronder pour un peu de contexte. S'il vous plaît upvote Richard réponse, il le mérite.
C'est vraiment très facile.
ouvrez simplement le fichier de configuration de vos interfaces -> Sudo vi/etc/network/interfaces
Cela n’a pas aidé le PO et ne m’aide pas pour le moment. 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 quelque chose me manque?).
Donc, en bref:
dpkg-reconfigure resolvconf
Ne pas ouvrir un autre thread car c'est le problème exact, sauf que je suis sur 14.10 maintenant (mais cela me harcelait depuis la mise à jour de 12.10 à 13.04).
SOLUTION
Cette dernière phrase m'a mis sur la bonne voie, et c'est alors seulement que j'ai remarqué la réponse de Richard.
Le problème semble être lié aux packages dnsmasq
et resolvconf
en conflit. Jusqu'au 12.10, dnsmasq
était utilisé. À partir de 13.04, Ubuntu a semblé basculer vers un hybride dnsmasq/resolvconf, dans lequel vous avez installé les paquets dnsmasq-base
et resolvconf
, mais pas dnsmasq
.
Je ne peux pas dire s'il s'agit d'un bogue dans les scripts de mise à niveau pour 13.04 ou autre chose, car lors de la mise à niveau (comme dans les nouvelles installations), resolvconf est installé, dnsmasq-base est mis à niveau et dnsmasq est (correctement) désinstallé.
Le problème est que le script de mise à niveau ne parvient pas à commenter la ligne dns=dnsmasq
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’y attend toujours.
C'est vraiment 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 le serveur de noms de votre choix.
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
il vous suffit ensuite de faire un "redémarrage du réseau de service Sudo" et vous êtes prêt à partir!