Universidad Simón Bolívar Diseño y Administración de Redes Septiembre - Diciembre 1.998 DHCPD / BOOTPD Naikel Aparicio
BOOTPD bootpd es el servicio que permite que otras máquinas puedan descubrir su número IP y puedan arrancar aún sin tener disco. Para ofrecer su servicio bootpd utiliza BOOTP, el BootStrap Protocol definido en el RFC-951. El protocolo está primordialmente diseñado para que máquinas sin disco puedan arrancar a través de la red. BOOTP fue diseñado para reemplazar a RARP, un protocolo que sólo funcionaba en una red local porque utiliza, al igual que ARP, el servicio de broadcast que provee dicha red local (no el broadcast de IP).
BOOTPD: Características Resaltantes El protocolo bootpd tiene las siguientes características: Asignación de números IP estáticamente Transferencia del archivo de arranque (bootfile) a través de TFTP, que funciona sobre UDP/IP No utiliza tiempo de expiración o lease. La información obtenida por el cliente no es actualizada hasta que se realice un restart Actualmente se tiende a utilizar DHCP (descrito más adelante) en lugar de BOOTP
Uso y Configuración del bootpd Las diferentes distribuciones de servidores BOOTP consisten básicamente de dos programas: bootpd, que es el demonio o servidor que se encarga de responder los mensajes de los clientes bootpgw, o BootStrap Relay Agent, el cual se encarga de hacer reenvío (forwarding) de las preguntas y respuestas del BootStrap Protocol entre clientes de una subred a un servidor BOOTP en otra subred
Uso y Configuración del bootpd Para ejecutar el bootpd desde el inetd deben agregarse las siguientes líneas al archivo /etc/inetd.conf: bootps dgram udp wait root /etc/bootpd bootpd bootptab file bootps dgram udp wait root /etc/bootpgw bootpgw server Si el bootpd es configurado de esta forma, será invocado cuando inetd reciba una petición de algún cliente BOOTP. Debe crearse un archivo (generalmente llamado bootptab) donde se encuentren las configuraciones para las distintas máquinas que podrán ser clientes del servicio
Opciones del bootpd bootpd [-i -t timeout -d level -c path] [bootptab] -t timeout Especifica el valor en minutos del timeout que el servidor esperará por paquetes BOOTP. -d level Especifica el nivel de debugging del proceso. -c path Indica el directorio donde se encuentran los archivos para el boot de los clientes. -i Fuerza que bootpd sea cargado cuando el inetd reciba una petición (inetd mode) bootptab Especifica el archivo de configuración.
Archivo de Configuración bootptab El formato general del archivo es: hostname:tg=value... :tg=value... :tg=value... :tg=value... hostname es el nombre de un cliente bootp y tg puede ser: bs Bootfile size in 512-octet blocks cs Cookie server address list df Merit dump file dn Domain name ds Domain name server address list ef Extension file gw Gateway address list ha Host hardware address hd Bootfile home directory hn Send client s hostname to client ht Host hardware type (see Assigned Numbers RFC) im Impress server address list ip Host IP address lg Log server address list lp LPR server address list ns IEN-116 name server address list nt NTP (time) Server (RFC 1129) ra Reply address override rl Resource location protocol server address list rp Root path to mount as root sa TFTP server address client should use sm Host subnet mask sw Swap server address tc Table continuation (points to similar "template" host entry) td TFTP root directory used by "secure" TFTP servers to Time offset in seconds from UTC ts Time server address list vm Vendor magic cookie selector yd YP (NIS) domain name ys YP (NIS) server addres
Ejemplo de bootptab # /etc/bootptab: Base de Datos para Servidor bootp # # Primero, definimos un entry global que especifica lo que todo host usa. # Si "td" es vacio, bootpd debe correrse con "-c /tftpboot".default:\ :hn:\ # Envia el hostname al Cliente :dn="mc.com":\ # Domain Name :td=/tftpboot:\ # Directorio donde estan los boot files :ds=merlin, jericho:\ # Domain Name Servers :to=auto: # Time Offset # Definimos entries para cada subred.subnet16:\ :tc=.default:\ :sm=255.255.255.0:\ :gw=merlin:\ :sa=merlin: # Continua en.default # Subnet Mask # Gateway # Servidor TFTP que el Cliente debe usar.subnet17:\ :tc=.default:\ :sm=255.255.255.0:\ :gw=merlin-gw:\ :sa=merlin-gw: # Continua en.default # Subnet Mask # Gateway # Servidor TFTP que el Cliente debe usar # Entries Individuales: whisper:ht=ethernet:\ :ha=0f03113145f1:\ :ip=192.168.14.41:\ :tc=subnet17:\ :bf=boot.sun4c: # Tipo de Interfaz de Hardware # MAC Address # Numero IP a asignar # Otras opciones # Archivo de boot # Otros ejemplos: amadeus:tc=.subnet16:ha=00.00.c9.00.42.e0:bf=vmlinuz_2.0.35:ip=192.168.13.22: tp885: tc=.subnet17:ha=08.00.4c.00.2f.74:bf=tp885sys2.cfe:ip=192.68.14.45: bach: tc=.subnet16:ha="08:00:20:04:98:8d":bf=boot.sun4m:ip=192.68.13.24:
DHCPD dhcpd es el demonio que reemplaza a bootpd en la asignación de números IP y arranque remoto. A diferencia del bootpd, dhcpd utiliza el Dynamic Host Configuration Protocol, definido en el RFC-2131 (antes se encontraba definido en el RFC-1541). Este protocolo permite una asignación dinámica de números IP que bootpd no permite. Cada distribución del dhcpd contiene el demonio (dhcpd) y un Relay Agent (dhcrelay) para realizar el reenvío de las peticiones de una subred a otra.
DHCPD: Características Resaltantes DHCP tiene las siguientes características: Asignación dinámica y estática de números IP Soporta todas las peticiones que soporta de BOOTP (compatibilidad absoluta) Permite asignar varios números IP a una dirección única MAC Utiliza un tiempo de expiración de direcciones IP, para ser asignados a otros clientes. A cada cliente (o conjunto de ellos) se le asigna un lease, que es el tiempo de expiración de su dirección IP. Una vez que el número IP expira, el cliente debe realizar otra petición para otro número IP.
Opciones del dhcpd Los argumentos de línea de comando del dhcpd son: dhcpd [-d] [-f] [-cf config-file] [-lf lease-file] [if0 [...ifn]] -d -f Activa la depuración (debugging). Todos los mensajes y errores son enviados al syslog. Ejecuta dhcpd como un foreground process. -cf config-file Indica el archivo de configuración. Normalmente este es /etc/dhcpd.conf. -lf lease-file Indica el archivo para la base de datos de los leases. if0..ifn Nombres de las interfaces por los cuales dhcpd escuchará los broadcasts.
Archivos de Configuración Toda la configuración con respecto a las subredes y a laos máquinas se encuentran en el archivo dhcpd.conf. Los leases son manejados internamente por dhcpd en el archivo dhcpd.leases. Un ejemplo de archivo dhcpd.conf es: parametros globales... shared-network ISC-BIGGIE { parametros especificos del shared-network subnet 204.254.239.0 netmask 255.255.255.224 { parametros especificos de la subred range 204.254.239.10 204.254.239.30; subnet 204.254.239.32 netmask 255.255.255.224 { parametros especificos de la subred range 204.254.239.42 204.254.239.62; subnet 204.254.239.64 netmask 255.255.255.224 { parametros especificos de la subred range 204.254.239.74 204.254.239.94; group { parametros especificos del grupo host zappo.test.isc.org { parametros especificos del host host beppo.test.isc.org { parametros especificos del host
Archivo dhcpd.conf shared-network En este grupo se indican subredes lógicas que pertenecen a la misma subred física. subnet Definición de una subred. Debe tener suficiente información para que dhcpd pueda saber si un IP pertenece o no a esa subred. range Indica el conjunto de números IP el cual dhcpd asignará dinámicamente a los hosts pertenecientes a esa subred. host Esta opción es generalmente usada para clientes BOOTP. Indica la información específica de un host, como su número IP y su archivo de arranque (boot). group Se utiliza para asignar parámetros generales a un conjunto de hosts, subredes o shared-networks.
Parámetros allow/deny Indican si se permite una o varias de las siguientes opciones: bootp, unknown-clients, booting. default-lease-time Especifica el tiempo en segundos para el lease. max-lease-time Especifica el tiempo máximo que se le puede asignar al lease de un cliente. hardware Indica el tipo de tarjeta de red que se utiliza. (ej. ethernet). filename Especifica el archivo de arranque (boot).
Parámetros (continuación) server-name Se utiliza para informar al cliente el nombre del servidor a través del cual realiza el booting. next-server Indica la dirección del servidor de donde el cual se cargará el archivo de boot. fixed-address Especifica una o más direcciones IP para ser asignadas a un único host. options Definen opciones diversas, como servidores DNS, netmasks, direcciones de broadcast, etc.
Ejemplo de dhcpd.conf # dhcpd.conf # Archivo de Configuracion para el dhcpd # server-identifier toccata.fugue.com; option domain-name "fugue.com"; option domain-name-servers toccata.fugue.com; # Shared Network es usada para agrupar subredes que comparten la misma # red fisica. shared-network FUGUE { option subnet-mask 255.255.255.224; default-lease-time 600; max-lease-time 7200; # Subredes Logicas que pertenecen a la misma subred fisica. subnet 204.254.239.0 netmask 255.255.255.224 { range 204.254.239.10 204.254.239.20; option broadcast-address 204.254.239.31; option routers prelude.fugue.com; subnet 204.254.239.32 netmask 255.255.255.224 { range dynamic-bootp 204.254.239.10 204.254.239.20; option broadcast-address 204.254.239.31; option routers snarg.fugue.com; # Hosts que requieren configuracion especial (como los clientes BOOTP) host fantasia { hardware ethernet 0:0:c0:5d:bd:95; filename "vmunix.fantasia"; fixed-address fantasia.fugue.com; server-name "toccata.fugue.com";