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:
- Dans quoi devrais-je mettre
resolv.conf
, le cas échéant? - Comment savoir quels serveurs de noms sont interrogés par mon ordinateur?
- Où chercher ensuite pour savoir pourquoi les serveurs de noms reçus par DHCP ne sont pas utilisés?
network-manager
Witek
la source
la source
Réponses:
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 blogué quelques informations sur 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
resolv.conf
fichier. Cela signifie que vous ne devriez plus éditer/etc/resolv.conf
directement; à 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é à l'aide de l' 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 met
nameserver 127.0.1.1
en/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
Mise à jour résultant des commentaires:
Notez que resolvconf écrit réellement le fichier
/run/resolvconf/resolv.conf
sur lequel/etc/resolv.conf
est supposé être un lien symbolique. Si ce/etc/resolv.conf
n'est pas un lien symbolique, vous devez le recréer. Pour ce faire, vous pouvez courirou
la source
sudo dpkg-reconfigure resolvconf
ou effectuermv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
sudo dpkg-reconfigure resolvconf
comme suggéré dans la dernière partie de la réponse.sudo dpkg-reconfigure resolveconf
semblait fonctionner parfaitement!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
Ouvrir le
/etc/NetworkManager/NetworkManager.conf
fichier.Commenter la ligne en tant que:
la source
sudo restart network-manager
.sudo /etc/init.d/network-manager restart
dns=default
à la[main]
section. NetworkManager a son propre plugin méchant Dnsmasq qu'il utilisera sinon.network-manager
-sudo service network-manager restart
EDIT 2: le post précédent a été supprimé à juste titre par la modération, je publie ce que j'ai trouvé être une solution. Désolé.
EDIT: Je viens de trouver la réponse et elle se trouve dans cette page même - désolé pour ma copie. J'ai posté mes résultats 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.
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:
Mais...
Et mon / etc / network / interfaces est:
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é au conflit
dnsmasq
et auxresolvconf
paquets. Jusqu'au 12.10, adnsmasq
été utilisé. À partir de 13.04, Ubuntu a semblé basculer vers un hybride dnsmasq / resolvconf, où vous avez installé les paquetagesdnsmasq-base
etresolvconf
pasdnsmasq
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 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, c'est que le script de mise à niveau ne parvient pas à commenter la
dns=dnsmasq
ligne/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.la source
dnsmasq
etdnsmasq-base
installé, NM mettra127.0.0.1
à la/etc/resolv.conf
place de127.0.1.1
. J'ai simplement désinstallédnsmasq
(et activé NM) et tout fonctionne très bien.sudo service network-manager restart
que cela prenne effet.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.
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:
Ensuite, faites un 'redémarrage du réseau de services sudo' et vous êtes prêt à partir!
la source