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-адреси. Редхат каже:

 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.
  • Чи означає це, що якщо ми не вкажемо IP у файлі ifcfg-eth0, він шукатиме DHCP-сервер, і якщо вказано IP, він підбере цей статичний IP?

  • Які шанси на те, що він буде шукати DHCP-сервер і змінити /etc/resolv.conf, навіть якщо для IP-адреси вказано, IPADDR=коли для BOOTPROTO встановлено жодне значення?

Контекст: - Ми перемістили центри обробки даних і довелося змінити IP-адреси на багатьох серверах. Ми модифікували /etc/resolv.confIP-адреси нових DNS-серверів, але чомусь на деяких серверах /etc/resolv.confвимкнено або придумали старі IP-адреси DNS. У /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було встановлено noneта вказано IP-адресу? якщо так, то чому?

Я перезавантажив проблеми сервера з цією проблемою кілька разів, щоб повторити цю проблему ще раз, але вміст /etc/resolv.confне змінюється зараз. Що могло призвести до зміни /etc/resolv.conf під час першого перезавантаження?

Чи можемо ми користуватися BOOTPROTO=static? Я прочитав його застаріле. Усі наші машини RHEL 6.5

Відповіді:


21

Якщо ви прочитаєте, /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 *в межах /etcне показує нічого, крім вищевказаного фрагмента, що дозволяє вам використовувати що завгодно BOOTPROTO, якщо це не один із двох вище.

Ви можете використовувати BOOTPROTO=static, але якщо нам кажуть, що це не підтримується, то ви не можете гарантувати, що воно буде працювати в майбутньому. Крім того, це не вплине на вашу проблему - staticабо noneпризведе до того, що сценарій не використовує DHCP.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.