18.2. Configuración de un servidor DHCP

Puede configurar un servidor DHCP mediante el archivo de configuración /etc/dhcpd.conf.

DHCP también usa el archivo /var/lib/dhcp/dhcpd.leases para almacenar la base de datos de arrendamiento de clientes. Consulte Sección 18.2.2 para más información.

18.2.1. Archivo de configuración

El primer paso al configurar un servidor DHCP es crear el archivo de configuración que almacena la información de red de los clientes. Se pueden declarar opciones globales para todos los clientes, o bien opciones para cada sistema cliente.

El archivo de configuración puede contener tabulaciones o líneas en blanco adicionales para facilitar el formato. Las palabras clave no distinguen entre mayúsculas y minúsculas, y las líneas que empiezan con una almohadilla o símbolo numeral (#) se consideran comentarios.

Hay dos tipos de esquemas DNS de actualización implementados actualmente — el modo de actualización DNS ad-hoc y el modo de actualización de interacción DHCP-DNS. Si y cuando estos dos son aceptados como parte del proceso estándar de IETF, habrá un tercer modo — el método estándar de actualización DNS. El servidor DHCP tiene que estar configurado para usar uno de estos dos tipos de actualización. La versión 3.0b2p111 y las versiones anteriores usaban el modo ad-hoc, pero ya no se usan. Si quiere conservar el mismo comportamiento, añada la siguiente línea al inicio del archivo de configuración: file:

ddns-update-style ad-hoc;

Para usar el modo recomendado, añada la siguiente línea al inicio del archivo de configuración:

ddns-update-style interim;

Lea la página man de dhcpd.conf para más detalles sobre los diferentes modos.

El archivo de configuración posee dos tipos de información:

Algunos parámetros deben empezar con la palabra clave option. Algunas opciones configuran DHCP y los parámetros definen valores no opcionales o que controlan el comportamiento del servidor DHCP.

Los parámetros (incluidas las opciones) declarados antes de una sección encerrada entre paréntesis ({ }) se consideran parámetros globales. Los parámetros globales se aplican a todas las secciones situadas debajo de ellos.

ImportanteImportante
 

Si cambia el archivo de configuración, los cambios no se aplicarán hasta reiniciar el demonio DHCP con el comando service dhcpd restart.

En Ejemplo 18-1, las opciones routers, subnet-mask, domain-name, domain-name-servers, y time-offset son usadas para cualquier sentencia host declarada debajo de ellas.

Como se muestra en el Ejemplo 18-1, puede declarar una subnet. Debe incluir una declaración subnet para cada subred en su red. Si no lo hace, el servidor DHCP no podrá arrancarse.

En este ejemplo, hay opciones globales para cada cliente DHCP en la subred y un range declarado. A los clientes se les asigna una dirección IP dentro del range.

subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers                  192.168.1.254;
        option subnet-mask              255.255.255.0;

        option domain-name              "example.com";
        option domain-name-servers       192.168.1.1;

        option time-offset              -18000;     # Eastern Standard Time

	range 192.168.1.10 192.168.1.100;
}

Ejemplo 18-1. Ejemplo de declaración de Subred

Todas las subredes que comparten la misma red física deben especificarse dentro de una declaración shared-network como se muestra en Ejemplo 18-2. Los parámetros dentro de shared-network pero fuera del cerco de las declaraciones subnet se consideran parámetros globales. El nombre de shared-network debe ser el título descriptivo de la red, como, por ejemplo, test-lab, para describir todas las subredes en un entorno de laboratorio de pruebas.

shared-network name {
    option domain-name              "test.redhat.com";
    option domain-name-servers      ns1.redhat.com, ns2.redhat.com;
    option routers                  192.168.1.254;
    more parameters for EXAMPLE shared-network
    subnet 192.168.1.0 netmask 255.255.255.0 {
        parameters for subnet
        range 192.168.1.1 192.168.1.31;
    }
    subnet 192.168.1.32 netmask 255.255.255.0 {
        parameters for subnet
        range 192.168.1.33 192.168.1.63;
    }
}

Ejemplo 18-2. Ejemplo de declaración de red compartida

Como se muestra en el Ejemplo 18-3, la declaración group puede utilizarse para aplicar parámetros globales a un grupo de declaraciones. Puede agrupar redes compartidas, subredes, hosts u otros grupos.

group {
   option routers                  192.168.1.254;
   option subnet-mask              255.255.255.0;

   option domain-name              "example.com";
   option domain-name-servers       192.168.1.1;

   option time-offset              -18000;     # Eastern Standard Time

   host apex {
      option host-name "apex.example.com";
      hardware ethernet 00:A0:78:8E:9E:AA; 
      fixed-address 192.168.1.4;
   }

   host raleigh {
      option host-name "raleigh.example.com";
      hardware ethernet 00:A1:DD:74:C3:F2;
      fixed-address 192.168.1.6;
   }
}

Ejemplo 18-3. Declaración de Group

Para configurar un servidor DHCP que arrenda una dirección IP dinámica a un sistema dentro de una subred, modifique Ejemplo 18-4 con sus valores. Declara un tiempo de arrendamiento por defecto, un tiempo de arrendamiento máximo y los valores de configuración de red para los clientes. Este ejemplo asigna una dirección IP en el range 192.168.1.10 y 192.168.1.100 a los sistemas clientes.

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "example.com";

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
}

Ejemplo 18-4. Parámetro Range (Rango)

Para asignar una dirección IP a un cliente según la dirección MAC de la tarjeta de interfaz de red, use el parámetro hardware ethernet dentro de la declaración host. Como se muestra en el Ejemplo 18-5, la declaración host apex especifica que la interfaz de red con una dirección MAC 00:A0:78:8E:9E:AA siempre recibe la dirección IP 192.168.1.4.

Tenga en cuenta que también puede usar el parámetro opcional host-name para asignar un nombre host al cliente.

host apex {
   option host-name "apex.example.com";
   hardware ethernet 00:A0:78:8E:9E:AA; 
   fixed-address 192.168.1.4;
}

Ejemplo 18-5. Ejemplo de dirección IP estática con DHCP

SugerenciaSugerencia
 

Puede usar el archivo de configuración de ejemplo de Red Hat Linux 9 como punto de partida y, a continuación, agregarle opciones de configuración personalizadas. Cópielo en la ubicación adecuada con el comando
cp /usr/share/doc/dhcp-<version-number>/dhcpd.conf.sample /etc/dhcpd.conf
(donde <version-number> es la versión de DHCP que está usando).

Para obtener una lista completa de sentencias de opciones e información relacionada, consulte la página del manual de dhcp-options.

18.2.2. Base de datos de arrendamiento

En el servidor DHCP, el archivo /var/lib/dhcp/dhcpd.leases almacena la base de datos de arrendamiento del cliente DHCP. Este archivo no debe modificarse manualmente. La información sobre arrendamiento de DHCP de cada dirección IP asignada recientemente se almacena de modo automático en la base de datos de arrendamiento. La información incluye la longitud del arrendamiento, a quién se ha asignado la dirección IP, las fechas iniciales y finales de la renta, y la dirección MAC de la tarjeta de interfaz de red utilizada para recuperar el arrendamiento.

Todas las horas de la base de datos de arrendamiento se expresan según GMT, no con la hora local.

La base de datos de arrendamiento se crea nuevamente de vez en cuando para que su tamaño no sea excesivo. En primer lugar, se guardan todas las concesiones conocidas en una base de datos de renta temporal. El archivo dhcpd.leases es renombrado a dhcpd.leases~, y la base de datos temporal se registra en dhcpd.leases.

El demonio DHCP puede borrarse porque, de otro modo, el sistema puede quedarse inestable después de cambiar el nombre de la base de datos por el archivo de copia de seguridad, antes de escribir el nuevo archivo. Si ocurre esto, no se necesitará ningún archivo dhcpd.leases para arrancar el servicio. No cree un nuevo archivo de arrendamiento si ocurre esto. Si lo hace, se perderán las versiones anteriores del arrendamiento y podrían generarse problemas. La solución correcta consiste en cambiar el nombre del archivo de copia de seguridad dhcpd.leases~ de nuevo a dhcpd.leases y, a continuación, arrancar el demonio.

18.2.3. Arranque y parada del servidor

ImportanteImportante
 

Antes de arrancar por primera vez el servidor DHCP, asegúrese de que existe un archivo dhcpd.leases para que no falle el arranque. Use el comando touch /var/lib/dhcp/dhcpd.leases para crear el archivo en caso de que no exista.

Para arrancar el servicio DHCP, use el comando /sbin/service dhcpd start. Para detener el servidor DHCP, use el comando /sbin/service dhcpd stop. Si desea que el demonio se arranque automáticamente en el momento de arranque, consulte el Capítulo 14 para obtener información sobre cómo administrar los servicios.

Si tiene más de una interfaz de red conectada al sistema, pero sólo desea que el servidor DHCP arranque en una de las interfaces, puede configurar el servidor DHCP para que sólo arranque en ese dispositivo. En /etc/sysconfig/dhcpd, agregue el nombre de la interfaz a la lista de DHCPDARGS:

# Command line options here
DHCPDARGS=eth0

Esto es útil si tiene una máquina firewall con dos tarjetas de red. Se puede configurar una tarjeta de red como cliente DHCP para recuperar una dirección IP en Internet y la otra tarjeta de red puede utilizarse como servidor DHCP para la red interna detrás del firewall. Su sistema será más seguro si especifica la tarjeta de red conectada a la red interna ya que los usuarios no pueden conectarse al demonio vía Internet.

Otras opciones de línea de comandos que pueden ser especificadas en /etc/sysconfig/dhcpd incluyen:

18.2.4. Agente de transmisión DHCP

El agente de transmisión DHCP (dhcrelay) le permite transmitir las peticiones DHCP y BOOTP desde una subred sin un servidor DHCP para uno o más servidores en otras subredes.

Cuando un cliente DHCP pide información, el agente de transmisión DHCP reenvía la petición a la lista de servidores DHCP especificada cuando se inicia el agente de transmisión DHCP. Cuando un servidor DHCP devuelve una respuesta, la respuesta puede ser broadcast o unicast en la red que ha enviado la petición original.

El agente de transmisión escucha las peticiones DHCP en todas las interfaces a menos que las interfaces estén especificadas en /etc/sysconfig/dhcrelay con la directiva INTERFACES.

Para iniciar el agente de transmisión DHCP, use el comando service dhcrelay start.