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

35

J'ai le problème que ma machine Ubuntu utilise le mauvais serveur DNS. Pour une raison quelconque, la machine demande localhostdes informations DNS.

J'ai ajouté le serveur DNS dans l'interface graphique des paramètres réseau, mais /etc/resolv.confcontient toujours 127.0.0.1l'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 manuellement.

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

Ahatius
la source
1
Si vous utilisez Ubuntu Server 12.04 LTS, accordez -vous une grande faveur et éditez le fichier /etc/resolvconf/resolv.conf.d/head directement, comme vous le souhaitez votre ancien fichier resolv.conf. Je n'avais que des problèmes de résolution jusqu'à ce que je le force brutalement.
askubuntu.com/questions/157154/… peut-être une question connexe.
Ehtesh Choudhury

Réponses:

40

Ce qu'aucun des réponses affiché jusqu'à présent adresses est l'impression que l'interlocuteur ne comprend pas que d' avoir nameserver 127.0.0.1en /etc/resolv.confest correcte, 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 dnsmasqprocessus contrôlé par NetworkManager à l’écoute 127.0.0.1. Dans Ubuntu 12.10, l'adresse d'écoute a été modifiée en 127.0.1.1.

La solution consiste donc à ne pas apporter de modifications à 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 resolv.confau bon moment. Je suppose que le questionneur utilise NetworkManageret non ifuppas configurer des 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 y insère les informations 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, des adresses de serveur de noms non locales seront entrées à la resolv.confplace de l'adresse 127. *.

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

Contrairement à ce que d'autres réponses conseillent, en général , vous devriez ne pas ajouter nameserver, domainou des searchoptions aux fichiers /etc/resolvconf/resolv.conf.d/. Voir mes commentaires sur ces réponses.

jdthood
la source
1
"Le serveur DHCP sait quelle adresse de serveur de noms ses clients doivent utiliser" - Sauf si vous n'avez aucun contrôle sur le serveur DHCP (pensez aux points d'accès Wi-Fi publics) et souhaitez remplacer le serveur de noms utilisé ... Définition de la même configuration pour chaque connexion base - encore et encore pour chaque point d'accès WiFi auquel vous vous connectez - n'est pas la solution.
Teoh Han Hui
Il semble que j'ai besoin d'exécuter dhclientpour que les modifications (les nameserverlignes) arrivent enfin etc/resolv.conf. Je diffuse un live personnalisé de Xubuntu 14.04 (c'est peut-être la raison).
Sopalajo de Arrierez
Quels pourraient être les inconvénients de la désactivation de DNSMasq, jdthood? Bien sûr, la résolution de nom et Internet semblent fonctionner correctement après l’avoir fait.
Sopalajo de Arrierez
Voir bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1003842 , par exemple, mon commentaire n ° 60.
jdthood
Mon resolv.conf ne cesse de changer, 127.0.0.1malgré que mon gestionnaire de réseau ait d'autres serveurs de noms + dnsmasq en train d'être commentés + redémarré + dnsmasq tué (car il est toujours démarré) + réseau redémarré: /
un utilisateur
17

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
jmartin2279
la source
Si c'est votre cas, voici la solution: "Si vous utilisez ifup pour configurer l'interface de manière statique ..."
angelcervera
Avez-vous même testé cela? ifdown: interface eth0 not configured
Cerin
3
si vous êtes connecté via ssh, vous ne pouvez pas utiliser ifdown / ifup. utilisez plutôtsudo /etc/init.d/networking restart
TD_Nijboer
11

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
NickTux
la source
4
Ajouter une ligne "nameserver" à /etc/resolvconf/resolv.conf.d/head peut fonctionner comme un piratage rapide, mais ce n'est pas la solution correcte à tout problème. Cela permet au résolveur d'utiliser cette adresse de serveur de noms dans toutes les circonstances, alors que les serveurs de noms à utiliser dépendent des circonstances. Par exemple, si vous êtes connecté à un réseau local (peut-être via un réseau privé virtuel), vous souhaitez généralement utiliser les serveurs de noms de réseau local afin de pouvoir résoudre les noms privés sur le réseau local. Et dans le cas présent, le système semble exécuter un serveur de noms en cache local, mais l'ajout de "serveur de noms 8.8.8.8" le contourne simplement.
Jdthood
@ jdthood - Vous avez signalé un problème. Vous souhaitez apporter une solution?
TJ Biddle
@TJ J'ai déjà posté une réponse à la question principale ("Comment modifier mon fichier resolv.conf?") Si c'est ce que vous voulez dire.
jeudi
1
S'il vous plaît ne recommande pas cela. Au très haut du fichier, « NE PAS MODIFIER LA MAIN FICHIER - vos modifications ECRASEES ».
Cerin le
Je tiens à souligner que la modification de /etc/resolv.conf écrase manuellement les modifications apportées au redémarrage. Toutefois, la modification manuelle de /etc/resolvconf/resolv.conf.d/head NE remplace PAS les modifications apportées au redémarrage, l’installation de resolvconf qui explique probablement pourquoi l’avertissement est présent.
Ken
1

Pour ajouter d'autres entrées à /etc/resolv.conf, créez un /etc/resolvconf/resolv.conf.d/tailfichier et ajoutez-les là.

Mais si /etc/resolv.confcontient 127.0.0.1, alors ajouter des entrées à /etc/resolvconf/resolv.conf.d/tailne changera rien. Vous devez définir vos adresses de serveur DNS de manière statique dans NetworkManager, qui les enverra à Dnsmasq qui les écoute 127.0.0.1.

La configuration DNS pour une interface statique doit se présenter sous la forme d' entrées “ dns-nameservers”, “ dns-search” et “ dns-domain” ajoutées à la strophe iface appropriée dans/etc/network/interfaces

Lisez ceci pour plus d'informations.

`En outre:

Vous pouvez installer un outil graphique nommé gnome-network-admindéfinissant votre DNS. Essayez le:

sudo apt-get install gnome-network-admin
Kevin Bowen
la source
3
(1) Non, n’ajoutez pas d’option "nameserver" à /etc/resolvconf/resolv.conf.d/tail. Cela est inefficace (parce que les autres options du "serveur de noms" ont priorité) et suboptimal (parce que c'est une configuration statique alors que la configuration devrait refléter les circonstances du réseau). (2) Non, n'utilisez pas gnome-network-admin. Cela ne fonctionne pas correctement avec resolvconf. Voir le bogue n ° 60518 ( bugs.launchpad.net/ubuntu/+source/gnome-system-tools/+bug/60518 ).
jeudi