Servicio DHCP

El servicio DHCP (Dynamic Host Configuration Protocol) permite que un servidor especifique parámetros de red de manera automática a las máquinas que lo solicitan, normalmente cuando se conectan a la red. De esta manera se facilita la configuración en red de los ordenadores y su posterior mantenimiento.

En una red TCP/IP, cada estación necesita conocer algunos parámetros básicos para poder comunicarse.

Estos parámetros básicos son: su dirección IP y la máscara de red. Si además la estación se quiere comunicar con estaciones de otra red, necesitará conocer la puerta de enlace por defecto y muy posiblemente el servidor DNS a utilizar. Pero el servidor DHCP puede pasar otros parámetros opcionales a las estaciones, por ejemplo:

  • Dominio DNS en el que se encuentra la estación
  • Servidor NTP a utilizar como referencia horaria
  • Otros servicios como: SMTP, TFTP, etc...


En cada estación pueden configurarse estos parámetros de forma estática o dinámica. Cuando se configuran de forma estática, la estación guarda su propia configuración, por lo que no depende de nadie para conectarse a la red. Cuando se configuran de forma dinámica, la estación utiliza el protocolo DHCP para obtener estos parámetros desde de un servidor de red.

La configuración de red dinámica permite al administrador de la red ahorrar trabajo, pues en lugar de configurar los parámetros de conexión en todas las estaciones puede configurar un servidor DHCP para que configure automáticamente a las estaciones. Además, cuando en el futuro se reorganice la red, sólo será necesario actualizar la configuración del servidor DHCP.

Cliente obteniendo configuración de red mediante DHCP

Cuando una estación quiere obtener una configuración de red válida, normalmente durante el arranque de la máquina, emite una petición DHCP Discover. Cuando esta petición, que se realiza mediante un paquete UDP de broadcast, alcanza a un servidor DHCP, se establece una negociación por la que el servidor concede el uso de una IP, y otros parámetros de red, al cliente por un tiempo determinado.

Es importante observar:

  • El cliente no necesita tener configurada la interfaz de red para poder emitir una petición DHCP Discover.
  • El servidor DHCP debe estar en la misma subred en la que estará el cliente. Si el cliente no tiene configuración de red, no puede alcanzar otras subredes.
  • Cuando el servidor DHCP recibe la petición DHCP Discover obtiene la dirección MAC del cliente, lo que puede condicionar la dirección IP que asigna al cliente.
  • El servidor DHCP realiza la concesión de una configuración de red al cliente por un tiempo determinado. Antes de llegar al fin del plazo establecido el cliente puede intentar renovar la concesión. Si una concesión prescribe, el cliente debe dejar de utilizar la configuración de red.


Para realizar una solicitud DHCP se necesita un cliente como dhclient (nativo de GNU/Linux, en el que existen clientes alternativos como pump) o el comando ipconfig /renew (en el caso de Windows). Cuando se obtiene una configuración de red, el cliente pasa a utilizarla.

Ejemplo:

[root@localhost ~]# dhclient eth0
Internet Systems Consortium DHCP Client V3.0.3
Copyright 2004-2005 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP

Listening on LPF/eth0/00:c0:26:27:0b:d8
Sending on LPF/eth0/00:c0:26:27:0b:d8
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6
DHCPOFFER from 192.168.100.1
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.100.1
bound to 192.168.100.101 -- renewal in 36616 seconds.
[root@localhost ~]#

En el caso de GNU/Linux, en el directorio /var/lib/dhcp se guardan los ficheros en los que el cliente DHCP guarda información sobre las concesiones.

[root@localhost ~]# ll /var/lib/dhcp/
total 12
-rw-r--r-- 1 root root 766 may 8 08:41 dhclient-eth0.leases
-rw-r--r-- 1 root root 384 may 8 08:41 dhclient-eth1.leases
-rw-r--r-- 1 root root 772 may 8 10:42 dhclient.leases
[root@localhost ~]# cat /var/lib/dhcp/dhclient.leases
lease {
interface "eth0";
fixed-address 192.168.100.100;
option subnet-mask 255.255.255.0;
option dhcp-lease-time 86400;
option routers 192.168.100.1;
option dhcp-message-type 5;
option dhcp-server-identifier 192.168.100.1;
option domain-name-servers 62.81.16.132,62.81.0.36;
renew 2 2005/12/20 19:43:32;
rebind 3 2005/12/21 06:47:17;
expire 3 2005/12/21 09:47:17;
}
lease {
interface "eth0";
fixed-address 192.168.100.101;
option subnet-mask 255.255.255.0;
option routers 192.168.100.1;
option dhcp-lease-time 86400;
option dhcp-message-type 5;
option domain-name-servers 62.81.16.132,62.81.0.36;
option dhcp-server-identifier 192.168.100.1;
renew 1 2006/5/8 18:52:40;
rebind 2 2006/5/9 05:42:23;
expire 2 2006/5/9 08:42:23;
}

 

Servidor DHCP

Se puede configurar un servidor DHCP para que  asigne configuraciones de red de tres maneras diferentes:

  • Asignación manual: Se asigna una configuración de red en función de la MAC del cliente. El administrador debe escribir la tabla de correspondencias en el servidor. Los clientes con MAC desconocida no se atienden.
  • Asignación automática: El administrador define un rango de direcciones IP y el servidor hace concesiones permanentes a los clientes.
  • Asignación dinámica: El servidor asigna dinámicamente direcciones libres del rango (o rangos) especificado por el administrador.

 

Requisitos del servidor

Un servidor DHCP debe tener la interfaz de red que utiliza para atender a los clientes:

  • Configurada de forma estática (no puede estar configurada mediante DHCP)
  • Con una IP correspondiente a la subred en la que están los clientes


La configuración más sencilla pasa por tener el servidor en la misma subred que los clientes, si este no es el caso, se puede utilizar:

  • La redirección de los puertos UDP 67 y 68 en el router
  • El uso de un servidor DHCP Relay en la subred de los clientes

 

Configuración del servidor DHCP

Para instalar el servidor ISC DHCP basta con instalar el paquete isc-dhcp-server. Una vez instalado, el fichero /etc/dhcp/dhpcd.conf contiene una configuración de muestra.

 

Ejemplo: dhcpd.conf

ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0 {
# default gateway
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;

# DNS
option domain-name "domain.org";
option domain-name-servers 192.168.0.10;

# Pool
allow unknown-clients;
range 192.168.13.100 192.168.13.254;

default-lease-time 21600;
max-lease-time 43200;

# IP fija
host ns {
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 192.168.0.10;
}
}


La página de manual del fichero dhcpd.conf incluye información detallada sobre la sintáxis de dicho fichero.

Más información: