web-dev-qa-db-fra.com

Comment ajouter un serveur DNS via resolv.conf?

/etc/resolv.conf est-il inutile dans buntu 12.04 LTS (Pangolin précis)?

Je vois que les informations du serveur DNS sont stockées dans NetworkManager maintenant. L'outil en ligne de commande nmcli peut vous en fournir la liste.

Si je veux ajouter un serveur DNS supplémentaire, l'ajouter à /etc/resolv.conf à l'aide de l'aide du package resolvconf?

204
PnotNP

Si /etc/resolv.conf contient nameserver 127.0.0.1, l'ajout d'entrées à /etc/resolvconf/resolv.conf.d/tail ne fera vraiment rien d'utile.

Si vous utilisez NetworkManager, vous devez plutôt ajouter de manière statique les adresses de serveurs de noms via indicateur de réseau : Modifier les connexions ... | Modifier ... | Paramètres IPv4 | Serveurs DNS supplémentaires .

Si vous voulez vraiment ajouter d'autres entrées à /etc/resolv.conf, créez un /etc/resolvconf/resolv.conf.d/tail et ajoutez-les là.

Comme avec toutes les versions d'Ubuntu, il est recommandé de lire les Notes de publication d'Ubuntu, disponibles ici:

Les sections Desktop et Common Infrastructure contiennent un lien vers

137
stgraber

J'ai trouvé une autre approche ici qui implique l'ajout d'une ligne comme celle ci-dessous à /etc/dhcp/dhclient.conf:

prepend domain-name-servers x.x.x.x, y.y.y.y;

De même, j'ai trouvé une troisième approche ici qui consiste à ajouter des lignes à /etc/network/interfaces:

auto eth0
iface eth0 inet static
    . . .
    dns-nameservers 8.8.8.8 8.8.4.4

Mise à jour: Voici le documentation officielle pour la troisième approche.

134
Randall Cook

On dirait que vous parlez du paquet resolvconf.

Installez le package resolvconf .

Courir

cd /etc/resolvconf/resolv.conf.d
Sudo cp -p head head.orig  #backup copy, always do this
Sudo nano head

Le haut du fichier est un avertissement effrayant. Le fichier /etc/resolv.conf est généré automatiquement à partir du contenu de ce fichier; l'avertissement est là pour qu'il soit placé dans /etc/resolv.conf lorsque /etc/resolv.conf est généré. A la fin du fichier, ajoutez

nameserver <ip_of_nameserver>

Presse Ctrlx et répondez oui à l'enregistrement du fichier. Pour finir, régénérez /etc/resolv.conf pour que les modifications soient appliquées maintenant:

Sudo resolvconf -u

Vérifiez ensuite le contenu de /etc/resolv.conf pour voir si la ligne que vous avez ajoutée est maintenant là. En outre, il sera toujours présent au prochain démarrage de votre machine ou de votre service réseau, selon la première éventualité.

89
Azendale

Ci-dessous, je vais vous montrer le meilleur moyen que j'ai trouvé depuis que je lance Ubuntu Server Edition et utilise ifup plutôt que NetworkManager.

En fait, pour moi, ils ont rendu cela plus facile :) en mettant tout cela dans le fichier/etc/network/interfaces. Les mêmes configurations que celles que vous auriez écrites dans resolv.conf peuvent désormais figurer dans le même fichier que les configurations de votre carte réseau, comme dans l'exemple ci-dessous:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 75.75.75.75 75.75.76.76
        dns-search local

J'espère que cela m'aidera et que cela me facilitera la tâche. Maintenant, nous pouvons créer des adresses IP statiques et ajouter des serveurs de noms et des domaines DNS dans un seul fichier :)

31
Joseph Mituzas

Le mien utilise Ubuntu Server 12.04. J'ai apporté les modifications suivantes et redémarré le serveur (en général, cela ne peut se faire qu'en supprimant l'interface réseau, c'est-à-dire ifdown eth0 ou ifup eth0).

Dans le fichier /etc/resolvconf/resolv.conf.d/base j'ai ajouté les entrées suivantes:

nameserver 8.8.8.8
nameserver 8.8.4.4

J'espère que ce qui précède aide!

18
Don Chai

Vous pouvez utiliser NetworkManager comme indiqué dans la réponse de Frank, mais si vous préférez modifier manuellement /etc/resolv.conf, vous pouvez le supprimer en le supprimant (il s'agit en fait d'un lien symbolique), puis en créant un nouveau fichier brut avec le contenu souhaité. L'utilitaire resolvconf écrit uniquement dans le fichier /run/resolvconf/resolv.conf.

12
Jase

Remarque: cette réponse s’appliquait à une version de la question antérieure à la fusion, assez différente, et se concentrait uniquement sur le serveur de noms souhaité.

Cela fonctionne avant 12.04:

Éditez /etc/dhcp3/dhclient.conf et ajoutez:
prepend domain-name-servers 127.0.0.1;

(En fait, cette ligne est déjà présente; tout ce que vous avez à faire est de la commenter.)

9
belacqua

resolvconf est inutile. Je suis sur un serveur Linux et mon adresse IP est statique et mes DNS sont statiques. Je n'ai pas besoin de resolvconf ou NetworkManager .

Ma politique est de garder les choses simples lorsque je travaille sur un serveur. Moins il y a de complexité, plus il sera facile de gérer/corriger les problèmes.

J'ai donc fait aptitude purge resolvconf et je me suis assuré manuellement que /etc/resolv.conf n'est pas un lien symbolique et je viens de créer un fichier statique. Juste au cas où un programme essaie de changer le fichier, j'ai chattr +i (immuable) en /etc/resolv.conf par précaution.

7
Mark

La plupart de ce qui précède suppose que vous avez un système vierge, mais la réalité est souvent telle que vous avez déjà installé différents clients DHCP, désactivé le gestionnaire de réseau dans certaines versions précédentes d'Ubuntu, etc. Il peut être intéressant de connaître les éléments suivants. J'utilise Dnsmasq depuis un moment, mais je l'ai désinstallé. Actuellement, mon système avait le contenu suivant de /etc/resolv.conf (qui est un lien symbolique vers /run/resolvconf/resolv.conf sur mon système):

cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

Peu importe combien de fois j'exécute Sudo resolvconf -u ou Sudo dpkg-reconfigure resolvconf, le serveur de noms n'a pas été mis à jour pour correspondre à ceux que j'ai définis dans NetworkManager. Les informations que résolvconf utilise depuis le NetworkManager étaient présentes:

cat /run/resolvconf/interface/NetworkManager  
nameserver 8.8.4.4
nameserver 8.8.8.8

Cependant, il se peut que, s'il y a plusieurs fichiers dans ce répertoire, ce fichier ne soit pas utilisé du tout. Le coupable était un fichier non supprimé avec la désinstallation de Dnsmasq:

cat /run/resolvconf/interface/lo.dnsmasq                        
nameserver 127.0.0.1

Le simple fait de supprimer ce fichier (et d'exécuter Sudo resolvconf -u par la suite) a résolu mes problèmes avec le DNS:

cat /etc/resolv.conf                        
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 8.8.8.8 

J'espère que cela aidera également les autres avec le débogage (les interactions complexes entre tous ces différents outils réseau). Si vous utilisez resolvconf, assurez-vous d’exécuter ls /run/resolvconf/interfaces pour voir ce qu’il contient.

6
Anne van Rossum

Je viens de supprimer un lien dans /etc/resolv.conf et de créer un fichier ordinaire contenant les adresses des serveurs de noms. Cela fonctionne et je ne vois aucune raison d'utiliser cette construction plutôt étrange créée par les développeurs Ubuntu.

4
Ivan

Ajoutant mon brin à la liste déjà longue, voici une autre manière (testée le 12.04):

Modifiez /run/resolvconf/interface/NetworkManager pour répondre à vos besoins. Voici un exemple:

search foobar.com example.com
nameserver 192.168.1.1

Ensuite, comme indiqué pour la plupart des autres exemples, effectuez un Sudo resolvconf -u. Vous trouverez maintenant votre resolv.conf ressemblant à ceci:

nameserver 192.168.1.1
nameserver 127.0.0.1
search foobar.com example.com

Je n'aime toujours pas la manière dont il est mis en œuvre maintenant (il semble qu'Ubuntu a besoin d'un service pour chaque foo qu'il fabrique), et je préférerais un simple resolv.conf à coup sûr. Mais cette approche semble être le meilleur compromis pour moi jusqu'à présent. Le "localhost-NS" ajouté ne devrait pas faire trop mal.

3
Izzy

Vous pouvez éditer la connexion "AUTO ETH0" ou le nom que vous utilisez pour vous connecter en NM. Vous pouvez le faire en cliquant avec le bouton droit de la souris sur NM et en sélectionnant "Modifier les connexions ...". Sur l'onglet IPv4, vous pouvez sélectionner "Adresses automatiques (DHCP) uniquement" en tant que "Méthode" et NM vous permettra de définir manuellement la ou les adresses de serveur de noms, même les adresses étant transmises via DHCP.

3
Frank Barcenas

J'ai corrigé cela en changeant l'ordre des sources. J'ai déplacé la source dnsavant mdnsdans /etc/nsswitch.conf:

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

Vous pouvez conserver vos paramètres tout en utilisant le serveur de mise en cache local de cette manière.

2
Dan B
vi /etc/network/interfaces


This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The primary network interface
allow-hotplug eth0


# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0         <<----- change this comment with the #
iface eth0 inet dhcp
2
Roy Rogers

Que diriez-vous:

Sudo dpkg-reconfigure resolvconf

Avant cela, utilisez Network Manager pour changer l’adresse DNS et changez la méthode pour

Adresses automatiques (DHPC) uniquement

Ensuite, exécutez la commande ci-dessus et redémarrez. Cela a fait la solution pour moi.

2
Adige72

C'est une question très populaire, avec une collection de réponses standard possibles, qui, IMO, sont plutôt compliquées. Pour ma part, j’ai toujours eu du mal à faire en sorte que Ubuntu respecte les paramètres DNS que j’ai configurés dans NetworkManager - en particulier pour configurer des serveurs DNS statiques avec des "adresses automatiques (DHCP) uniquement" - et aujourd’hui j’ai enfin compris ce qui était réellement inexact.

Le problème réside dans l'interaction entre resolvconf et NetworkManager. resolvconf contient ce fichier appelé /etc/resolvconf/interface-order. Au moins sur mes systèmes, NetworkManager n'est pas dans ce fichier (sauf qu'il est couvert par le caractère générique * à la fin). Le rapport le plus récent de dhclient à resolvconf a donc priorité sur tout ce que NetworkManager a à dire.

Ainsi, du moins dans mon cas, la réponse réelle a été d'ajouter

NetworkManager

au sommet de /etc/resolvconf/interface-order ou presque.

(Oui, je connais beaucoup de gens qui me disent simplement "désinstaller resolvconf", ce qui me semble une mauvaise idée en soi. Mais plus que cela, au moins, rusé et xénial, considérez resolvconf comme une partie vitale du système [c.-à-d. Ubuntu -minimal en dépend], il serait donc difficile de maintenir votre système dans un état cohérent et mis à jour sans resolvconf.)

Sur demande, je peux fournir plus de détails sur la façon dont j'ai compris cela. (EDIT: apparemment, je ne l'ai pas fait quand cela a été demandé, désolé. À ce stade, je ne me souviens pas de beaucoup plus de détails que ce que je dis ensuite :) En un mot, j'ai remplacé l'exécutable de resolvconf avec un wrapper Shell autour de lui qui a vidé ses arguments, son entrée, sa sortie et son stderr dans des fichiers; et ajouté set -x aux scripts de mise à jour de resolvconf.

(EDIT: Je peux dire que ce que je veux dire par la première partie est que j'ai utilisé Sudo pour déplacer le réel résolvconf exécutable, qui peut être trouvé à l’aide de la commande which ou de la commande type. Créez ensuite un script Shell qui n’exécute que le resolvconf déplacé, mais renvoie également les arguments à un fichier et utilise la redirection Shell pour envoyer stdin, stdout et stderr. Je ne me souviens pas où "les scripts de mise à jour de resolvconf" sont et ne peuvent pas actuellement être facilement vérifiés. Je pense que beaucoup de geeks de Linux peuvent comprendre ce que je veux dire, peut-être qu'un bon samaritain fournira encore plus de détails dans un commentaire. )

2
Steven Collins

Une autre méthode consiste à définir des serveurs DNS spécifiques à chaque menu:

/etc/docker/daemon.json

Si vous n'avez pas un tel fichier, créez-le:

{
    "dns": ["10.0.0.2", "8.8.8.8"]
}

Source: https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/

Voir aussi: https://docs.docker.com/engine/reference/commandline/dockerd/#/daemon-configuration-file

1
AndreyKo

Pour changer de DNS, suivez les instructions dans: https://developers.google.com/speed/public-dns/docs/using

  1. Aller au réseau

  2. Sélectionnez la connexion pour laquelle vous souhaitez configurer le DNS.

  3. Pour modifier les paramètres d'une connexion sans fil, sélectionnez l'onglet Sans fil, puis sélectionnez le réseau sans fil approprié.

  4. Cliquez sur la flèche (droite), puis dans la fenêtre qui s’ouvre, sélectionnez l’onglet Paramètres IPv4 ou Paramètres IPv6.

  5. Si la méthode sélectionnée est automatique (DHCP), ouvrez la liste déroulante et sélectionnez uniquement les adresses automatiques (DHCP). Si la méthode est définie sur autre chose, ne la changez pas.

  6. Dans le champ Serveurs DNS, entrez les adresses IP DNS, séparées par une virgule.

1
Ferroao