Question Comment puis-je obtenir de resolvconf pour régénérer resolv.conf après avoir changé / etc / network / interfaces?


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

Ubuntu 12.04, serveur 64 bits, 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

77
2017-12-03 12:59


origine


Voir askubuntu.com/questions/156154/… - user68186
Qu'essayiez-vous de faire que resolv.conf vous empêchait de faire? - kingmilo


Réponses:


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

le resolvconf -u mises à jour de commandes uniquement resolv.conf 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 le -a ou -d option. Cela se produit dans les coulisses lorsque vous exécutez ifup ou ifdown. Donc, normalement, comme avec tout autre changement à /etc/network/interfaces, pour activer les modifications apportées aux options dns- *, vous devez désactiver l'interface en question et la réactiver. Ou vous pouvez redémarrer.

Si vous souhaitez apporter des modifications à une interface sans la supprimer (peut-être parce que vous administrez la machine à distance et que vous êtes connecté via cette interface, natch), vous pouvez obtenir le même résultat en exécutant directement resolvconf à partir de la ligne de commande. Cela nécessite un peu plus de connaissance de la sémantique de resolvconf. Supposons que la strophe / e / n / i pertinente soit

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- *, exécutez resolvconf comme suit (oui, avec de nouvelles lignes dans la chaîne redirigée vers 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 la suivante.

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

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


94
2017-12-03 19:23



"Ne faites pas" redémarrer le réseau de service ", ce n'est pas un moyen fiable de réduire toutes les interfaces." Fonctionne bien pour moi. Bon de savoir la façon propre de le faire si. - Aki
Si vous ne devriez pas faire "redémarrer le réseau de service", puis-je suggérer de ne pas le mettre dans la première ligne de cette question? En cherchant rapidement une solution, la première chose que j'ai faite a été de copier et coller la première commande que j'ai vue. - Robin Winslow
@RobinWinslow +1 pour avoir fait ma journée - Pete
Cette réponse provient de la personne elle-même qui a développé resolvconf  :) - heemayl
Redémarrer / relire /etc/network/interfaces, vous pouvez le faire : ifdown eth0 && ifup eth0 ; Cela fonctionne même dans une session ssh distante. - Pierre-Damien


Bien que la page de manuel ne soit pas installée par défaut, elle est documentée via l'option de scripts de mise à jour, exécutez simplement:

sudo resolvconf -u

20
2018-04-10 21:32



manpages.ubuntu.com/manpages/precise/en/man8/resolvconf.8.html - NGRhodes


Pour ceux qui gèrent vos serveurs à distance, vous pouvez:

  1. mettre à jour le dns-nameservers faire la queue /etc/network/interfaces
  2. # ifdown eth01; ifup eth01

Notez que cela doit être sur une ligne divisée avec; (le séparateur de ligne de commande linux). Vous ne devriez même pas perdre votre connexion actuelle. L'exception fait une faute de frappe dans le fichier d'interface. Si ça arrive ifup va échouer et vous devrez avoir un accès physique ou autre ethxx connexion.


3
2018-01-23 23:14





service resolvconf restart va régénérer /etc/resolv.conf fichier sans trop de chichi.


2
2018-02-10 14:03



Je reçois Failed to restart resolvconf.service: Unit resolvconf.service not found. - Mobigital
commande terminée mais non régénérée /etc/resolv.conf sur le serveur Ubuntu 14.04 - Jossef Harush


Cette réponse est similaire à celle ci-dessus mais utilise l'exemple de configuration des questions pour répondre à la question. De plus, cela 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 modifications n'auront lieu que si vous redémarrez ou rechargez le fichier de configuration:

Pour mettre à jour le fichier d'interface 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 ni rechargement.

Toutefois, les modifications de commande ci-dessus seront perdues après un redémarrage si les modifications apportées au /etc/network/interfaces ne sont pas faites.

Au fait, la dernière réponse de BDenis dans cette liste fonctionne en fait à la place de la dernière commande en analysant le /etc/network/interfacesdéposer et canaliser 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 d'analyse textuelle en ligne. Si vous voulez voir comment cela se passe, lancez la première partie de la commande et regardez-la /etc/network/interfaces fichier et cracher toutes les informations nécessaires dont vous avez besoin pour exécuter le sudo resolvconf -a eth0 commander:

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

Notez 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 le fichier 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

0
2018-06-22 21:37



Malheureusement, je ne peux pas l'utiliser. Mon interface est gérée par le gestionnaire de réseau et DHCP, l'ajoutant à /etc/network/interfaces n'est pas une option valide dans ce cas. (Ubuntu 14.04) - Tino


Réponse simple:

Installez simplement resolvconf. apt install resolvconf

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


0
2018-05-02 23:14





Cela a fonctionné 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

Ajuste en accord.


0
2017-09-07 23:21





Le 18.04, les éléments suivants fonctionnent de manière fiable (exécutez en tant que root):

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

Important: Assurez-vous d'avoir un paquet resolvconf installée.
Il ne semble pas être par défaut, et sans ( /etc/network/interfaces sont silencieusement ignorés (par ex. dns-*).


0
2018-05-09 11:49





Aussi, vous pouvez essayer cette commande:

cat /etc/network/interfaces |sed 's/#.*$//'|grep dns-|sed 's/dns-//g'|sudo resolvconf -a eth0.inet

-3
2017-10-09 13:07



Pouvez-vous expliquer pourquoi cette commande devrait fonctionner? - αғsнιη
Cela ne fonctionne pas correctement si vous avez plus d'une adresse IP de serveur de noms dans la ligne dns-nameserver IP1 IP2. La ligne doit ensuite être répétée dans resolv.conf, mais n'est pas. - Tino
De plus, /etc/network/interfaces les usages dns-nameservers (remarquez le s à la fin) alors que resolvconf les usages nameserver. La commande ne le traite pas. Et même si tout était correct, le pipeline sed | grep | sed ne serait certainement pas le moyen le plus efficace. - Melebius