Modifica dei server dei nomi DNS in / etc / network / interfaces senza un riavvio [duplicato]

18

Dopo aver modificato dns-nameservers in /etc/network/interfaces , come faccio a dire a resolvconf(8) di leggere il nuovo valore senza riavviare il networking? (causando un'interruzione del servizio)

L'opzione -u non sembra funzionare, si aggiorna solo agli stessi valori.

    
posta Eric 20.10.2012 - 00:44

3 risposte

26

Hai ragione, "resolvconf -u" non è sufficiente per attivare la modifica che hai apportato. Quel comando aggiorna solo resolv.conf dal database di resolvconf mentre è necessario aggiornare il database.

Supponiamo che l'interfaccia in questione sia eth0. Supponiamo che in / etc / network / interfaces ci sia una stanza simile a questa.

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

Ora modifichi la riga "dns-nameservers". Per attivare questa modifica, fai attenzione (nota la & amp; & amp; evita di rompere una connessione ssh potenzialmente aperta)

ifdown eth0 && ifup eth0

o riavvia.

    
risposta data jdthood 29.10.2012 - 08:29
12

Mi sono imbattuto in questo due volte di recente.

La prima volta, ho fatto sudo ifdown eth0 che ovviamente ha ucciso la mia connessione ssh e ho lasciato la macchina ignorando la sua NIC. Ahia. Ho dovuto entrare attraverso l'interfaccia IPMI sul server per avere di nuovo il controllo.

La seconda volta, ho imparato dai miei errori precedenti e ho fatto sudo ifdown eth0 ; sudo ifup eth0 . La finestra ssh è morta, ovviamente, ma la macchina ha risposto rapidamente a una nuova connessione ssh e le mie modifiche al DNS erano in vigore. Ho fatto la stessa cosa su un secondo server, ma questa volta ho aspettato prima di digitare qualcosa nella finestra ssh. La finestra è rimasta alzata e sono state applicate le modifiche al DNS. Impressionante.

La cosa fondamentale era usare l'operatore punto e virgola della shell in modo che entrambi i comandi si trovassero su una riga. In questo modo, il comando per ripristinare l'interfaccia è già stato inserito dal momento in cui l'interfaccia si interrompe. Suppongo che avrei potuto scrivere una sceneggiatura ed eseguirla, ma mi sembrava più facile.

UPDATE: c'è un altro modo per farlo. Puoi anche riavviare il servizio di rete Ubuntu in un solo passaggio: sudo /etc/init.d/networking restart o sudo service network-interface restart INTERFACE=eth0 . Grazie JFA per l'ispirazione.

    
risposta data Randall Cook 23.02.2013 - 01:53
2

Ho appena affrontato lo stesso problema; anche un riavvio perderebbe la modifica invocando manualmente l'hook di libc.

Quindi il modo più stabile che ho trovato è, dopo aver inserito il contenuto desiderato in /etc/network/interfaces , per modificare /etc/resolvconf/resolv.conf.d/original per includere le righe desiderate, assicurati che tail (in quella directory) non sia presente, cd /etc/resolvconf/resolv.conf.d e quindi invoca /etc/resolvconf/update.d/libc .

Si noti che se è presente tail (per impostazione predefinita, puntato a original , il contenuto derivato da /etc/network/interfaces sarà seguito anche dall'impostazione originale.

Che questi cambiamenti possano essere tranquillamente applicati da un riavvio è, francamente, folle. Il sistema attuale prende quello che prima era "modifica questo file, magari distribuendolo da un sistema di gestione della configurazione" e lo nasconde dietro a più livelli di astrazione e nessun modo pulito di invocare per la manutenzione al di fuori del normale framework di avvio.

    
risposta data Phil P 10.04.2013 - 08:48

Leggi altre domande sui tag