BOOTPROTO = none | 静的| dhcpおよび/etc/resolv.conf


17

それは言うとき、それはどういう意味BOOTPROTO=none/etc/sysconfig/network-scripts/ifcfg-eth0のファイル。

以前は存在していたことを覚えていますがBOOTPROTO=static、a IPADDR=<x.x.x.x>が与えられた場合、サーバーは指定されたIPアドレスを取得することを伝えることは非常に明確で簡単でした。同様に、BOOTPROTO=dhcpDHCPサーバーを探して動的IPアドレスを取得します。Redhatのコメント:

 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.
  • ifcfg-eth0ファイルでIPを指定しない場合、DHCPサーバーを検索し、IPが指定されている場合、その静的IPを取得しますか?

  • IPADDR=BOOTPROTOがnoneに設定されているときにIPアドレスが指定されている場合でも、DHCPサーバーを探して/etc/resolv.confを変更する可能性はありますか?

コンテキスト:-データセンターを移動し、多くのサーバーのIPアドレスを変更する必要がありました。/etc/resolv.conf新しいDNSサーバーのIPアドレスを変更しましたが、何らかの理由で、一部のサーバーで/etc/resolv.conf空白になったり、古いDNS IPアドレスを見つけたりしました。では/etc/init.d/networkスクリプト私はそれが呼び出し元であることがわかり/etc/sysconfig/network-scripts/network-functions、この機能を持っています。これが犯人ですか?

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

この関数はどのような状況下で呼び出されますか?

私が設定していることを知っているPEERDNSとすると、no変更するのは/etc/resolv.confを防ぐことができます、しかし、私は、当社のサーバーにもかかわらず、DHCPサーバを探し始めていたかどうかを知りたいのBOOTPROTOに設定されたnoneIPアドレスが指定されましたか?はいの場合、なぜですか?

問題を再現するために、この問題に関するサーバーの問題を数回再起動しましたが、の内容は/etc/resolv.conf現在変更されていません。最初の再起動で/etc/resolv.confが変更された原因は何ですか?

使用できますBOOTPROTO=staticか?非推奨になりました。私たちのマシンはすべてRHEL 6.5です

回答:


21

を読む/etc/sysconfig/network-scripts/ifup-ethと、BOOTPROTOdhcpまたはbootpに設定されている場合、ネットワークはDHCPを使用していることがわかります。

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

さらにダウンすると、DYNCONFIGnullでない場合(およびdhclient使用可能)、スクリプトはDHCPの使用を試行します。そうでない場合、静的IPアドレス指定が試行されます。

grep -r BOOTPROTO *within を使用し/etcても上記のスニペット以外は表示されないため、上記BOOTPROTOの2つのうちのいずれでもない限り使用できることが示唆されます。

を使用できますがBOOTPROTO=static、サポートされていないと言われた場合、将来このように動作することを保証できません。また、問題に影響はありません- staticまたはnone、スクリプトがDHCPを使用しないようにします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.