BOOTPROTO = 없음 | 정적 | dhcp 및 /etc/resolv.conf


17

파일 BOOTPROTO=none에서 말할 때의 의미는 무엇입니까?/etc/sysconfig/network-scripts/ifcfg-eth0

예전에는 기억이 났고 주어진 주소가 BOOTPROTO=static있으면 IPADDR=<x.x.x.x>서버가 지정된 IP 주소 를 얻게된다는 것을 매우 명확하고 간단하게 알 수있었습니다 . 마찬가지로, 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 서버를 찾고 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;
}

이 기능은 어떤 상황에서 호출됩니까?

/etc/resolv.conf가 변경되지 않도록 설정 PEERDNS하는 no것으로 알고 있지만 서버 BOOTPROTO가 설정되어 none있고 IP 주소가 지정 되어 있어도 서버가 DHCP 서버를 찾기 시작했는지 여부를 알고 싶습니다 . 그렇다면 왜 그렇습니까?

이 문제와 관련된 서버 문제를 몇 번 재부팅하여 문제를 다시 복제했지만 내용 /etc/resolv.conf이 바뀌지 않았습니다. 처음 재부팅 할 때 /etc/resolv.conf가 변경된 원인은 무엇입니까?

사용할 수 있습니까 BOOTPROTO=static? 더 이상 사용되지 않는 것을 읽었습니다. 우리의 기계는 모두 RHEL 6.5입니다

답변:


21

읽으면 /etc/sysconfig/network-scripts/ifup-eth네트워킹이 DHCP를 사용하는 경우 또는 BOOTPROTO로 설정되어 있고 그렇지 않으면 사용되지 않는 것을 볼 수 있습니다.dhcpbootp

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

또한 다운 DYNCONFIG이 아닌 경우 ( dhclient사용 가능한 경우) 스크립트는 DHCP를 사용하려고 시도하고 그렇지 않으면 정적 IP 주소 지정을 시도합니다.

grep -r BOOTPROTO *within을 사용 /etc하면 위의 스 니펫 이외의 것은 표시되지 않으므로 위 BOOTPROTO의 두 가지 중 하나가 아닌 한 아무것도 사용할 수 있습니다 .

을 사용할 수 BOOTPROTO=static있지만 지원되지 않는다고 말하면 앞으로 이와 같이 작동 할 것이라고 보장 할 수 없습니다. 또한,이 문제에 대한 차이를 만들 수 없습니다 - static또는 none스크립트가 DHCP를 사용하지 않는 원인이됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.