BOOTPROTO =无| 静态 dhcp和/etc/resolv.conf


17

BOOTPROTO=none/etc/sysconfig/network-scripts/ifcfg-eth0文件中说的是什么意思。

我记得以前曾经有过BOOTPROTO=static,告诉我们如果IPADDR=<x.x.x.x>给出了,服务器将提供指定的IP地址,这非常清楚直接。同样,BOOTPROTO=dhcp将寻找DHCP服务器以获得动态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;
}

该函数在什么情况下被称为?

我知道,设置PEERDNSno防止从改变/etc/resolv.conf中,但是,我想知道我们的服务器是否已经开始寻找即使DHCP服务器BOOTPROTO设置为none与IP地址已经被指定?如果是,为什么?

我几次重新启动了与此问题有关的服务器问题,以再次复制该问题,但/etc/resolv.conf现在的内容没有改变。是什么原因导致/etc/resolv.conf在第一次重新引导时被更改?

我们可以使用BOOTPROTO=static吗?我阅读了已弃用的内容。我们的机器都是RHEL 6.5

Answers:


21

如果阅读,/etc/sysconfig/network-scripts/ifup-eth您会看到如果BOOTPROTO设置为dhcpbootp,则网络使用DHCP ,否则将不使用:

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

再往下看,如果DYNCONFIG不为null(并且dhclient可用),则脚本将尝试使用DHCP,否则将尝试静态IP寻址。

使用grep -r BOOTPROTO */etc不会表现出比上面的代码以外的任何其他,这表明你可以在使用任何东西BOOTPROTO,只要它不是上面的两个中的一个。

您可以使用BOOTPROTO=static,但是如果我们被告知它不受支持,则您不能保证它将来会这样工作。此外,它不会对您的问题有所影响- staticnone将导致脚本不使用DHCP。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.