BOOTPROTO = nessuno | statico | dhcp e /etc/resolv.conf


17

Cosa significa quando dice BOOTPROTO=nonenel /etc/sysconfig/network-scripts/ifcfg-eth0file.

Ricordo che c'era una volta BOOTPROTO=staticed era molto chiaro e diretto nel dirci che se IPADDR=<x.x.x.x>viene fornito, il server verrà fornito con l'indirizzo IP specificato. Allo stesso modo, BOOTPROTO=dhcpcercherà un server DHCP per ottenere un indirizzo IP dinamico. Redhat dice:

 BOOTPROTO=protocol
    where protocol is one of the following:

        none — No boot-time protocol should be used.
        bootp — The BOOTP protocol should be used.
        dhcp — The DHCP protocol should be used.
  • Significa che se non specifichiamo l'IP nel file ifcfg-eth0, cercherà un server DHCP e se viene specificato un IP, prenderà quell'IP statico?

  • Quali sono le possibilità che cercherà un server DHCP e modifichi /etc/resolv.conf anche se viene specificato un indirizzo IP IPADDR=quando BOOTPROTO è impostato su nessuno?

Contesto: - Abbiamo spostato i data center e abbiamo dovuto modificare gli indirizzi IP in molti server. Avevamo modificato /etc/resolv.confcon gli indirizzi IP dei nuovi server DNS, ma per qualche motivo, in alcuni server sono /etc/resolv.confstati cancellati o sono stati creati vecchi indirizzi IP DNS. Nella /etc/init.d/networksceneggiatura vedo che sta chiamando /etc/sysconfig/network-scripts/network-functionsche ha questa funzione. È questo il colpevole?

# Invoke this when /etc/resolv.conf has changed:
change_resolv_conf ()
{
    s=$(/bin/grep '^[\ \        ]*option' /etc/resolv.conf 2>/dev/null);
    if [ "x$s" != "x" ]; then
       s="$s"$'\n';
    fi;
    if [ $# -gt 1 ]; then
       n_args=$#;
       while [ $n_args -gt 0 ];
         do
            if [[ "$s" = *$1* ]]; then
               shift;
               n_args=$(($n_args-1));
               continue;
            fi;
            s="$s$1";
            shift;
            if [ $# -gt 0 ]; then
                s="$s"$'\n';
            fi;
            n_args=$(($n_args-1));
         done;
    elif [ $# -eq 1 ]; then
       if [ "x$s" != "x" ]; then
          s="$s"$(/bin/grep -vF "$s" $1);
       else
          s=$(cat $1);
       fi;
    fi;
    (echo "$s" > /etc/resolv.conf;) >/dev/null 2>&1;
    r=$?
    if [ $r -eq 0 ]; then
        [ -x /sbin/restorecon ] && /sbin/restorecon /etc/resolv.conf >/dev/null 2>&1 # reset the correct context
        /usr/bin/logger -p local7.notice -t "NET" -i "$0 : updated /etc/resolv.conf";
        [ -e /var/lock/subsys/nscd ] && /usr/sbin/nscd -i hosts; # invalidate cache
    fi;
    return $r;
}

In quali circostanze viene chiamata questa funzione?

So che l'impostazione PEERDNSsu noimpedisce a /etc/resolv.conf di cambiare, tuttavia, vorrei sapere se il nostro server aveva iniziato a cercare un server DHCP anche se BOOTPROTOera impostato su nonee era stato specificato un indirizzo IP? se si, perchè?

Ho riavviato alcune volte i problemi dei server con questo problema per replicare nuovamente il problema, ma il contenuto di /etc/resolv.confnon sta cambiando ora. Cosa potrebbe aver causato la modifica di /etc/resolv.conf al primo riavvio?

Possiamo usare BOOTPROTO=static? Ho letto è deprecato. Le nostre macchine sono tutte RHEL 6.5

Risposte:


21

Se leggi /etc/sysconfig/network-scripts/ifup-ethvedrai che la rete utilizza DHCP se BOOTPROTOè impostata su dhcpo bootp, altrimenti non viene utilizzata:

if ["${BOOTPROTO}" = "bootp" -o "${BOOTPROTO}" = "dhcp" ]; then DYNCONFIG=true

Più in basso, se DYNCONFIGnon è null (ed dhclientè disponibile), gli script tentano di utilizzare DHCP, altrimenti viene tentato l'indirizzamento IP statico.

L'uso grep -r BOOTPROTO *di /etcWithin non mostra nient'altro che il frammento di cui sopra, suggerendo che potresti usare qualsiasi cosa BOOTPROTOpurché non sia una delle due sopra.

Potresti usare BOOTPROTO=static, ma se ci viene detto che non è supportato, non puoi garantire che funzionerà così in futuro. Inoltre, non farà alcuna differenza per il tuo problema statico noneimpedirà allo script di non utilizzare DHCP.

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.