El Dynamic Host Configuration Protocol Daemon es el
corazón de todo sistema DHCP. Este se encarga de “alquilar”
direcciones y de vigilar su uso conforme al archivo de configuración
/etc/dhcpd.conf. El administrador del sistema puede
determinar el comportamiento del DHCP según sus preferencias mediante los
parámetros y valores definidos en este archivo. Puede encontrar un ejemplo de
un archivo /etc/dhcpd.conf sencillo en el Ejemplo 27.1, “El archivo de configuración /etc/dhcpd.conf”:
Ejemplo 27.1. El archivo de configuración /etc/dhcpd.conf
default-lease-time 600; # 10 minutes
max-lease-time 7200; # 2 hours
option domain-name "cosmos.all";
option domain-name-servers 192.168.1.1, 192.168.1.2;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;
subnet 192.168.1.0 netmask 255.255.255.0
{
range 192.168.1.10 192.168.1.20;
range 192.168.1.100 192.168.1.200;
}
Este sencillo archivo de configuración es suficiente para que DHCP pueda asignar direcciones IP en la red. Preste especial atención a los signos de punto y coma al final de cada línea sin los cuales dhcpd no arrancará.
Como se puede observar, el ejemplo anterior puede dividirse en tres bloques.
En la primera parte se define de forma estándar cuántos segundos se
“alquilará” una dirección IP a un cliente que lo solicite
antes de que este tenga que pedir una prórroga
(default-lease-time). Aquí también se define el tiempo
máximo durante el cual un ordenador puede conservar un número IP otorgado
por el servidor DHCP sin tener que tramitar para ello una prórroga
(max-lease-time).
En el segundo bloque se definen globalmente algunos parámetros de red básicos:
Con option domain-name se define el dominio
predeterminado de la red.
En option domain-name-servers se pueden introducir
hasta tres servidores DNS que se encargarán de resolver direcciones IP en
nombres de equipo (y viceversa). Lo ideal sería que en el sistema o red
hubiese ya un servidor de nombres en funcionamiento que proporcionase los
nombres de equipo para las direcciones dinámicas y viceversa. Obtendrá más
información sobre la creación de un servidor de nombres propio en el
Capítulo 24, DNS (Domain Name System)).
option broadcast-address define qué dirección
broadcast debe usar el ordenador que efectúa la consulta.
option routers define dónde deben ser enviados los
paquetes de datos que no pueden ser entregados en la red local (a causa de
la dirección del ordenador de origen y de destino así como de la máscara
de subred). Este enrutador suele actuar como la pasarela a Internet en
pequeñas redes.
option subnet-mask proporciona al cliente la máscara de
red a entregar.
Por debajo de esta configuración general se define una red con su máscara de
subred. Por último basta con seleccionar el rango de direcciones utilizado
por el daemon DHCP para asignar direcciones IP a clientes que lo
consulten. Para el ejemplo dado, son todas las direcciones entre
192.168.1.10 y 192.168.1.20 y también
en el rango de 192.168.1.100 hasta
192.168.1.200.
Después de esta breve configuración, ya debería ser posible iniciar el
daemon DHCP mediante el comando
rcdhcpd start. Asimismo es posible comprobar la sintaxis de la configuración mediante el
comando rcdhcpd check-syntax. Si
hay algún problema y el servidor da un error en lugar de indicar
“done”, el archivo /var/log/messages así
como la consola 10
(Ctrl-Alt-F10)
ofrecen más información.
Por motivos de seguridad, el daemon DHCP se inicia por defecto en un
entorno chroot en SUSE LINUX. Para poder encontrar los archivos de
configuración, es necesario copiarlos en el nuevo entorno. Esto sucede
automáticamente con el comando
rcdhcpd start.
Como ya se ha mencionado, también existe la posibilidad de asignar a un determinado client la misma dirección IP en cada consulta. Estas asignaciones explícitas de una dirección tienen prioridad sobre la asignación de direcciones desde un conjunto de direcciones dinámicas. Al contrario de lo que sucede con las direcciones dinámicas, las fijas no se pierden; ni siquiera cuando ya no quedan direcciones y se requiere una redistribución de las mismas.
Para identificar a los clientes que deben obtener una dirección
estática, dhcpd se sirve de la dirección de hardware. Esta
es una dirección única en el mundo para identificar las interfaces de red. Se
compone de seis grupos de dos cifras hexadecimales, por ejemplo
00:00:45:12:EE:F4. Al ampliar el archivo de configuración
que se refleja en el Ejemplo 27.1, “El archivo de configuración /etc/dhcpd.conf” con una entrada
como se muestra en el Ejemplo 27.2, “Ampliación del archivo de configuración”, DHCPD
siempre entrega los mismos datos al cliente correspondiente.
Ejemplo 27.2. Ampliación del archivo de configuración
host tierra {
hardware ethernet 00:00:45:12:EE:F4;
fixed-address 192.168.1.21;
}
El significado de estas líneas se explica prácticamente por sí mismo.
Primero aparece el nombre del cliente que se va a definir
(host nombre_host, aquí
tierra) y en la línea siguiente se
introduce la dirección MAC. Esta es muy fácil de averiguar en Linux
ejecutando el comando ifstatus seguido de la interfaz de
red (por ejemplo eth0). Puede que sea necesario activar
previamente la tarjeta: ifup eth0.
Este comando produce una salida semejante a:
link/ether 00:00:45:12:EE:F4
Siguiendo el ejemplo expuesto, el cliente con la dirección MAC
00:00:45:12:EE:F4 recibe automáticamente la dirección IP
192.168.1.21 y el nombre tierra. Como tipo de
hardware hoy en día se suele utilizar ethernet, pero tampoco
hay problemas con token-ring que se encuentra en muchos
sistemas de IBM.
Por razones de seguridad, la versión del servidor ISC DHCP incluida en
SUSE LINUX incorpora el parche 'non-root/chroot' de Ari Edelkind. De este modo
se consigue que dhcpd pueda ejecutarse
como usuario nobody dentro
de un entorno “chroot” (/var/lib/dhcp).
Con este fin, el archivo de configuración
dhcpd.conf debe copiarse en el directorio
/var/lib/dhcp/etc, lo que es
realizado automáticamente por el script de inicio durante el arranque.
Este comportamiento puede definirse en el archivo
/etc/sysconfig/dhcpd. Para que
dhcpd se ejecute sin entorno chroot, el valor de
la variable DHCPD_RUN_CHROOTED en el archivo
/etc/sysconfig/dhcpd ha de ser “no”.
Si desea que dhcpd pueda resolver nombres de
ordenador también en el entorno chroot, debe copiar a /var/lib/dhcp/etc/ los siguientes archivos de
configuración adicionales:
/etc/localtime
/etc/host.conf
/etc/hosts
/etc/resolv.conf
Estos archivos serán copiados a /var/lib/dhcp/etc/ al iniciar el script de
arranque. Los archivos han de mantenerse en un estado actualizado en caso de
que sean modificados dinámicamente por un script como
/etc/ppp/ip-up. Si el archivo de configuración contiene
únicamente direcciones IP en lugar de nombres de ordenador, no habrá ningún
problema.
Puede copiar varios archivos en el entorno chroot por medio del parámetro
DHCPD_CONF_INCLUDE_FILES en el archivo
etc/sysconfig/dhcpd. Para que el daemon dhcp siga protocolizando el registro desde el entorno
chroot incluso cuando se reinicie el daemon syslog, debe añadir la opción
"-a /var/lib/dhcp/dev/log" a la variable
SYSLOGD_PARAMS en el archivo
/etc/sysconfig/syslog.