web-dev-qa-db-fra.com

Modification de serveurs de noms DNS dans / etc / network / interfaces sans redémarrage

Après avoir modifié dns-nameservers dans /etc/network/interfaces, comment puis-je dire à resolvconf(8) de lire la nouvelle valeur sans redémarrer la mise en réseau? (provoquant une interruption de service)

L'option -u ne semble pas fonctionner, elle est simplement mise à jour avec les mêmes valeurs.

17
Eric

Vous avez raison, "resolvconf -u" ne suffit pas pour activer les modifications que vous avez apportées. Cette commande ne met à jour que resolv.conf à partir de la base de données de resolvconf alors que vous devez mettre à jour la base de données.

Supposons que l'interface en question est eth0. Supposons que dans/etc/network/interfaces, vous avez une strophe ressemblant à ceci.

iface eth0 inet static
    [...]
    dns-nameservers 1.1.1.1 2.2.2.2

Maintenant, vous changez la ligne "DNS-nameservers". Pour activer cette modification, faites (notez le && éviter de rompre une connexion ssh potentiellement ouverte)

ifdown eth0 && ifup eth0

ou redémarrez.

26
jdthood

Je suis tombé dessus deux fois récemment.

La première fois, j’ai fait Sudo ifdown eth0, ce qui a bien sûr tué ma connexion ssh et laissé la machine ignorer sa carte réseau. Aie. Je devais entrer par l'interface IPMI sur le serveur pour reprendre le contrôle.

La deuxième fois, j’ai appris de mes erreurs précédentes et j’ai fait Sudo ifdown eth0 ; Sudo ifup eth0. La fenêtre ssh est morte, bien sûr, mais la machine a rapidement répondu à une nouvelle connexion ssh et mes modifications DNS étaient en vigueur. J'ai fait la même chose sur un deuxième serveur mais cette fois j'ai attendu avant de taper quoi que ce soit dans la fenêtre ssh. La fenêtre est restée ouverte et les modifications DNS ont été appliquées. Impressionnant.

L'essentiel était d'utiliser le point-virgule du shell pour que les deux commandes soient sur une seule ligne. Ainsi, la commande de restauration de l'interface a déjà été entrée au moment où l'interface tombe en panne. J'imagine que j'aurais pu écrire un script et l'exécuter, mais cela semblait plus facile.

PDATE: Il existe un autre moyen de procéder. Vous pouvez également redémarrer le service de réseau Ubuntu en une seule étape: Sudo /etc/init.d/networking restart ou Sudo service network-interface restart INTERFACE=eth0. Merci JFA pour l'inspiration.

12
Randall Cook

Je viens de traverser ce même problème; même un redémarrage serait perdre la modification en appelant manuellement le hook libc.

Donc, le moyen le plus stable que j'ai trouvé est, après avoir placé le contenu souhaité dans /etc/network/interfaces, d'éditer /etc/resolvconf/resolv.conf.d/original pour inclure les lignes souhaitées, assurez-vous que tail(dans ce répertoire) n'est pas présent, cd /etc/resolvconf/resolv.conf.d, puis appelez /etc/resolvconf/update.d/libc.

Notez que si tailest présent (par défaut, il pointe sur originalname__, le contenu dérivé de /etc/network/interfaces sera également suivi de la configuration d'origine.

Franchement, le fait que ces modifications puissent être appliquées de manière sécurisée par un redémarrage est insensé. Le système actuel utilise ce qui était auparavant "édite ce fichier, peut-être en le déployant à partir d'un système de gestion de la configuration" et le cache derrière plusieurs couches d'abstraction et sans moyen propre d'appeler pour une maintenance en dehors du cadre de démarrage normal.

2
Phil P