
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
思います。では、なぜそうなのでしょうか?BOOTPROTO
none
問題を再現するために、この問題でサーバーを数回再起動しましたが、/etc/resolv.conf
今は内容が変更されていません。最初の再起動時に/etc/resolv.confが変更される原因は何ですか?
私たちはそれを使用できますかBOOTPROTO=static
?私はそれがもう使用されていないことを読んだ。私達の機械はすべてRHEL 6.5です。
答え1
読んでいる場合、またはに設定されている場合、/etc/sysconfig/network-scripts/ifup-eth
ネットワークはDHCPを使用し、それ以外の場合は次のものを使用しないことがわかります。BOOTPROTO
dhcp
bootp
if ["${BOOTPROTO}" = "bootp" -o "${BOOTPROTO}" = "dhcp" ]; then DYNCONFIG=true
さらに、DYNCONFIG
空でなくdhclient
使用できない場合、スクリプトはDHCPを使用しようとし、そうでない場合は静的IPアドレス指定を試みます。
grep -r BOOTPROTO *
insideを使用すると、上記のコードスニペット以外には何も表示されません。これは、上記の2つのうちの1つでない限り、/etc
内部を使用できることを示しています。BOOTPROTO
使用できますが、BOOTPROTO=static
サポートされていないというメッセージが表示された場合、後でこのように機能することを保証することはできません。また、問題に影響を与えず、スクリプトがDHCPを無効にしますstatic
。none