BOOTPROTO = tidak ada | statis | dhcp dan /etc/resolv.conf

17

Apa artinya itu ketika dikatakan BOOTPROTO=nonedalam /etc/sysconfig/network-scripts/ifcfg-eth0file.

Saya ingat dulu ada BOOTPROTO=staticdan sangat jelas dan langsung mengatakan kepada kami bahwa jika IPADDR=<x.x.x.x>diberikan, server akan muncul dengan alamat IP yang ditentukan. Demikian juga, BOOTPROTO=dhcpakan mencari server DHCP untuk mendapatkan alamat IP dinamis. Redhat berkata:

 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.
  • Apakah ini berarti jika kita tidak menentukan IP dalam file ifcfg-eth0, ia akan mencari server DHCP dan jika IP ditentukan, itu akan mengambil IP statis itu?

  • Bagaimana peluangnya untuk mencari server DHCP dan memodifikasi /etc/resolv.conf bahkan jika alamat IP ditentukan IPADDR=ketika BOOTPROTO tidak disetel ke mana pun?

Konteks: - Kami memindahkan pusat data dan harus mengubah alamat IP di banyak server. Kami telah memodifikasi /etc/resolv.confdengan alamat IP dari server DNS yang baru, tetapi untuk beberapa alasan, di beberapa server yang /etc/resolv.confdihilangkan, atau muncul dengan alamat IP DNS yang lama. Dalam /etc/init.d/networkskrip saya melihatnya memanggil /etc/sysconfig/network-scripts/network-functionsyang memiliki fungsi ini. Apakah ini pelakunya?

# 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;
}

Dalam keadaan apa fungsi ini disebut?

Saya tahu bahwa pengaturan PEERDNSuntuk noakan mencegah /etc/resolv.conf berubah, namun, saya ingin tahu apakah server kami sudah mulai mencari server DHCP meskipun BOOTPROTOtelah diatur ke nonedan alamat IP ditentukan? jika ya, mengapa?

Saya me-reboot masalah server dengan masalah ini beberapa kali untuk mereplikasi masalah lagi, tetapi isinya /etc/resolv.conftidak berubah sekarang. Apa yang bisa menyebabkan /etc/resolv.conf diubah di reboot pertama?

Dapat kita gunakan BOOTPROTO=static? Saya membaca ini sudah usang. Mesin kami semuanya RHEL 6.5

Sree
sumber

Jawaban:

21

Jika Anda membaca, /etc/sysconfig/network-scripts/ifup-ethAnda akan melihat bahwa jaringan menggunakan DHCP jika BOOTPROTOdisetel ke dhcpatau bootp, kalau tidak, ia tidak digunakan:

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

Lebih jauh ke bawah, jika DYNCONFIGbukan nol (dan dhclienttersedia) maka skrip mencoba menggunakan DHCP jika tidak pengalamatan IP statis dicoba.

Menggunakan di grep -r BOOTPROTO *dalam /etctidak menampilkan apa pun selain cuplikan di atas, menyarankan Anda dapat menggunakan apa pun BOOTPROTOasalkan bukan salah satu dari dua cuplikan di atas.

Anda dapat menggunakan BOOTPROTO=static, tetapi jika kami diberitahu itu tidak didukung maka Anda tidak dapat menjamin bahwa itu akan berfungsi seperti ini di masa depan. Selain itu, itu tidak akan membuat perbedaan untuk masalah Anda - staticatau noneakan menyebabkan skrip tidak menggunakan DHCP.

garethTheRed
sumber