27.3. El servidor DHCP dhcpd

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:

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.

27.3.1. Clientes con direcciones IP fijas

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.

27.3.2. Particularidades en SUSE LINUX

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.


SUSE LINUX Manual de administración 9.3