El Protocolo de configuración dinámica de host ( DHCP ) es un protocolo de gestión de red utilizado en redes de Protocolo Internet (IP) para asignar automáticamente direcciones IP y otros parámetros de comunicación a dispositivos conectados a la red mediante una arquitectura cliente-servidor . [1]
La tecnología elimina la necesidad de configurar manualmente los dispositivos de red de forma individual y consta de dos componentes de red: un servidor DHCP de red instalado de forma centralizada e instancias cliente de la pila de protocolos en cada equipo o dispositivo. Cuando se conecta a la red, y periódicamente a partir de entonces, un cliente solicita un conjunto de parámetros al servidor mediante DHCP.
El DHCP se puede implementar en redes que varían en tamaño, desde redes residenciales hasta grandes redes de campus y redes de ISP regionales. [2] Muchos enrutadores y puertas de enlace residenciales tienen capacidad de servidor DHCP. La mayoría de los enrutadores de redes residenciales reciben una dirección IP única dentro de la red del ISP. Dentro de una red local, un servidor DHCP asigna una dirección IP local a cada dispositivo.
Los servicios DHCP existen para redes que ejecutan el Protocolo de Internet versión 4 (IPv4), así como la versión 6 ( IPv6 ). La versión IPv6 del protocolo DHCP se denomina comúnmente DHCPv6 .
El Protocolo de Resolución de Dirección Inversa (RARP) se definió en 1984 para la configuración de dispositivos simples, como estaciones de trabajo sin disco , con una dirección IP adecuada. [3] Al actuar en la capa de enlace de datos , dificultó la implementación en muchas plataformas de servidor. Requería que un servidor estuviera presente en cada enlace de red individual. RARP fue reemplazado por el Protocolo Bootstrap (BOOTP) definido en septiembre de 1985. [4] Esto introdujo el concepto de un agente de retransmisión, que permitió el reenvío de paquetes BOOTP a través de redes, lo que permitió que un servidor BOOTP central sirviera a hosts en muchas subredes IP.
El protocolo DHCP se definió por primera vez en octubre de 1993. [5] [6] Se basa en BOOTP, pero puede asignar direcciones IP de forma dinámica desde un grupo y recuperarlas cuando ya no se utilizan. También se puede utilizar para proporcionar una amplia gama de parámetros de configuración adicionales a los clientes IP, incluidos parámetros específicos de la plataforma. [7]
Cuatro años después, se añadió el tipo de mensaje DHCPINFORM (utilizado para WPAD ) y otros pequeños cambios. Esta definición, de 1997, [8] sigue siendo el núcleo del estándar para redes IPv4.
DHCPv6 se definió inicialmente en 2003. [9] Después de actualizaciones de muchos RFC posteriores, su definición fue reemplazada en 2018, [10] donde la delegación de prefijo y la configuración automática de direcciones sin estado se fusionaron.
El Protocolo de Internet (IP) define cómo se comunican los dispositivos dentro y a través de redes locales en Internet. Un servidor DHCP puede administrar la configuración IP de los dispositivos en su red local, por ejemplo, asignando direcciones IP a esos dispositivos de forma automática y dinámica. [11]
DHCP funciona según el modelo cliente-servidor . Cuando una computadora u otro dispositivo se conecta a una red, el software cliente DHCP envía una consulta de difusión DHCP solicitando la información necesaria. Cualquier servidor DHCP en la red puede atender la solicitud. El servidor DHCP administra un grupo de direcciones IP e información sobre los parámetros de configuración del cliente, como la puerta de enlace predeterminada , el nombre de dominio , los servidores de nombres y los servidores de hora . Al recibir una solicitud DHCP, el servidor DHCP puede responder con información específica para cada cliente, según lo configurado previamente por un administrador, o con una dirección específica y cualquier otra información válida para toda la red y para el período de tiempo para el cual la asignación ( arrendamiento ) es válida. Un cliente DHCP generalmente consulta esta información inmediatamente después del arranque y periódicamente a partir de entonces antes de que caduque la información. Cuando un cliente DHCP actualiza una asignación, inicialmente solicita los mismos valores de parámetros, pero el servidor DHCP puede asignar una nueva dirección según las políticas de asignación establecidas por los administradores.
En redes grandes que constan de varios enlaces, un único servidor DHCP puede prestar servicio a toda la red con la ayuda de agentes de retransmisión DHCP ubicados en los enrutadores interconectados. Dichos agentes retransmiten mensajes entre clientes DHCP y servidores DHCP ubicados en diferentes subredes.
Dependiendo de la implementación, el servidor DHCP puede tener tres métodos para asignar direcciones IP:
Los servicios DHCP se utilizan para el Protocolo de Internet versión 4 (IPv4) e IPv6 . Los detalles del protocolo para IPv4 e IPv6 difieren lo suficiente como para que puedan considerarse protocolos separados. [12] Para el funcionamiento de IPv6, los dispositivos pueden utilizar alternativamente la configuración automática de direcciones sin estado . Los hosts IPv6 también pueden utilizar el direccionamiento local de enlace para lograr operaciones restringidas al enlace de red local.
El DHCP emplea un modelo de servicio sin conexión , utilizando el Protocolo de datagramas de usuario (UDP). Se implementa con dos números de puerto UDP para sus operaciones, que son los mismos que para el protocolo bootstrap ( BOOTP ). El servidor escucha en el puerto UDP número 67 y el cliente escucha en el puerto UDP número 68.
Las operaciones de DHCP se dividen en cuatro fases: descubrimiento de servidor, oferta de concesión de IP, solicitud de concesión de IP y reconocimiento de concesión de IP. Estas etapas suelen abreviarse como DORA (descubrimiento, oferta, solicitud y reconocimiento).
La operación DHCP comienza con los clientes que transmiten una solicitud. Si el cliente y el servidor están en diferentes dominios de difusión , se puede utilizar un asistente DHCP o un agente de retransmisión DHCP. Los clientes que solicitan la renovación de una concesión existente pueden comunicarse directamente a través de unidifusión UDP , ya que el cliente ya tiene una dirección IP establecida en ese momento. Además, hay un indicador BROADCAST (1 bit en un campo de indicadores de 2 bytes, donde todos los demás bits están reservados y, por lo tanto, se establecen en 0) que el cliente puede utilizar para indicar de qué manera (difusión o unidifusión) puede recibir el DHCPOFFER: 0x8000 para difusión, 0x0000 para unidifusión. [8] Por lo general, el DHCPOFFER se envía a través de unidifusión. Para aquellos hosts que no pueden aceptar paquetes de unidifusión antes de que se configuren las direcciones IP, este indicador se puede utilizar para solucionar este problema.
El cliente DHCP transmite un mensaje DHCPDISCOVER en la subred de la red utilizando la dirección de destino 255.255.255.255 (transmisión limitada) o la dirección de transmisión de la subred específica (transmisión dirigida). Un cliente DHCP también puede solicitar una dirección IP en el mensaje DHCPDISCOVER, que el servidor puede tener en cuenta al seleccionar una dirección para ofrecer.
Por ejemplo, si HTYPE se establece en 1 para especificar que el medio utilizado es Ethernet , HLEN se establece en 6 porque una dirección Ethernet (dirección MAC) tiene una longitud de 6 octetos. CHADDR se establece en la dirección MAC utilizada por el cliente. También se establecen algunas opciones.
Cuando un servidor DHCP recibe un mensaje DHCPDISCOVER de un cliente, que es una solicitud de concesión de dirección IP, el servidor DHCP reserva una dirección IP para el cliente y realiza una oferta de concesión mediante el envío de un mensaje DHCPOFFER al cliente. Este mensaje puede contener el ID de cliente del cliente (Opción 61, que contiene un valor único, tradicionalmente una dirección MAC), la dirección IP que ofrece el servidor, la máscara de subred, la duración de la concesión y la dirección IP del servidor DHCP que realiza la oferta. El servidor DHCP también puede tomar nota de la dirección MAC a nivel de hardware (como se especifica en el campo CHADDR). Este campo debe utilizarse para identificar al cliente, si no se proporciona ningún ID de cliente en el paquete DHCP. [8] : §4.2
El servidor DHCP determina la configuración en función de la dirección de hardware del cliente, tal como se especifica en el campo CHADDR (dirección de hardware del cliente). En el siguiente ejemplo, el servidor ( 192.168.1.1 ) especifica la dirección IP del cliente en el campo YIADDR (su dirección IP).
En respuesta a la oferta DHCP, el cliente responde con un mensaje DHCPREQUEST, que se transmite al servidor, [a] solicitando la dirección ofrecida. Un cliente puede recibir ofertas DHCP de varios servidores, pero solo aceptará una oferta DHCP.
El cliente debe enviar la opción de identificación del servidor en el mensaje DHCPREQUEST, indicando el servidor cuya oferta ha seleccionado el cliente. [8] : Sección 3.1, Ítem 3 Cuando otros servidores DHCP reciben este mensaje, retiran cualquier oferta que hayan hecho al cliente y devuelven su dirección IP ofrecida al grupo de direcciones disponibles.
Cuando el servidor DHCP recibe el mensaje DHCPREQUEST del cliente, el proceso de configuración entra en su fase final. La fase de reconocimiento implica el envío de un paquete DHCPACK al cliente. Este paquete incluye la duración de la concesión y cualquier otra información de configuración que el cliente pueda haber solicitado. En este punto, el proceso de configuración de IP se completa.
El protocolo espera que el cliente DHCP configure su interfaz de red con los parámetros negociados.
Cuando el servidor reutiliza una dirección IP de su grupo, primero puede verificar (usando ping ) para ver si no está ya tomada. [8] : sec. 2.2 Esto puede suceder si un host se configura manualmente con una dirección IP que se encuentra dentro del alcance de DHCP.
Antes de solicitar una dirección IP, el cliente debe sondear la dirección recién recibida (por ejemplo, con ARP ), para encontrar si hay otro host presente en la red con la dirección IP propuesta. [8] : sec. 2.2 Si no hay respuesta, esta dirección no entra en conflicto con la de otro host, por lo que puede usarse libremente. Si esta sonda encuentra otra computadora que usa esa dirección, el cliente debe transmitir un DHCPDECLINE al servidor o servidores DHCP.
Un cliente DHCP puede solicitar más información que la que el servidor envió con el DHCPOFFER original. El cliente también puede solicitar datos repetidos para una aplicación en particular. Por ejemplo, los navegadores utilizan DHCP Inform para obtener la configuración del proxy web a través de WPAD .
El cliente envía una solicitud al servidor DHCP para liberar la información DHCP y el cliente desactiva su dirección IP. Como los dispositivos cliente normalmente no saben cuándo los usuarios pueden desconectarlos de la red, el protocolo no exige el envío de DHCP Release .
Un servidor DHCP puede proporcionar parámetros de configuración opcionales al cliente. La RFC 2132 describe las opciones DHCP disponibles definidas por la Autoridad de Números Asignados de Internet (IANA): PARÁMETROS DHCP y BOOTP. [13]
Un cliente DHCP puede seleccionar, manipular y sobrescribir parámetros proporcionados por un servidor DHCP. En sistemas tipo Unix, este refinamiento a nivel de cliente se realiza normalmente según los valores del archivo de configuración /etc/dhclient.conf .
Las opciones son cadenas de octetos de longitud variable. Esto se denomina codificación tipo-longitud-valor . El primer octeto es el código de la opción, el segundo octeto es la cantidad de octetos siguientes y los octetos restantes dependen del código. Por ejemplo, la opción de tipo de mensaje DHCP para una oferta aparecería como 0x35, 0x01, 0x02, donde 0x35 es el código 53 para "tipo de mensaje DHCP", 0x01 significa que sigue un octeto y 0x02 es el valor de "oferta".
Las siguientes tablas enumeran las opciones de DHCP disponibles. [14] [13]
Esta tabla enumera los tipos de mensajes DHCP, documentados en RFC 2132, RFC 3203, [15] RFC 4388, [16] RFC 6926 [17] y RFC 7724. [18] Estos códigos son el valor en la extensión DHCP 53, que se muestra en la tabla anterior.
Existe una opción para identificar el proveedor y la funcionalidad de un cliente DHCP. La información es una cadena de caracteres u octetos de longitud variable que tiene un significado especificado por el proveedor del cliente DHCP. Un método mediante el cual un cliente DHCP puede comunicar al servidor que está utilizando un determinado tipo de hardware o firmware es establecer un valor en sus solicitudes DHCP denominado Identificador de clase de proveedor (VCI) (Opción 60).
El valor que se le asigna a esta opción le da al servidor DHCP una pista sobre cualquier información adicional requerida que este cliente necesita en una respuesta DHCP. Algunos tipos de decodificadores configuran la VCI para informar al servidor DHCP sobre el tipo de hardware y la funcionalidad del dispositivo. Un punto de acceso inalámbrico de campus de Aruba , por ejemplo, proporciona el valor 'ArubaAP' como opción 60 en su mensaje DHCPDISCOVER. [19] El servidor DHCP puede entonces aumentar su DHCPOFFER con una dirección IP de un controlador inalámbrico de Aruba en la opción 43, de modo que el punto de acceso sepa dónde registrarse.
La configuración de una VCI por parte del cliente permite que un servidor DHCP diferencie entre máquinas cliente y procese las solicitudes de ellas adecuadamente.
La opción de información del agente de retransmisión (opción 82) especifica el contenedor para adjuntar subopciones a las solicitudes DHCP transmitidas entre un relé DHCP y un servidor DHCP. [21]
En redes pequeñas, donde solo se administra una subred IP, los clientes DHCP se comunican directamente con los servidores DHCP. Sin embargo, los servidores DHCP también pueden proporcionar direcciones IP para varias subredes. En este caso, un cliente DHCP que aún no ha adquirido una dirección IP no puede comunicarse directamente con un servidor DHCP que no se encuentre en la misma subred, ya que la transmisión del cliente solo se puede recibir en su propia subred.
Para permitir que los clientes DHCP en subredes que no reciben servicio directo de servidores DHCP se comuniquen con servidores DHCP, se pueden instalar agentes de retransmisión DHCP en estas subredes. Un agente de retransmisión DHCP se ejecuta en un dispositivo de red, capaz de enrutar entre la subred del cliente y la subred del servidor DHCP. El cliente DHCP transmite en el enlace local; el agente de retransmisión recibe la transmisión y la transmite a uno o más servidores DHCP mediante unidifusión . Las direcciones IP de los servidores DHCP se configuran manualmente en el agente de retransmisión. El agente de retransmisión almacena su propia dirección IP, de la interfaz en la que ha recibido la transmisión del cliente, en el campo GIADDR del paquete DHCP. El servidor DHCP utiliza el valor GIADDR para determinar la subred y, posteriormente, el grupo de direcciones correspondiente, desde el que asignar una dirección IP. Cuando el servidor DHCP responde al cliente, envía la respuesta a la dirección GIADDR, nuevamente mediante unidifusión. El agente de retransmisión retransmite entonces la respuesta en la red local, utilizando unicast (en la mayoría de los casos) a la dirección IP recién reservada, en una trama Ethernet dirigida a la dirección MAC del cliente. El cliente debe aceptar el paquete como propio, incluso cuando esa dirección IP aún no esté configurada en la interfaz. [8] : 25 Inmediatamente después de procesar el paquete, el cliente configura la dirección IP en su interfaz y está listo para la comunicación IP regular, directamente después.
Si la implementación de la pila IP del cliente no acepta paquetes de unidifusión cuando aún no tiene una dirección IP, el cliente puede configurar el bit de difusión en el campo FLAGS al enviar un paquete DHCPDISCOVER. El agente de retransmisión utilizará la dirección IP de difusión 255.255.255.255 (y la dirección MAC del cliente) para informar al cliente sobre la DHCPOFFER del servidor.
La comunicación entre el agente de retransmisión y el servidor DHCP normalmente utiliza un puerto UDP de origen y destino de 67.
Un cliente DHCP puede recibir estos mensajes de un servidor: [8] : §4.4
El cliente se mueve a través de los estados de DHCP dependiendo de cómo el servidor responde a los mensajes que envía el cliente.
El DHCP garantiza la confiabilidad de varias maneras: renovación periódica, revinculación, [8] : §4.4.5 y conmutación por error. A los clientes DHCP se les asignan concesiones que duran un período de tiempo. Los clientes comienzan a intentar renovar sus concesiones una vez que ha expirado la mitad del intervalo de concesión. [8] : §4.4.5 Párrafo 3 Lo hacen enviando un mensaje DHCPREQUEST de unidifusión al servidor DHCP que otorgó la concesión original. Si ese servidor está inactivo o inaccesible, no responderá a la DHCPREQUEST . Sin embargo, en ese caso, el cliente repite la DHCPREQUEST de vez en cuando, [8] : §4.4.5 Párrafo 8 [b] por lo que si el servidor DHCP vuelve a funcionar o se vuelve accesible nuevamente, el cliente DHCP logrará comunicarse con él y renovar la concesión.
Si el servidor DHCP no está disponible durante un período prolongado, [8] : §4.4.5 Párrafo 5 el cliente DHCP intentará volver a enlazarse mediante la difusión de su DHCPREQUEST en lugar de la unidifusión. Debido a que se transmite , el mensaje DHCPREQUEST llegará a todos los servidores DHCP disponibles. Si algún otro servidor DHCP puede renovar la concesión, lo hará en este momento.
Para que la revinculación funcione, cuando el cliente contacta con éxito a un servidor DHCP de respaldo, ese servidor debe tener información precisa sobre la vinculación del cliente. Mantener información precisa de la vinculación entre dos servidores es un problema complicado; si ambos servidores pueden actualizar la misma base de datos de arrendamiento, debe haber un mecanismo para evitar conflictos entre actualizaciones en los servidores independientes. Se presentó una propuesta para implementar servidores DHCP tolerantes a fallas al Grupo de trabajo de ingeniería de Internet, pero nunca se formalizó. [29] [c]
Si la revinculación falla, el contrato de arrendamiento eventualmente expirará. Cuando el contrato de arrendamiento expira, el cliente debe dejar de usar la dirección IP que se le otorgó en su contrato de arrendamiento. [8] : §4.4.5 Párrafo 9 En ese momento reiniciará el proceso DHCP desde el principio mediante la difusión de un DHCPDISCOVER
mensaje. Dado que su contrato de arrendamiento ha expirado, aceptará cualquier dirección IP que se le ofrezca. Una vez que tenga una nueva dirección IP (presumiblemente de un servidor DHCP diferente) podrá volver a usar la red. Sin embargo, dado que su dirección IP ha cambiado, se interrumpirán todas las conexiones en curso.
La metodología básica de DHCP fue desarrollada para redes basadas en el Protocolo de Internet versión 4 (IPv4). Desde el desarrollo y despliegue de las redes IPv6 , DHCP también se ha utilizado para la asignación de parámetros en dichas redes, a pesar de las características inherentes de IPv6 para la autoconfiguración de direcciones sin estado . La versión IPv6 del protocolo se designa como DHCPv6 . [30]
El DHCP básico no incluye ningún mecanismo de autenticación. [31] : §7 Por ello, es vulnerable a una variedad de ataques. Estos ataques se dividen en tres categorías principales: [8] : sec. 7
Debido a que el cliente no tiene forma de validar la identidad de un servidor DHCP, se pueden operar servidores DHCP no autorizados (comúnmente llamados " DHCP no autorizados ") en las redes, proporcionando información incorrecta a los clientes DHCP. [32] Esto puede servir como un ataque de denegación de servicio, impidiendo que el cliente obtenga acceso a la conectividad de red, [33] o como un ataque de intermediario . [34] Debido a que el servidor DHCP proporciona al cliente DHCP direcciones IP de servidor, como la dirección IP de uno o más servidores DNS, [8] : sec. 7 un atacante puede convencer a un cliente DHCP de que haga sus búsquedas DNS a través de su propio servidor DNS y, por lo tanto, puede proporcionar sus propias respuestas a las consultas DNS del cliente. [35] Esto, a su vez, permite al atacante redirigir el tráfico de red a través de sí mismo, lo que le permite espiar las conexiones entre el cliente y los servidores de red con los que contacta, o simplemente reemplazar esos servidores de red con los suyos propios. [35]
Debido a que el servidor DHCP no tiene un mecanismo seguro para autenticar al cliente, los clientes pueden obtener acceso no autorizado a direcciones IP al presentar credenciales, como identificadores de cliente, que pertenecen a otros clientes DHCP. [32] Esto también permite que los clientes DHCP agoten el almacén de direcciones IP del servidor DHCP: al presentar nuevas credenciales cada vez que solicita una dirección, el cliente puede consumir todas las direcciones IP disponibles en un enlace de red en particular, lo que impide que otros clientes DHCP obtengan el servicio. [32]
DHCP proporciona algunos mecanismos para mitigar estos problemas. La extensión de protocolo Relay Agent Information Option [31] (que en la industria se suele denominar por su número real como Option 82 [36] [37] ) permite a los operadores de red adjuntar etiquetas a los mensajes DHCP a medida que estos llegan a la red de confianza del operador de red. Esta etiqueta se utiliza entonces como un token de autorización para controlar el acceso del cliente a los recursos de red. Debido a que el cliente no tiene acceso a la red anterior al agente de retransmisión, la falta de autenticación no impide que el operador del servidor DHCP confíe en el token de autorización. [31] : sec. 7
Otra extensión, Authentication for DHCP Messages [38] (RFC 3118), proporciona un mecanismo para autenticar mensajes DHCP. Hasta 2002, esta extensión no había tenido una adopción generalizada debido a los problemas de gestión de claves para un gran número de clientes DHCP. [39] Un libro de 2007 sobre tecnologías DSL señaló que:
[H]abían identificado numerosas vulnerabilidades de seguridad en relación con las medidas de seguridad propuestas por RFC 3118. Este hecho, combinado con la introducción de 802.1X , ralentizó la implementación y la tasa de adopción de DHCP autenticado, y nunca se ha implementado ampliamente. [40]
Un libro de 2010 señala que:
[H]uyeron muy pocas implementaciones de autenticación DHCP. Los desafíos de la gestión de claves y los retrasos en el procesamiento debido al cálculo de hash se consideraron un precio demasiado alto a pagar por los beneficios percibidos. [41]
Las propuestas arquitectónicas de 2008 implican la autenticación de las solicitudes DHCP mediante 802.1X o PANA (ambos transportan EAP ). [42] Se realizó una propuesta de la IETF para incluir EAP en el propio DHCP, la denominada EAPoDHCP ; [43] esto no parece haber progresado más allá del nivel de borrador de la IETF, el último de los cuales data de 2010. [44]