13.10. DHCP

13.10.1. El protocolo DHCP

El protocolo “Dynamic Host Configuration Protocol” tiene como función proporcionar configuraciones de forma centralizada desde un servidor de la red, evitando así el tener que hacerlo de forma descentralizada desde cada estación de trabajo. Un cliente que haya sido configurado con DHCP no posee direcciones estáticas sino que se configura totalmente de manera automática según las especificaciones del servidor DHCP.

Existe la posibilidad de identificar a un cliente mediante la dirección de hardware de su tarjeta de red y proporcionarle siempre la misma configuración, o bien de asignar dinámicamente direcciones de un depósito creado especialmente a los ordenadores “interesados”. En este último caso, el servidor DHCP procurará asignar a un cliente siempre la misma dirección para cada consulta (aunque estén espaciadas en el tiempo) – claro que esto no funcionará si en la red hay más ordenadores que direcciones.

Por lo tanto, el administrador del sistema puede beneficiarse de DHCP de dos formas. Por una parte es posible realizar de forma centralizada, cómoda y automática grandes modificaciones (de configuración y/o de direcciones de red) en el archivo de configuración del servidor DHCP y todo ello sin tener que configurar los clientes uno a uno. Por otra parte y sobre todo, es posible integrar fácilmente nuevos ordenadores a la red asignándoles un número IP del conjunto de direcciones. En el caso de portátiles que operan de forma regular en varias redes, resulta muy útil la posibilidad de obtener la configuración de red correspondiente del respectivo servidor DHCP.

Además de asignar al cliente la dirección IP y la máscara de red se le entregarán también el nombre del ordenador y del dominio, la pasarela (gateway) a ser usada y las direcciones de los servidores de nombres. También se pueden configurar de forma central algunos parámetros, como por ejemplo un servidor de tiempo (time server), desde el cual se puede acceder a la hora actual. A continuación le ofrecemos una descripción a grandes rasgos del mundo de DHCP. También le mostraremos cómo realizar fácilmente la configuración de red de forma centralizada mediante DHCP y, más concretamente, con ayuda del servidor DHCP dhcpd.

13.10.2. Los paquetes de software DHCP

SUSE LINUX contiene un paquete de servidor DHCP y dos paquetes cliente. El servidor DHCP dhcpd publicado por el Internet Software Consortium ofrece los servicios de servidor. Como clientes DHCP disponemos de dos alternativas: por un lado, se encuentra dhcpclient, también realizado por ISC, y por el otro “DHCP Client Daemon”, incluido en el paquete dhcpcd.

dhcpcd está incluido en la instalación estándar en SuSE Linux y su manejo es muy sencillo. Ya durante el arranque del ordenador éste se ejecuta de forma automática y busca un servidor DHCP. A dhcpcd no le hace falta un archivo de configuración y normalmente funciona sin ninguna configuración adicional.

Para situaciones más complejas se puede usar el dhclient de ISC, el cual se controla desde el archivo de configuración /etc/dhclient.conf

13.10.3. El servidor DHCP: dhcpd

El Dynamic Host Configuration Protocol Daemon es el corazón de todo sistema DHCP. Éste se encarga de “alquilar” direcciones y de vigilar su uso como está estipulado en el 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.

Un ejemplo para un archivo /etc/dhcpd.conf sencillo:

Ejemplo 13.28. El archivo de configuración /etc/dhcpd.conf

default-lease-time 600;         # 10 minutes
max-lease-time 7200;            # 2  hours

option domain-name "kosmos.sol";
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 anterior ejemplo 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 ordenador que lo solicite antes de que éste 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 por defecto de su red.

  • En option domain-name-servers se pueden introducir hasta tres servidores DNS que se encargarán de resolver direcciones IP en nombres de host (y viceversa). Lo ideal sería que en su sistema o en su red hubiese ya un servidor de nombres en funcionamiento que proporcionase los nombres de host para las direcciones dinámicas y viceversa. Obtendrá más información sobre la creación de un propio servidor de nombres en el capítulo sobre DNS (13.6, “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 host de origen y el host 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.

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.

Asimismo es posible controlar 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.

13.10.4. Ordenadores con direcciones IP fijas

Como ya se ha mencionado, también existe la posibilidad de asignar a un determinado ordenador 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 sistemas que deben obtener una dirección estática, dhcpd se sirve de la dirección de hardware. Ésta 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 extracto 13.28, “El archivo de configuración /etc/dhcpd.conf” con una entrada como se muestra en el extracto 13.29, “Ampliación del archivo de configuración”, DHCPD siempre entrega los mismos datos al ordenador correspondiente.

Ejemplo 13.29. 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 ordenador que se va a definir (host hostname) y en la línea siguiente se introduce la dirección MAC. 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 como:

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

Siguiendo el ejemplo expuesto, el ordenador 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.

13.10.5. Particularidades en SUSE Linux

Por razones de seguridad, la versión del servidor ISC DHCP incluida en SUSE incorpora el parche 'non-root/chroot' de Ari Edelkind. De este modo se consigue que dhcpd pueda ejecutarse

  • como usuario 'nobody'

  • en un entorno chroot (/var/lib/dhcp)

Con este fin, el archivo de configuración /etc/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 siga ejecutándose 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 host 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 host, 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 efectuando el registro (log) 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.

13.10.6. Información adicional

Como se ha mencionado al principio, el capítulo no pretende más que introducir al lector en el mundo de DHCP. En la página web del Internet Software Consortium (http://www.isc.org/products/DHCP/) se encuentra información detallada sobre DHCP y sobre la versión 3 de este protocolo que actualmente se está desarrollando.

Además existen las páginas man como man dhcpd, man dhcpd.conf, man dhcpd.leases y man dhcp-options.

También hay una serie de libros en el mercado que detallan las posibilidades del Dynamic Host Name Configuration Protocol.

Otra característica interesante de dhcpd es la posibilidad de entregar un archivo con un kernel a los clientes que lo soliciten. Es algo que se define mediante el parámetro filename en el archivo de configuración. Así se pueden configurar clientes sin disco duro y cargar tanto el sistema operativo como los datos a través de la red, lo que puede resultar muy interesante por motivos económicos y de seguridad.