Come mantenere le opzioni resolv.conf come ruotare, timeout in CentOS?


9

CentOS cancellerà /etc/resolv.confperiodicamente qualsiasi modifica manuale apportata . Le impostazioni predefinite in Linux sono scarse in termini di failover in un tempo ragionevole (interrogare i server dei nomi nello stesso ordine ogni volta, 5 secondi di timeout, 2 tentativi).

Quindi, il primo DNS nel tuo resolv.confè essenzialmente un percorso critico. Se fallisce, puoi guardare 10 secondi prima di eseguire il failover.

Queste impostazioni predefinite sono modificabili (vedere la pagina man resolv.conf ), ma come è possibile rendere permanenti le modifiche in CentOS e persistere attraverso i riavvii, ecc.?

Risposte:


12

La risposta può essere trovata nel /sbin/dhclient-script:

if [ -n "${RES_OPTIONS}" ]; then
    echo "options ${RES_OPTIONS}" >> ${rscf}
fi

Ma non è terribilmente ovvio dove puoi impostare RES_OPTIONSper far sì che lo script lo raccolga - alcune cose come il dominio di ricerca possono essere impostate nel ifcfg-ethXfile, ma le opzioni del resolver sono impostate altrove. Il file che desideri è in effetti /etc/sysconfig/network. Per impostare le opzioni pertinenti, aggiungi qualcosa come questa linea a quel file:

RES_OPTIONS="rotate timeout:1 retries:1"

Ciò imposterà il timeout su 1 secondo, utilizzerà un singolo tentativo e dirà al client di ruotare i suoi resolver per richiesta invece di passare in sequenza l'elenco ogni volta.

Se desideri che le modifiche abbiano effetto immediato, emetti un service network restartcomando e controlla il tuo nuovo /etc/resolv.confin tutta la sua gloria. Ecco come appariva il mio quando lo testavo:

# cat /etc/resolv.conf 
; generated by /sbin/dhclient-script
search example.com
options rotate timeout:1 retries:1
nameserver 10.1.1.2
nameserver 10.1.1.1

1

La risposta accettata è quando si utilizzano script di rete legacy. Se usi NetworkManager potresti non averne /etc/sysconfig/network, e se lo fai non sarà ancora usato per le connessioni gestite da NetworkManager .

Se si utilizza NetworkManager :

Per aggiungere opzioni, ad esempio aggiungendo rotatea bond0:

nmcli con mod bond0 +ipv4.dns-options rotate

Per rimuovere questa opzione:

nmcli con mod bond0 -ipv4.dns-options rotate

Il +è bene modificare le opzioni troppo; NetworkManager è abbastanza intelligente da rilevare le opzioni esistenti e aggiornarle. Ad esempio, cambiando il valore di timeout:

root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options:                       "rotate,timeout:5"
root@debian:~# nmcli con mod bond0 +ipv4.dns-options timeout:3
root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options:                       "rotate,timeout:3"

Ciò significa che il valore viene ignorato per la rimozione e non è nemmeno necessario. Per rimuovere il timeout:

nmcli con mod bond0 -ipv4.dns-options timeout

Funzionerà anche con un valore di timeout ma quel valore verrà ignorato , quindi la rimozione timeout:5rimuoverà anche qualsiasi altro valore di timeout.

NB: Guardando a questo, mi sono imbattuto in un bug correlato che è stato corretto in network-manager v1.14.6 , v1.15.2-dev e v1.16 . In caso di problemi, controlla prima la versione del gestore della rete .


1
Quando aggiungi una nuova risposta a una vecchia risposta accettata, è una buona idea notare quanti anni ha una domanda e una risposta. Ciò che è considerato eredità ora non era necessariamente così 4+ anni fa quando è stata posta la domanda. Piuttosto che etichettare come legacy, se notassi quando le impostazioni predefinite sono cambiate (quale versione di CentOS - forse 8?) E poi hai aggiunto le tue informazioni sarebbe una risposta molto più utile. In alternativa, chiedi di nuovo e rispondi alla tua versione (per le versioni più recenti di CentOS o quando usi Network Manager per esempio) e rimanda a quella precedente per riferimento.
Adam C

Il vecchio modo potrebbe comunque essere valido ... NetworkManager è in circolazione da molto tempo, ma è ancora possibile configurare il vecchio modo sia in Debian che in CentOS.
Thomas Guyot-Sionnest,

0

Se è necessario farlo con file flat anziché con nmclicomandi (come con uno strumento di gestione della configurazione) Red Hat fornisce un'altra soluzione.

Crea uno script /etc/NetworkManager/dispatcher.d/15-resolv, che copia un'abitudine /etc/resolv.confin posizione.

#!/bin/bash
#
# Description : script to override default resolv.conf file
# with customized file.
cp -f /etc/resolv.conf.custom /etc/resolv.conf

Dopo aver riavviato NetworkManager, questo script verrà eseguito, sostituendo il file con il proprio.

https://access.redhat.com/solutions/61921


0

Puoi dire a NetworkManager di non gestire il /etc/resolv.conffile tutti insieme.

  1. Creare il /etc/NetworkManager/conf.d/90-dns-none.conffile con il seguente contenuto:

    [main]
    dns=none
    
  2. Ricarica il servizio NetworkManager:

    systemctl reload NetworkManager
    

La documentazione da cui proviene ha una seconda soluzione che prevede la sostituzione /etc/resolv.confcon un collegamento simbolico al file.

Dagli una lettura: 22. Configurazione manuale del file /etc/resolv.conf


-1

basta aggiungere

resolv_conf_options=rotate\ timeout:1\ retries:1

nella tua resolvconf.conf


Sei sicuro che sia un'opzione in CentOS (hai un link a documenti / qualcosa per mostrarlo)? Lo vedo come un'opzione di FreeBSD e Ubuntu ma non lo trovo in CentOS
Adam C

Fa parte del pacchetto openresolv
Evgeny F

1
che non sembra essere un pacchetto standard, quindi non è un'opzione per CentOS, specialmente in ambienti controllati, non è una cattiva opzione altrove
Adam C

-3

L'ultima volta ho affrontato lo stesso problema con il mio nuovo VPS Linux sottoscritto. Come ho risolto è stato usare il comando chattr + i per rendere il file immutabile. Basta andare nella cartella / etc ed eseguirlo dopo aver apportato le necessarie modifiche al file resolv.conf:

chattr + i resolv.conf

Se vuoi ripristinare l'impostazione, fai questo:

chattr -i resolv.conf

Linee guida complete per il vostro riferimento: http://boxtutor.com/fix-etcresolv-conf-is-not-saving-after-server-reboot/


Questo sarebbe un potenziale problema qui perché non sarebbe quindi in grado di rilevare le modifiche ai server dei nomi dal DHCP - non cambierebbe spesso ma vorrei comunque che funzionasse
Adam C
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.