BOOTPROTO = keine | statisch | dhcp und /etc/resolv.conf

17

Was bedeutet es, wenn es BOOTPROTO=nonein der /etc/sysconfig/network-scripts/ifcfg-eth0Datei steht ?

Ich erinnere mich, dass es früher gab, BOOTPROTO=staticund es war sehr klar und klar, dass IPADDR=<x.x.x.x>der Server , wenn ein angegeben wird, die angegebene IP-Adresse bereitstellt. Ebenso BOOTPROTO=dhcpwird nach einem DHCP-Server gesucht, um eine dynamische IP-Adresse zu erhalten. Redhat sagt:

 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.
  • Bedeutet dies, dass wenn wir die IP nicht in der Datei ifcfg-eth0 angeben, nach einem DHCP-Server gesucht wird und wenn eine IP angegeben wird, diese statische IP abgerufen wird?

  • Wie stehen die Chancen, dass ein DHCP-Server gesucht und /etc/resolv.conf geändert wird, selbst wenn eine IP-Adresse angegeben IPADDR=wird, für die BOOTPROTO auf none gesetzt ist?

Kontext: - Wir haben Rechenzentren umgezogen und mussten auf vielen Servern die IP-Adressen ändern. Wir hatten /etc/resolv.confdie IP-Adressen der neuen DNS-Server geändert , aber aus irgendeinem Grund wurden bei einigen Servern die /etc/resolv.confIP-Adressen ausgeblendet oder es wurden alte DNS-IP-Adressen gefunden. In dem /etc/init.d/networkSkript sehe ich es ruft, /etc/sysconfig/network-scripts/network-functionsdie diese Funktion hat. Ist das der Täter?

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

Unter welchen Umständen wird diese Funktion aufgerufen?

Ich weiß , diese Einstellung PEERDNSzu nodem /etc/resolv.conf ändert jedoch zu verhindern, würde Ich mag wissen , ob unser Server gestartet hatte für einen DHCP - Server suchen , obwohl BOOTPROTOwurde auf noneund eine IP - Adresse angegeben wurde? wenn ja warum

Ich habe die Serverprobleme mit diesem Problem einige Male neu gestartet, um das Problem erneut zu replizieren, aber der Inhalt von /etc/resolv.confändert sich jetzt nicht. Was könnte dazu geführt haben, dass die Datei /etc/resolv.conf beim ersten Neustart geändert wurde?

Können wir verwenden BOOTPROTO=static? Ich habe gelesen, dass es veraltet ist. Unsere Maschinen sind alle RHEL 6.5

Sree
quelle

Antworten:

21

Wenn Sie lesen, werden /etc/sysconfig/network-scripts/ifup-ethSie feststellen, dass das Netzwerk DHCP verwendet, wenn BOOTPROTOauf dhcpoder gesetzt ist bootp, andernfalls wird es nicht verwendet:

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

Weiter unten, wenn DYNCONFIGnicht null ist (und dhclientverfügbar ist), versucht das Skript, DHCP zu verwenden, andernfalls wird eine statische IP-Adressierung versucht.

Wenn Sie grep -r BOOTPROTO *inside /etcverwenden, wird nichts anderes als das oben genannte Snippet angezeigt, was darauf hindeutet, dass Sie alles verwenden können, BOOTPROTOsolange es nicht eines der beiden oben genannten ist.

Sie könnten es verwenden BOOTPROTO=static, aber wenn uns mitgeteilt wird, dass es nicht unterstützt wird, können Sie nicht garantieren, dass es in Zukunft so funktionieren wird. Darüber hinaus ändert dies nichts an Ihrem Problem - staticoder noneführt dazu, dass das Skript DHCP nicht verwendet.

garethTheRed
quelle