115 votes

Comment faire pour que resolvconf régénère resolv.conf après avoir modifié /etc/network/interfaces ?

Après la mise à jour /etc/network/interfaces avec quelque chose de très similaire à ce qui suit, comment puis-je obtenir /etc/resolv.conf à mettre à jour ? J'ai essayé (en tant que root) resolver -u , service networking restart mais ça n'a pas marché. J'ai aussi corrigé le lien symbolique pour resolv.conf et a essayé resolver -u à nouveau. Finalement, frustré, j'ai redémarré, ce qui a résolu le problème en reconstruisant /etc/resolv.conf .

Ubuntu 12.04, serveur 64bit, tous les derniers correctifs installés.

Exemple /etc/network/interfaces :

iface eth0 inet static
    address 192.168.3.3
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-search example.com
    dns-nameservers 192.168.3.45 192.168.8.10

123voto

jdthood Points 11817

service networking restart n'est pas toujours un moyen fiable de descendre toutes les interfaces.

El resolvconf -u La commande ne fait que mettre à jour resolv.conf à partir de la propre base de données de resolvconf. Vous devez mettre à jour la base de données.

Pour mettre à jour la base de données, vous devez appeler resolvconf avec l'option -a o -d option. Cela se passe en coulisses lorsque vous exécutez ifup ou ifdown. Donc, normalement, comme pour toute autre modification de l'option /etc/network/interfaces Pour activer les changements dans les options DNS-*, vous devez mettre hors service l'interface en question et la remettre en service. Ou vous pouvez redémarrer.

Si vous souhaitez apporter des modifications à une interface sans l'interrompre (peut-être parce que vous administrez la machine à distance et que vous êtes connecté via cette interface), vous pouvez obtenir le même résultat en exécutant resolvconf directement depuis la ligne de commande. Ceci requiert un peu plus de connaissance de la sémantique de resolvconf. Supposons que la strophe /e/n/i concernée est la suivante

iface IIII FFFF static
    address ...
    ...
    dns-nameservers X.X.X.X Y.Y.Y.Y
    dns-search SSSS

où FFFF est une famille d'adresses ("inet" ou "inet6").

Pour activer ces options dns-*, vous exécutez resolvconf comme suit (oui, avec des retours à la ligne dans la chaîne envoyée à resolvconf).

echo "nameserver X.X.X.X
nameserver Y.Y.Y.Y
search SSSS" | sudo resolvconf -a IIII.FFFF

Pour la strophe donnée dans la question, ce serait le suivant.

echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com" | sudo resolvconf -a eth0.inet

Consultez la page de manuel resolvconf(8) et le fichier README du paquetage resolvconf (/usr/share/doc/resolvconf/README.gz) pour plus d'informations.

33voto

user267617 Points 339

Bien que la page de manuel ne soit pas installée par défaut, elle est documentée via l'option update scripts, il suffit de l'exécuter :

sudo resolvconf -u

8voto

sparky Points 81

Pour ceux d'entre vous qui gèrent leurs serveurs à distance, c'est possible :

  1. mettre à jour le dns-nameservers ligne dans /etc/network/interfaces
  2. # ifdown eth01; ifup eth01

Notez que cela doit être sur une seule ligne divisée par ; (le séparateur de ligne de commande linux). Vous ne devriez même pas perdre votre connexion actuelle. L'exception est une erreur de frappe dans le fichier d'interface. Si cela se produit ifup échouera et vous devrez avoir un accès physique ou une autre ethxx connexion.

4voto

daniel.heydebreck Points 708

service resolvconf restart se régénérera /etc/resolv.conf sans trop de difficultés.

3voto

trogne Points 174

Réponse simple :

Il suffit d'installer resolvconf. apt install resolvconf

Après ça, ifup eth0 met à jour le dns dans etc/resolv.conf selon le dns-nameservers ligne dans /etc/network/interfaces .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X