Protocolo de intercambio de mensajes
Cuando el cliente DHCP arranca resulta evidente que ignora la configuración de red por lo que necesita realizar las primeras comunicaciones mediante mensajes de difusión o broadcast. Esta difusión y el resto de las comunicaciones se basa en 8 tipos de mensajes en DHCP:
DHCPDISCOVER: El cliente envía un mensaje de difusión para localizar a los servidores DHCP activos.
DHCPOFFER: El servidor responde al cliente con una oferta de parámetros de configuración conforme a la situación del cliente.
DHCPREQUEST: Respuesta del cliente solicitando los parámetros ofertados, en caso de que el mensaje del servidor haya sido aceptado, rechazando la oferta, si el mensaje del servidor ha sido desestimado o confirmando la solicitud de una dirección IP obtenida anteriormente.
DHCPACK: Mensaje de confirmación y cierre desde el servidor hacia el cliente indicando los parámetros definitivos.
DHCPNACK: Mensaje que informa desde el servidor al cliente de que la dirección IP que solicita no es válida para la subred en la que se encuentra o la dirección IP ya no la puede asignar porque está asignada a otro equipo.
DHCPDECLINE: El cliente informa al servidor de que la dirección está en uso, normalmente porque otro usuario ha asignado esa dirección manualmente.
DHCPRELEASE: El cliente informa al servidor de que ha finalizado el uso de la dirección IP.
DHCPINFORM: El cliente consulta al servidor la configuración local. El cliente ya está configurado cuando envía este mensaje.
Funcionamiento del servidor DHCP
La configuración de DHCP se basa en un fichero de texto, /etc/dhcp.conf que el proceso servidor lee en el inicio. La lectura del fichero de configuración sólo se realiza durante el inicio, nunca cuando ya está en ejecución, por tanto cualquier modificación requiere detener el servicio DHCP y volverlo a iniciar. En este fichero se especifican las características de comportamiento como son el rango de direcciones asignadas, el tiempo de asignación de direcciones, el nombre del dominio, los gateways, etc. DHCP almacena en memoria la lista de direcciones de cada sured que está sirviendo. Cuando se arranca un cliente DHCP le solicita una dirección al servidor, éste busca una dirección disponible y se la asigna. En caso de necesidad, el servidor DHCP también puede asignar direcciones fijas a determinados equipos de la red.
La asignación de los datos TCP/IP al cliente se realiza para un determinado espacio de tiempo que se define en la configuración del servidor. Si no se especifica otro valor, la asignación predeterminada es por un día. También los clientes pueden solicitar datos de una duración especificada, aunque para evitar que un cliente tenga una dirección fija se puede prefijar un tiempo máximo de asignación.
Si tenermos varias subredes en nuestra instalación, también se pueden diferenciar las asignaciones que otorga el servidor DHCP según el interfaz en el que se realice.
Como el servidor DHCP puede pararse y reiniciarse, necesita mantener la lista de direcciones asignadas. El fichero /var/lib/dhcp/dhcpd.leases o /var/state/dhcp/dhcpd.leases mantiene esta lista de asignaciones. Cuando se inicia el servidor, primero lee el fichero de configuración dhcpd.conf, después el fichero dhcpd.leases y marca qué sistemas tienen asignaciones activas.