BOOTPROTO = aucun | statique | dhcp et /etc/resolv.conf

17

Qu'est-ce que cela signifie quand il est indiqué BOOTPROTO=nonedans le /etc/sysconfig/network-scripts/ifcfg-eth0fichier.

Je me souviens qu'il y en avait BOOTPROTO=staticet il était très clair et simple de nous dire que si un IPADDR=<x.x.x.x>est donné, le serveur fournira l'adresse IP spécifiée. De même, BOOTPROTO=dhcprecherchera un serveur DHCP pour obtenir une adresse IP dynamique. Redhat dit:

 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.
  • Cela signifie-t-il que si nous ne spécifions pas l'IP dans le fichier ifcfg-eth0, il recherchera un serveur DHCP et si une IP est spécifiée, il récupérera cette IP statique?

  • Quelles sont les chances qu'il recherche un serveur DHCP et modifie /etc/resolv.conf même si une adresse IP est spécifiée avec IPADDR=lorsque BOOTPROTO est défini sur aucun?

Contexte: - Nous avons déplacé les centres de données et avons dû changer les adresses IP dans de nombreux serveurs. Nous avions modifié /etc/resolv.confles adresses IP des nouveaux serveurs DNS, mais pour une raison quelconque, certains des serveurs ont /etc/resolv.confété masqués ou ont créé d'anciennes adresses IP DNS. Dans le /etc/init.d/networkscript, je vois qu'il appelle /etc/sysconfig/network-scripts/network-functionsqui a cette fonction. Est-ce le coupable?

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

Dans quelles circonstances cette fonction est-elle appelée?

Je sais que le paramètre PEERDNSà noempêchera le /etc/resolv.conf de changer, cependant, je voudrais savoir si notre serveur a commencé à rechercher un serveur DHCP même s'il a BOOTPROTOété défini sur noneet qu'une adresse IP a été spécifiée? si oui, pourquoi?

J'ai redémarré les problèmes de serveurs avec ce problème à plusieurs reprises pour répliquer le problème à nouveau, mais le contenu de /etc/resolv.confne change pas maintenant. Qu'est-ce qui aurait pu provoquer la modification de /etc/resolv.conf lors du premier redémarrage?

Pouvons-nous utiliser BOOTPROTO=static? J'ai lu son obsolète. Nos machines sont toutes RHEL 6.5

Sree
la source

Réponses:

21

Si vous lisez, /etc/sysconfig/network-scripts/ifup-ethvous verrez que la mise en réseau utilise DHCP si BOOTPROTOest défini sur dhcpou bootp, sinon il n'est pas utilisé:

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

Plus bas, s'il DYNCONFIGn'est pas nul (et dhclientdisponible), les scripts tentent d'utiliser DHCP, sinon un adressage IP statique est tenté.

L'utilisation à l' grep -r BOOTPROTO *intérieur /etcn'affiche rien d'autre que l'extrait ci-dessus, ce qui suggère que vous pouvez utiliser n'importe quoi BOOTPROTOtant que ce n'est pas l'un des deux ci-dessus.

Vous pouvez utiliser BOOTPROTO=static, mais si on nous dit qu'il n'est pas pris en charge, vous ne pouvez pas garantir qu'il fonctionnera comme ça à l'avenir. De plus, cela ne fera aucune différence pour votre problème - staticou noneempêchera le script d'utiliser DHCP.

garethTheRed
la source