BOOTPROTO = không | tĩnh | dhcp và /etc/resolv.conf


17

Nó có nghĩa là gì khi nó nói BOOTPROTO=nonetrong /etc/sysconfig/network-scripts/ifcfg-eth0tập tin.

Tôi nhớ đã từng có BOOTPROTO=staticvà rất rõ ràng và thẳng thắn khi nói với chúng tôi rằng nếu IPADDR=<x.x.x.x>được đưa ra, máy chủ sẽ đưa ra địa chỉ IP được chỉ định. Tương tự như vậy, BOOTPROTO=dhcpsẽ tìm một máy chủ DHCP để lấy địa chỉ IP động. Redhat nói:

 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.
  • Có nghĩa là nếu chúng ta không chỉ định IP trong tệp ifcfg-eth0, nó sẽ tìm máy chủ DHCP và nếu IP được chỉ định, nó sẽ nhận IP tĩnh đó?

  • Cơ hội mà nó sẽ tìm kiếm máy chủ DHCP và sửa đổi /etc/resolv.conf ngay cả khi địa chỉ IP được chỉ định IPADDR=khi BOOTPROTO được đặt thành không?

Bối cảnh: - Chúng tôi đã di chuyển các trung tâm dữ liệu và phải thay đổi địa chỉ IP trong nhiều máy chủ. Chúng tôi đã sửa đổi /etc/resolv.confđịa chỉ IP của các máy chủ DNS mới, nhưng vì một số lý do, trong một số máy chủ, chúng /etc/resolv.confbị xóa trắng hoặc xuất hiện các địa chỉ IP DNS cũ. Trong /etc/init.d/networkkịch bản tôi thấy nó đang gọi /etc/sysconfig/network-scripts/network-functionscó chức năng này. Đây có phải là thủ phạm?

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

Theo chức năng này, chức năng này được gọi là gì?

Tôi biết rằng thiết lập PEERDNSđể nosẽ ngăn chặn sự /etc/resolv.conf từ việc thay đổi, tuy nhiên, tôi muốn biết liệu máy chủ của chúng tôi đã bắt đầu tìm kiếm một máy chủ DHCP mặc dù BOOTPROTOđã được thiết lập để nonevà một địa chỉ IP đã được chỉ định? nếu đúng thì tại sao?

Tôi đã khởi động lại các vấn đề máy chủ với vấn đề này một vài lần để sao chép lại vấn đề, nhưng hiện tại nội dung /etc/resolv.confkhông thay đổi. Điều gì có thể khiến /etc/resolv.conf bị thay đổi trong lần khởi động lại đầu tiên?

Chúng ta có thể sử dụng BOOTPROTO=static? Tôi đọc nó phản đối. Máy của chúng tôi là tất cả RHEL 6.5

Câu trả lời:


21

Nếu bạn đọc /etc/sysconfig/network-scripts/ifup-ethbạn sẽ thấy rằng mạng sử dụng DHCP nếu BOOTPROTOđược đặt thành dhcphoặc bootp, nếu không thì nó không được sử dụng:

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

Hơn nữa, nếu DYNCONFIGkhông phải là null (và dhclientcó sẵn) thì các tập lệnh cố gắng sử dụng DHCP nếu không địa chỉ IP tĩnh được thử.

Sử dụng grep -r BOOTPROTO *bên trong /etckhông hiển thị bất cứ điều gì ngoài đoạn trích ở trên, cho thấy bạn có thể sử dụng bất cứ điều gì BOOTPROTOmiễn là nó không phải là một trong hai điều trên.

Bạn có thể sử dụng BOOTPROTO=static, nhưng nếu chúng tôi nói rằng nó không được hỗ trợ thì bạn không thể đảm bảo rằng nó sẽ hoạt động như thế này trong tương lai. Ngoài ra, nó sẽ không tạo ra sự khác biệt cho vấn đề của bạn - statichoặc nonesẽ khiến tập lệnh không sử dụng DHCP.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.