BOOTPROTO=None|static|dhcp および /etc/resolv.conf

BOOTPROTO=None|static|dhcp および /etc/resolv.conf

BOOTPROTO=none文書には何と書かれていますか/etc/sysconfig/network-scripts/ifcfg-eth0

私はそれが与えられたときにサーバーが指定されたIPアドレスを提供することBOOTPROTO=staticを非常に明確かつ直接的に知らせたことを覚えています。IPADDR=<x.x.x.x>同様に、BOOTPROTO=dhcp動的IPアドレスを取得するためにDHCPサーバーを見つけます。レッドハットはこう言いました。

 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サーバーを探し、DHCPサーバーが指定されている場合はその固定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に設定すると、/etc/resolv.confが変更されないことがわかりますが、に設定され、IPアドレスが指定されていても、サーバーがDHCPサーバーを探し始めるかどうか疑問にno思います。では、なぜそうなのでしょうか?BOOTPROTOnone

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

私たちはそれを使用できますかBOOTPROTO=static?私はそれがもう使用されていないことを読んだ。私達の機械はすべてRHEL 6.5です。

ベストアンサー1

読んでいる場合、またはに設定されている場合、/etc/sysconfig/network-scripts/ifup-ethネットワークはDHCPを使用し、それ以外の場合は次のものを使用しないことがわかります。BOOTPROTOdhcpbootp

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

さらに、DYNCONFIG空でなくdhclient使用できない場合、スクリプトはDHCPを使用しようとし、そうでない場合は静的IPアドレス指定を試みます。

grep -r BOOTPROTO *insideを使用すると、上記のコードスニペット以外には何も表示されません。これは、上記の2つのうちの1つでない限り、/etc内部を使用できることを示しています。BOOTPROTO

使用できますが、BOOTPROTO=staticサポートされていないというメッセージが表示された場合、後でこのように機能することを保証することはできません。また、問題に影響を与えず、スクリプトがDHCPを無効にしますstaticnone

おすすめ記事