23.3. El servidor DHCP dhcpd

El núcleo de todo sistema DHCP es el daemon del protocolo de configuración dinámica de hosts. Este servidor asigna direcciones y controla su utilización según los ajustes definidos en el archivo de configuración /etc/dhcpd.conf. El administrador del sistema puede cambiar el comportamiento del programa de diversas maneras modificando los parámetros y los valores de dicho archivo. Observe un ejemplo básico del archivo /etc/dhcpd.conf en el Ejemplo 23.1, “El archivo de configuración /etc/dhcpd.conf”.

Ejemplo 23.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 debería ser suficiente para conseguir que el servidor DHCP asignara direcciones IP en la red. Asegúrese de que haya un punto y coma al final de cada línea, ya que de lo contrario el servidor dhcpd no se iniciará.

El archivo de ejemplo anterior se puede dividir en tres secciones. La primera define durante cuántos segundos se asigna por defecto al cliente que lo pida una dirección IP (default-lease-time) antes de que tenga que realizar una petición de renovación. Esta sección también incluye una declaración del periodo máximo durante el que una máquina puede conservar una dirección IP asignada por el servidor DHCP sin realizar una petición de renovación (max-lease-time).

En la segunda parte se definen algunos parámetros básicos globales:

La última sección del archivo sirve para definir una red, incluida la máscara de subred. Para terminar, especifique el rango de direcciones que debe utilizar el daemon DHCP para asignar direcciones IP a los clientes interesados. En el Ejemplo 23.1, “El archivo de configuración /etc/dhcpd.conf”, se puede proporcionar a los clientes cualquier dirección entre 192.168.1.10 y 192.168.1.20, así como entre 192.168.1.100 y 192.168.1.200.

Después de editar estas pocas líneas, debería ser posible activar el daemon DHCP mediante el comando rcdhcpd start. Inmediatamente estará listo para usarse. Utilice el comando rcdhcpd check-syntax para realizar una pequeña comprobación de la sintaxis. Si aparece cualquier problema inesperado debido a la configuración (el servidor se interrumpe con un error o no devuelve el mensaje done [finalizado] al iniciar) debería ser posible averiguar la causa consultando la información del registro principal del sistema /var/log/messages o en la consola 10 (Ctrl-Alt-F10).

En los sistemas SUSE Linux por defecto, el daemon DHCP se inicia en un entorno chroot por motivos de seguridad. Los archivos de configuración deben copiarse al entorno chroot para que el daemon pueda encontrarlos. Normalmente, no es necesario preocuparse de ello, ya que el comando rcdhcpd start copia los archivos automáticamente.

23.3.1. Clientes con dirección IP fija

DHCP se puede utilizar también para asignar una dirección estática predefinida a un cliente concreto. Las direcciones asignadas explícitamente siempre tienen prioridad sobre las direcciones dinámicas del conjunto de direcciones. Además, las direcciones estáticas no caducan nunca como lo harían las direcciones dinámicas si, por ejemplo, no hubiera suficientes direcciones disponibles y el servidor necesitara redistribuirlas entre los clientes.

Para identificar a los clientes configurados con direcciones estáticas, dhcpd utiliza la dirección de hardware, que es un código global numérico, fijo y único que consta de seis pares de bytes que identifican los dispositivos de red (por ejemplo, 00:00:45:12:EE:F4). Si se añaden al archivo de configuración del Ejemplo 23.2, “Adiciones al archivo de configuración” las líneas correspondientes, como las del Ejemplo 23.1, “El archivo de configuración /etc/dhcpd.conf”, el daemon DHCP asignará siempre el mismo conjunto de datos a los clientes correspondientes.

Ejemplo 23.2. Adiciones al archivo de configuración

host earth {
hardware ethernet 00:00:45:12:EE:F4;
fixed-address 192.168.1.21;
}

El nombre del cliente correspondiente (host nombredelhost, earth en este caso) se introduce en la primera línea, y la dirección MAC, en la segunda. En los hosts Linux, esta dirección se puede obtener mediante el comando ip link show seguido del dispositivo de red (por ejemplo, eth0). La salida debería contener una línea de la forma

link/ether 00:00:45:12:EE:F4

En el ejemplo anterior, al cliente con la tarjeta de red de dirección MAC 00:00:45:12:EE:F4 se le asignarán automáticamente la dirección IP 192.168.1.21 y el nombre de host earth. El tipo de hardware que debe introducirse es ethernet en casi todos los casos, aunque también se admite token-ring, que suele encontrarse en sistemas IBM.

23.3.2. La versión SUSE Linux

Para mejorar la seguridad, la versión SUSE del servidor DHCP del ISC se ofrece con la revisión non-root/chroot de Ari Edelkind incluida. Esto permite que dhcpd se ejecute con el ID de usuario nobody y en un entorno chroot (/var/lib/dhcp). Para que esto sea posible, el archivo de configuración dhcpd.conf debe encontrarse en /var/lib/dhcp/etc. El guión init copia automáticamente el archivo a este directorio al iniciarse.

Se puede controlar el comportamiento del servidor respecto a esta función mediante entradas en el archivo /etc/sysconfig/dhcpd. Para ejecutar dhcpd sin el entorno chroot, ajuste la variable DHCPD_RUN_CHROOTED de /etc/sysconfig/dhcpd a “no”.

Para activar la resolución de nombres de host en dhcpd incluso desde el entorno chroot, es preciso copiar además otros archivos de configuración:

  • /etc/localtime

  • /etc/host.conf

  • /etc/hosts

  • /etc/resolv.conf

Estos archivos se copian en /var/lib/dhcp/etc/ al iniciarse el guión init. Tenga en cuenta los cambios que puedan necesitar dichas copias si se modifican dinámicamente mediante guiones como /etc/ppp/ip-up. No obstante, no es necesario preocuparse por ello si el archivo de configuración especifica únicamente direcciones IP (en lugar de nombres de host).

Si su configuración incluye archivos adicionales que deben copiarse en el entorno chroot, especifíquelos en la variable DHCPD_CONF_INCLUDE_FILES del archivo /etc/sysconfig/dhcpd. Para garantizar que la función de registro de DHCP siga funcionando incluso después de que se reinicie el daemon syslog-ng daemon, existe una entrada adicional, SYSLOGD_ADDITIONAL_SOCKET_DHCP, en el archivo /etc/sysconfig/syslog.