BOOTPROTO = ingen | statisk | dhcp och /etc/resolv.conf

Vad betyder det när det står BOOTPROTO=none i /etc/sysconfig/network-scripts/ifcfg-eth0 -fil.

Jag kommer ihåg att det förr fanns BOOTPROTO=static och det var väldigt tydligt och enkelt att säga att om en IPADDR=<x.x.x.x> ges kommer servern att ange den angivna IP-adressen. På samma sätt kommer BOOTPROTO=dhcp att leta efter en DHCP-server för att få en dynamisk IP-adress. Redhat säger:

 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. 
  • Betyder det att om vi inte anger IP i ifcfg-eth0-fil, kommer det att leta efter en DHCP-server och om en IP är specificerad kommer den att ta den statiska IP-adressen?

  • Vilka är chansen att den letar efter en DHCP-server och ändrar / etc / resolv. conf även om en IP-adress är angiven med IPADDR= när BOOTPROTO är inställd på ingen?

Kontext: – Vi flyttade datacenter och var tvungen att ändra IP-adresser på många av servrarna. Vi hade ändrat /etc/resolv.conf med IP-adresserna till de nya DNS-servrarna, men av vissa anledningar, på vissa av servrarna /etc/resolv.conf tömdes ut eller kom med gamla DNS-IP-adresser. I /etc/init.d/network -skriptet ser jag att det ringer till /etc/sysconfig/network-scripts/network-functions vilken har den här funktionen. Är detta den skyldige?

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

Under vilka omständigheter kallas denna funktion?

Jag vet den inställningen till no förhindrar att /etc/resolv.conf ändras, men jag skulle vilja veta om vår server hade börjat leta efter en DHCP-server även fastän BOOTPROTO var inställd på none och en IP-adress angavs? om ja, varför?

Jag startade om serverns problem med det här problemet några gånger för att replikera problemet igen, men innehållet i /etc/resolv.conf ändras inte nu. Vad kan ”ha orsakat att /etc/resolv.conf ändrades vid den första omstarten?

Kan vi använda BOOTPROTO=static? Jag läste dess föråldrade. Våra maskiner är alla RHEL 6.5

Svar

Om du läser /etc/sysconfig/network-scripts/ifup-eth ser du att nätverk använder DHCP om BOOTPROTO är inställt på dhcp eller bootp, annars är det används inte:

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

Längre nere, om DYNCONFIG inte är noll (och dhclient är tillgängligt) försöker manusen att använda DHCP, annars försöks statisk IP-adressering.

Med grep -r BOOTPROTO * inom /etc visar inget annat än ovanstående kod, vilket tyder på att du kan använda något i BOOTPROTO så länge det inte är någon av de två ovan.

Du kan använda BOOTPROTO=static, men om vi ”säger att det inte stöds kan du inte garantera att hatt det kommer att fungera så här i framtiden. Dessutom kommer det inte att göra någon skillnad i ditt problem – static eller none gör att skriptet inte använder DHCP.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *