25.2. Configuración de un servidor DHCP

Para configurar un servidor DHCP, modifique 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 25.2.2 para más información.

25.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 para 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 de actualización DNS implementados actualmente — el modo de actualización DNS ad-hoc y el modo de actualización intermedio de boceto 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 esquemas actuales. La versión 3.0b2pl11 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 25-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 Ejemplo 25-1, se puede declarar una subnet. Debe incluir una declaración subnet para cada subred en la 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 25-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 25-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 25-2. Ejemplo de declaración de red compartida

Como se muestra en la Ejemplo 25-3, la declaración group puede utilizarse para aplicar parámetros globales a un grupo de declaraciones. Por ejemplo, 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 25-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 25-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 25-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 25-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 25-5. Ejemplo de dirección IP estática con DHCP

SugerenciaSugerencia
 

Puede usar el archivo de configuración de ejemplo proporcionado como punto de partida y, a continuación, agregarle opciones de configuración personalizadas. Para copiarlo en la ubicación adecuada, use 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.

25.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 podría ser matado o el sistema puede fallardespués de que la base de datos ha sido renombrada alarchivo de copia de seguridad pero antes de que el nuevo archivo haya sido escrito. Si ocurre esto, el archivo dhcpd.leases no existe, pero es requerido 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 muchos 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.

25.2.3. Arranque y parada del servidor

ImportanteImportante
 

Cuando el servidor DHCP arranca por primera vez, fallará si no existe un archivo dhcpd.leases. 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 21 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 cortafuegos 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 cortafuegos. Su sistema será más seguro si sólo 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:

25.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 a uno o más servidores DHCP 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.