web-dev-qa-db-fra.com

Devrais-je modifier mon fichier resolv.conf pour résoudre le problème de DNS incorrect?

J'ai le problème que ma machine Ubuntu utilise le mauvais serveur DNS. Pour une raison quelconque, la machine interroge localhost pour obtenir des informations DNS.

J'ai ajouté le serveur DNS dans l'interface graphique des paramètres réseau, mais /etc/resolv.conf contient toujours 127.0.0.1 en tant qu'adresse du serveur DNS. Maintenant, je pensais pouvoir éditer le fichier moi-même, mais cela dit explicitement que je ne devrais pas éditer le fichier à la main.

Maintenant, puisque l'interface graphique des paramètres réseau n'a pas généré le fichier avec les paramètres appropriés, comment puis-je générer un nouveau fichier resolv.conf par moi-même?

35
Ahatius

Aucune des réponses publiées jusqu’à présent n’est l’apparence que le questionneur ne comprend pas qu’avoir nameserver 127.0.0.1 dans /etc/resolv.conf est correct, en supposant qu’un serveur de noms local est en cours d’exécution. Et dans Ubuntu 12.04 Desktop, il existe par défaut un serveur de noms local en cours d’exécution, à savoir un processus dnsmasq contrôlé par NetworkManager qui écoute sur 127.0.0.1. Dans Ubuntu 12.10, l'adresse d'écoute a été changée en 127.0.1.1.

La solution consiste donc à ne modifier aucunement resolv.conf. C'est correct, en supposant que l'interrogateur veuille utiliser le serveur de noms local.

Si le service de noms ne fonctionne pas, le serveur de noms local ne reçoit pas les adresses de transfert correctes, ou il existe un autre problème de réseau.

L'interrogateur a essayé d'utiliser "l'interface graphique des paramètres réseau" pour "générer le fichier avec les bons paramètres" et cela n'a pas fonctionné. Je ne sais pas exactement ce que cela signifie, mais voici la bonne façon de saisir les adresses de serveurs de noms afin qu'elles se retrouvent dans resolv.conf au bon moment. Je suppose que le questionneur utilise NetworkManager et non ifup pour configurer les interfaces.

Le plus souvent, les interfaces sont configurées à l'aide du protocole DHCP. Dans ce cas, rien ne doit être configuré sur le système local. Le serveur DHCP sait quelle adresse de serveur de noms ses clients doivent utiliser et envoie ces informations au client DHCP, qui les envoie à NetworkManager, qui les envoie à resolvconf, qui les place dans resolv.conf. Donc, dans ce cas, c'est le serveur DHCP qui peut avoir besoin d'être configuré.

Si l'interface réseau de la machine locale est configurée de manière statique, vous devez entrer les adresses correctes du serveur de noms dans NetworkManager, par exemple, indicateur de réseau | Modifier les connexions ... | Sans fil | ma connexion | Modifier ... | Paramètres IPv4 | Serveurs DNS supplémentaires.

Il est possible que le serveur de noms local ne fonctionne pas correctement. Dans ce cas, le questionneur doit éditer /etc/NetworkManager/NetworkManager.conf

Sudo gedit /etc/NetworkManager/NetworkManager.conf

et commenter la ligne

dns=dnsmasq

dans la section "[main]". Pour commenter la ligne, mettez un # au début de la ligne, puis enregistrez le fichier. Puis redémarrez network-manager.

Sudo restart network-manager

Après cela, les adresses de serveur de noms non locales seront entrées dans resolv.conf au lieu de l'adresse 127. *.

Si le questionneur utilise ifup plutôt que NetworkManager pour configurer les interfaces réseau, alors la réponse de jmartin2279 est correct: vous devez ajouter les adresses de serveur de noms à/etc/network/interfaces de la manière décrite par jmartin2279.

Contrairement à ce que suggèrent d’autres réponses, vous devriez généralement ne pas ajouter nameserver, domain ou search options aux fichiers de /etc/resolvconf/resolv.conf.d/. Voir mes commentaires sur ces réponses.

40
jdthood

Si vous utilisez ifup pour configurer l'interface de manière statique, vous pouvez l'ajouter au fichier/etc/network/interfaces.

Ouvrez un terminal et tapez:

Sudo gedit /etc/network/interface*

Vous devriez voir quelque chose comme:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Modifier pour:

auto eth0
iface eth1 inet static
address 192.168.1.10 
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8

en utilisant vos propres informations de réseau. Cela vous permettra de définir le DNS. vous pouvez utiliser plusieurs serveurs DNS ici:

dns-nameservers 8.8.8.8 8.8.4.4

Après cela, lancez

ifdown eth0
ifup eth0
18
jmartin2279

Dans Ubuntu 12.04, le traitement de resolv.conf a changé.

Si vous souhaitez ajouter votre propre adresse de serveur de noms, éditez le fichier /etc/resolvconf/resolv.conf.d/(head

Sudo nano /etc/resolvconf/resolv.conf.d/head

et ajoutez-y votre serveur de noms (par exemple: Google open dns)

nameserver 8.8.8.8

sauvegardez le fichier puis exécutez

Sudo resolvconf -u

Pas de redémarrage ou autre chose. Peut-être aurez-vous besoin de redémarrer Network-Manager

Sudo service network-manager restart

Terminé.

Vous pouvez le tester avec la commande

nslookup www.google.com

Le résultat doit être similaire à

Server: 8.8.8.8
Address: 8.8.8.8#53
11
NickTux

Pour ajouter d'autres entrées à /etc/resolv.conf, créez un fichier /etc/resolvconf/resolv.conf.d/tail et ajoutez-les à cet endroit.

Mais si /etc/resolv.conf contient 127.0.0.1, l'ajout d'entrées à /etc/resolvconf/resolv.conf.d/tail ne changera rien. Vous devez définir vos adresses de serveur DNS de manière statique dans NetworkManager, qui les enverra à Dnsmasq, qui les écoute sur 127.0.0.1.

La configuration DNS pour une interface statique doit comporter les entrées "dns-nameservers", "dns-search" et "dns-domain" ajoutées à la strophe iface appropriée dans /etc/network/interfaces.

Lisez this pour plus d'informations.

`De plus:

Vous pouvez installer un outil graphique nommé gnome-network-admin qui définira votre DNS. Essayez le:

Sudo apt-get install gnome-network-admin
1
user61928