web-dev-qa-db-fra.com

Comment éditer /etc/resolv.conf sur Ubuntu 12.04

J'ai deux interfaces réseau configurées via DHCP. En conséquence, /etc/resolv.conf est rempli avec les informations provenant du serveur DHCP.

Comment puis-je éditer ce fichier?

Je sais que si j'ajoute prepend domain-name-servers 127.0.0.1 à /etc/dhcp/dhclient.conf, je peux obtenir nameserver 127.0.0.1 en tant que première (et unique) ligne de /etc/resolv.conf.

Que faire si je veux 127.0.0.1 et une seule des deux adresses de serveur de noms fournie via DHCP?

5
JustTrying

Dans Ubuntu 12.04 et versions ultérieures, /etc/resolv.conf est généré de manière dynamique par l'utilitaire resolvconf. (En fait, resolvconf génère /run/resolvconf/resolv.conf et /etc/resolv.conf est un lien symbolique vers celui-ci. C'est la configuration par défaut; il est également possible de s'exécuter avec un fichier statique à /etc/resolv.conf, mais il s'agit d'un fichier non standard.) Informations sur le serveur de noms (adresses de serveurs de noms et noms de domaines de recherche) est enregistré avec resolvconf par les configurateurs d’interface (ifup, NetworkManager, dhclient, etc.). Resolvconf génère un fichier à jour resolv.conf sur la base des éléments enregistrés.

Par conséquent, vous ne pouvez pas modifier le fichier resolv.conf directement. Si vous souhaitez contrôler ce qui se termine dans resolv.conf, vous devrez configurer l'utilitaire resolvconf. Veuillez consulter la documentation de resolvconf pour plus d'informations.

La réponse à la question spécifique "Que faire si je veux 127.0.0.1 et une seule des deux adresses de serveur de noms fournie via DHCP?" est:

  • Tout d'abord, faites pas ajoutez prepend domain-name-servers 127.0.0.1 à /etc/dhcp/dhclient.conf. Le protocole correct consiste pour les serveurs de noms locaux à enregistrer leurs adresses d'écoute locales auprès de resolvconf lorsqu'ils sont prêts à fournir un service de noms locaux; lorsqu'ils le font, les clients DHCP n'ont pas besoin de le faire. Dnsmasq fait le bon choix par défaut. Dans le cas de BIND 9, vous devez définir RESOLVCONF=yes dans /etc/default/bind9 pour lui permettre d’enregistrer l’adresse 127.0.0.1 avec resolvconf.
  • Deuxièmement, resolvconf par défaut tronque la liste des serveurs de noms après toute adresse de bouclage telle que 127.0.0.1. Pour désactiver ce comportement, créez un fichier /etc/default/resolvconf contenant la ligne TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no.
  • Troisièmement, resolvconf par défaut tronque la liste des serveurs de noms après trois éléments. Il est inutile d'inclure plus d'adresses, car le résolveur glibc ignore les adresses après les trois premières. Pour que resolvconf tronque la liste après deux adresses, vous devez éditer le script /etc/resolvconf/update.d/libc pour remplacer cette ligne.

    [ "$N" = 3 ] && return 0
    

par la suivante.

    [ "$N" = 2 ] && return 0
8
jdthood

Cela a fonctionné pour mon grand-père, cela a fonctionné pour mon père et cela a fonctionné pour moi.

rm /etc/resolv.conf
vi /etc/resolv.conf

search yourdomain.com
nameserver 8.8.8.8
nameserver 8.8.4.4

EDIT:

rm supprime le lien symbolique standard.

vi crée un fichier réel à sa place.

3
SamTzu

Lorsque j’ai installé 12.04, ce texte m’a beaucoup aidé: http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

1
user121006

Pour mémoire, la documentation officielle de resolvconf est ici http://anonscm.debian.org/gitweb/?p=resolvconf/resolvconf.git;a=blob;f=README;hb=HEAD

"Éditer" est aussi simple que d'utiliser la ligne de commande resolvconf comme une API.

par exemple.

echo nameserver 8.8.8.8 | resolvconf -a eth0.goog

Ici le . est un séparateur et la partie après l'interface est le nom de la configuration pour cette interface.

Et si vous souhaitez supprimer ce serveur de noms, nommez simplement l'interface et la configuration et utilisez -d pour le supprimer.

resolvconf -d eth0.goog

Dans un scénario serveur/cloud, c'est tout ce dont vous avez besoin. Pour les mobiles, vous voudrez vous référer à la documentation.