BOOTPROTO = nenhum | estática | dhcp e /etc/resolv.conf

15

O que significa quando diz BOOTPROTO=none no arquivo /etc/sysconfig/network-scripts/ifcfg-eth0 .

Eu lembro que costumava haver BOOTPROTO=static e foi muito claro e direto nos dizer que se um IPADDR=<x.x.x.x> for dado, o servidor irá aparecer com o endereço IP especificado. Da mesma forma, BOOTPROTO=dhcp procurará um servidor DHCP para obter um endereço IP dinâmico. Redhat diz:

 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.
  • Isso significa que, se não especificarmos o IP no arquivo ifcfg-eth0, ele procurará um servidor DHCP e, se um IP for especificado, ele selecionará esse IP estático?

  • Quais são as chances de que ele procure um servidor DHCP e modifique /etc/resolv.conf mesmo que um endereço IP seja especificado com IPADDR= quando BOOTPROTO está definido como nenhum?

Contexto: - Nós movemos os datacenters e tivemos que alterar os endereços IP em muitos dos servidores. Tínhamos modificado /etc/resolv.conf com os endereços IP dos novos servidores DNS, mas, por algum motivo, em alguns dos servidores, o /etc/resolv.conf ficou em branco ou surgiu com endereços IP de DNS antigos. No script /etc/init.d/network , vejo que está chamando /etc/sysconfig/network-scripts/network-functions , que possui essa função. É este o culpado?

# 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;
}

Em que circunstâncias esta função é chamada?

Eu sei que a configuração PEERDNS to no impedirá que o /etc/resolv.conf mude, no entanto, eu gostaria de saber se o nosso servidor começou a procurar por um servidor DHCP mesmo que BOOTPROTO tenha sido definido para none e um endereço IP foi especificado? se sim, por quê?

Eu reiniciei os problemas de servidores com esse problema algumas vezes para replicar o problema novamente, mas o conteúdo de /etc/resolv.conf não está mudando agora. O que poderia ter causado a alteração do /etc/resolv.conf na primeira reinicialização?

Podemos usar BOOTPROTO=static ? Eu li seu obsoleto. Nossas máquinas são todas do RHEL 6.5

    
por Sree 10.11.2014 / 11:41

1 resposta

17

Se você ler /etc/sysconfig/network-scripts/ifup-eth , verá que a rede usa DHCP se BOOTPROTO estiver definido como dhcp ou bootp , caso contrário, não será usado:

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

Mais abaixo, se DYNCONFIG não for nulo (e dhclient estiver disponível), os scripts tentarão usar o DHCP, caso contrário, o endereçamento IP estático será tentado.

Usar grep -r BOOTPROTO * em /etc não mostra nada além do snippet acima, sugerindo que você pode usar qualquer coisa em BOOTPROTO , desde que não seja um dos dois acima.

Você pode usar BOOTPROTO=static , mas, se nos disserem que não é compatível, não será possível garantir que funcionará assim no futuro. Além disso, não fará diferença no seu problema - static ou none farão com que o script não use o DHCP.

    
por 10.11.2014 / 14:20