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

1voto

user3199107 Points 11

Cette réponse est similaire à celle ci-dessus mais utilise l'exemple de configuration des questions pour répondre à la question. De plus, elle explique pourquoi les deux commandes sont nécessaires.

Modifier /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-nameserver 192.168.3.45
    dns-nameserver 192.168.8.10

Ces changements n'auront pas lieu à moins que vous ne redémarriez ou ne rechargiez le fichier de configuration :

Afin de mettre à jour le fichier des interfaces en direct, il est nécessaire d'exécuter la commande suivante :

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

Cela permet une mise à jour de l'interface sans redémarrage ou rechargement.

Cependant, les modifications apportées à la commande ci-dessus seront perdues après un redémarrage si les modifications dans le fichier /etc/network/interfaces ne sont pas faites.

D'ailleurs, la dernière réponse de BDenis dans cette liste fonctionne en fait à la place de la dernière commande en analysant l'option /etc/network/interfaces et de placer ces lignes dans la commande sudo resolvconf -a eth0 C'est en fait la moitié de la réponse et un très bon exemple de parsing sed en ligne. Si vous voulez voir comment cela se passe, exécutez la première partie de la commande et regardez-la analyser le fichier /etc/network/interfaces et vous fournira toutes les informations nécessaires pour exécuter l'application sudo resolvconf -a eth0 commandement :

sed 's/#.*$//' /etc/network/interfaces | grep dns- | sed 's/dns-//g'

Remarquez que cela produirait le même résultat que la commande :

echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com"

A condition que le /etc/network/interfaces est configuré avec ces informations :

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

1voto

Raphael Points 1742

Sur 18.04, la procédure suivante fonctionne de manière fiable (exécutée en tant que root) :

systemctl stop networking
ip address flush dev <device> # just to be safe
systemctl start networking

Important : Assurez-vous que vous avez le paquet resolvconf installé.
Il ne semble pas l'être par défaut, et sans lui, certains ( !) changements de /etc/network/interfaces sont silencieusement ignorées (par ex. dns-* ).

1voto

Ruslan Points 1323

Sur la version de bureau d'Ubuntu 18.04, où il n'y a pas de service networking y resolvconf n'est pas installé par défaut, j'ai réussi à régénérer resolv.conf en redémarrant network-manager :

sudo service network-manager restart

0voto

jbgeek Points 1

Cela a marché pour moi :

sed -re '/nameservers|dns-search/ !d' -e 's/dns-nameservers/nameserver/' -e 's/dns-search/search/' /etc/network/interfaces  | resolvconf -a eth0.inet && resolvconf -u

Ajustez en conséquence.

0voto

Sean Points 1

J'ai découvert que si je me débarrassais du [réseau] et generateResolvConf = false から /etc/wsl.conf l'arrêt et le redémarrage, puis /etc/resolv.conf régénéré sans avoir à faire tout le travail de réinstallation.

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