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

17

O que significa quando diz BOOTPROTO=noneno /etc/sysconfig/network-scripts/ifcfg-eth0arquivo.

Lembro-me de que costumava haver BOOTPROTO=statice foi muito claro e direto nos dizer que, se um IPADDR=<x.x.x.x>for fornecido, o servidor apresentará o endereço IP especificado. Da mesma forma, BOOTPROTO=dhcpprocurará 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 buscará esse IP estático?

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

Contexto: - Mudamos os datacenters e tivemos que alterar os endereços IP em muitos dos servidores. Nós modificamos /etc/resolv.confcom os endereços IP dos novos servidores DNS, mas, por algum motivo, em alguns servidores eles /etc/resolv.confforam apagados ou surgiram com endereços IP DNS antigos. No /etc/init.d/networkscript eu vejo que está chamando /etc/sysconfig/network-scripts/network-functionsque tem 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;
}

Sob quais circunstâncias essa função é chamada?

Eu sei que ajuste PEERDNSa noirá impedir o /etc/resolv.conf de mudar, no entanto, eu gostaria de saber se o nosso servidor tinha começou a procurar um servidor DHCP mesmo que BOOTPROTOfoi definido para nonee um endereço de IP foi especificado? se sim, por que?

Reiniciei os problemas dos servidores com esse problema algumas vezes para replicar o problema novamente, mas o conteúdo de /etc/resolv.confnã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 o seu obsoleto. Nossas máquinas são todas RHEL 6.5

Sree
fonte

Respostas:

21

Se você ler, /etc/sysconfig/network-scripts/ifup-ethverá que a rede usa DHCP se BOOTPROTOestiver definida como dhcpou bootp, caso contrário, não será usada:

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

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

Usando grep -r BOOTPROTO *dentro /etcnão mostra nada além do trecho acima, sugerindo que você poderia usar qualquer coisa em BOOTPROTOcontanto que ele não é um dos dois acima.

Você pode usar BOOTPROTO=static, mas se formos informados de que não há suporte, não será possível garantir que funcione dessa maneira no futuro. Além disso, isso não fará diferença no seu problema - staticou nonefará com que o script não use DHCP.

garethTheRed
fonte