Protocolo de configuración dinámica de host

protocolo que permite la configuración automática de la interfaz de un host en una red
(Redirigido desde «DHCP»)

El protocolo de configuración dinámica de host (en inglés: Dynamic Host Configuration Protocol, también conocido por sus siglas de DHCP), desarrollado a partir de 1985 como extensión de BOOTP, es un protocolo de red de tipo cliente/servidor[1]​ mediante el cual un servidor DHCP asigna dinámicamente una dirección IP y otros parámetros de configuración de red a cada dispositivo en una red para que puedan comunicarse con otras redes IP. Este servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme estas van quedando libres, sabiendo en todo momento quién ha estado en posesión de esa IP, cuánto tiempo la ha tenido y a quién se la ha asignado después. Así los clientes de una red IP pueden conseguir sus parámetros de configuración automáticamente. Este protocolo por primera vez se publicó en octubre de 1993 (RFC 1531) y su implementación actual para IPv4 está en la RFC 2131 (marzo de 1997); para IPv6 está descrita en RFC 3315 (julio de 2003).

Protocolo de configuración dinámica de host
Familia Familia de protocolos de Internet
Función Configuración automática de parámetros de red
Puertos

67/UDP (servidor)

68/UDP (cliente)
Ubicación en la pila de protocolos
Aplicación DHCP
Transporte UDP
Red IP
Estándares
RFC 2131 (1997)

Historia

editar

DHCP se definió por primera vez como un protocolo de seguimiento estático de las normas en el RFC 1531 en octubre de 1993, como una extensión del protocolo Bootstrap (BOOTP). La motivación para extender BOOTP /etc/sysconfig/network-scripts/ifcfg-enpXs0 era porque BOOTP requería intervención manual para completar la información de configuración en cada cliente, y no proporciona un mecanismo para la recuperación de las direcciones IP en desuso. Puede ser usado para entregar un amplio rango de "option subnet-mask" parámetros de configuración extra a los clientes IP, incluyendo parámetros específicos a ciertas plataformas.[2]​ Debido a algunos errores en el proceso editorial, fue rápidamente reemitido como RFC 1541.

El protocolo BOOTP a su vez fue definido por primera vez en el RFC 951 como un reemplazo para el protocolo RARP (del inglés "Reverse Address Resolution Protocol"), o resolución de direcciones inversa. La principal motivación para la sustitución de RARP con BOOTP fue que RARP era un protocolo de la capa de enlace de datos. Esto hizo más difícil su aplicación /etc/sysctl.d/99-sysctl.conf en muchas plataformas de servidores, y requería un servidor presente en cada enlace de red individual. BOOTP introdujo la innovación de un agente de retransmisión, lo que permitió el envío de paquetes BOOTP fuera de la red local utilizando enrutamiento IP estándar, por lo que un servidor central de BOOTP podría servir de anfitriones en muchas subredes IP.[3]


Muchos trabajaron para mejorar el protocolo, ya que ganó popularidad y en 1997 se agregó el tipo de mensaje DHCPINFORM[4]​ y otros cambios menores en el RFC 2131, y al 2016 se mantiene como el estándar para redes IPv4. /etc/sysctl.d/99-sysctl.conf DHCPv6 fue documentado originalmente en el RFC 3315 en 2003 y luego complementado por muchos otros RFC. El RFC 3633 añadió un mecanismo de delegación de prefijo para DHCPv6. DHCPv6 se amplió aún más para proporcionar información a los clientes con la configuración automática de direcciones sin estado en el RFC 3736.

Asignación de direcciones IP

editar

Cada dirección IP debe configurarse manualmente en cada dispositivo y, si el dispositivo se mueve a otra subred, se debe configurar otra dirección IP diferente. El DHCP le permite al administrador supervisar y distribuir de forma centralizada las direcciones IP necesarias y, automáticamente, asignar y enviar una nueva IP si fuera el caso en que el dispositivo es conectado en un lugar diferente de la red.

El protocolo DHCP incluye tres métodos de asignación de direcciones IP:

Asignación manual o estática
Asigna una dirección IP a una máquina determinada. Se suele utilizar cuando se quiere controlar la asignación de dirección IP a cada cliente, y evitar, también, que se conecten clientes no identificados.
Asignación automática
Asigna una dirección IP a una máquina cliente la primera vez que hace la solicitud al servidor DHCP y hasta que el cliente la libera. Se suele utilizar cuando el número de clientes no varía demasiado.
Asignación dinámica
El único método que permite la reutilización dinámica de las direcciones IP. El administrador de la red determina un rango de direcciones IP y cada dispositivo conectado a la red está configurado para solicitar su dirección IP al servidor cuando la tarjeta de interfaz de red se inicializa. El procedimiento usa un concepto muy simple en un intervalo de tiempo controlable. Esto facilita la instalación de nuevas máquinas clientes.

Algunas implementaciones de DHCP pueden actualizar el DNS asociado con los servidores para reflejar las nuevas direcciones IP mediante el protocolo de actualización de DNS establecido en RFC 2136 (Inglés).

El DHCP es una alternativa a otros protocolos de gestión de direcciones IP de red, como el BOOTP (Bootstrap Protocol). DHCP es un protocolo más avanzado, pero ambos son los usados normalmente.

En Windows 98 y posteriores, cuando el DHCP es incapaz de asignar una dirección IP, se utiliza un proceso llamado "Automatic Private Internet Protocol Addressing".

Parámetros configurables

editar

Un servidor DHCP puede proveer de una configuración opcional al dispositivo cliente. Dichas opciones están definidas en el RFC 2132. Algunas de las opciones configurables son:

  • Dirección del servidor DNS
  • Nombre DNS
  • Puerta de enlace de la dirección IP
  • Dirección de Publicación Masiva (broadcast address)
  • Máscara de subred
  • Tiempo máximo de espera del ARP (Protocolo de Resolución de Direcciones según siglas en inglés)
  • MTU (Unidad de Transferencia Máxima según siglas en inglés) para la interfaz
  • Servidores NIS (Servicio de Información de Red según siglas en inglés)
  • Dominios NIS
  • Servidores NTP (Protocolo de Tiempo de Red según siglas en inglés)
  • Servidor SMTP
  • Servidor TFTP
  • Nombre del servidor de nombres de Windows (WINS)

Implementaciones

editar

Microsoft introdujo el DHCP en sus Servidores NT con la versión 3.5 de Windows NT a finales de 1994.

El Consorcio de Software de Internet (ISC: Internet Software Consortium) publicó distribuciones de DHCP para Unix con la versión 1.0.0 del ISC DHCP Server el 6 de diciembre de 1997 y una versión (2.0) que se adaptaba mejor al RFC el día 22 de junio de 1999. Se puede encontrar el software en https://web.archive.org/web/20050102090919/http://www.isc.org/sw/dhcp/

Otras implementaciones importantes incluyen:

  • Cisco: un servidor DHCP habilitado en Cisco IOS 12.0 en el mes de febrero de 1999
  • Sun: añadió el soporte para DHCP a su sistema operativo Solaris el 8 de julio de 2001.

Además, varios routers incluyen soporte DHCP para redes de hasta 255 dispositivos.

Anatomía del protocolo

editar
 
Esquema de una sesión típica DHCP.

(Autoridad de Números Asignados en Internet según siglas en inglés) en BOOTP: 67/UDP para las computadoras servidor y 68/UDP para los clientes.

A continuación, se describe la secuencia de intercambio de mensajes entre el cliente DHCP y el servidor DHCP.

DHCP Discovery

editar

DHCP Discovery es una solicitud DHCP realizada por un cliente de este protocolo para que el servidor DHCP de dicha red de computadoras le asigne una dirección IP y otros Parámetros DHCP como la máscara de red o el nombre DNS.[5]​ La solicitud va contenida en un mensaje de descubrimiento que se difunde a todas las máquinas en la red.

DHCPDISCOVER

IP: source=0.0.0.0; destination=255.255.255.255
UDP: source port=68; destination port=67

Octet 0 Octet 1 Octet 2 Octet 3
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR (Client IP address)
0x00000000
YIADDR (Your IP address)
0x00000000
SIADDR (Server IP address)
0x00000000
GIADDR (Gateway IP address)
0x00000000
CHADDR (Client hardware address)
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0s, or overflow space for additional options; BOOTP legacy.
[Magic cookie]
0x63825363 (En formato IP es 99.130.83.99 (RFC-1497))
DHCP options
0x350101 53: 1 (DHCP Discover)
0x3204c0a00164 50: 192.168.1.100 requested
0x370401030f06 55 (Parameter Request List):1 (Request Subnet Mask),, 3 (Router),, 15 (Domain Name), y 6 (Domain Name Server)
0xff 255 (Endmark)

DHCP Offer

editar

DHCP Offer es el paquete de respuesta del Servidor DHCP a un cliente DHCP ante su petición de la asignación de los Parámetros DHCP. Para ello involucra su dirección MAC (Media Access Control). Este mensaje contiene una dirección IP disponible que el servidor está dispuesto a asignar al cliente, junto con los otros parámetros de configuración. El servidor puede enviar múltiples ofertas de asignación de direcciones IP y otros parámetros de configuración al cliente.

DHCPOFFER

IP: source=192.168.1.1; destination=255.255.255.255
UDP: source port=67; destination port=68

Octet 0 Octet 1 Octet 2 Octet 3
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR (Client IP address)
0x00000000
YIADDR (Your IP address)
0xC0A80164 (192.168.1.100)
SIADDR (Server IP address)
0xC0A80101 (192.168.1.1)
GIADDR (Gateway IP address)
0x00000000
CHADDR (Client hardware address)
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0s; BOOTP legacy.
Magic cookie
0x63825363 (En formato IP es 99.130.83.99 (RFC-1497))
DHCP options
53: 2 (DHCP Offer)
1 (subnet mask): 255.255.255.0
3 (Router): 192.168.1.1
51 (IP address lease time): 86400s (1 day)
54 (DHCP server): 192.168.1.1
6 (DNS servers): 9.7.10.15, 9.7.10.16, 9.7.10.18

DHCP Request

editar

Después de recibir las ofertas, el cliente DHCP selecciona una oferta específica de los paquetes recibidos de DHCP Offer. El cliente envía un mensaje de solicitud al servidor DHCP correspondiente, indicando que desea aceptar esa oferta en particular. El mensaje contiene la dirección IP de la oferta seleccionada.

DHCPREQUEST
OP HTYPE HLEN HOPS
0x01 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
GIADDR
0x00000000
CHADDR
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0's. BOOTP legacy
Magic Cookie
0x63825363 (En formato IP es 99.130.83.99 (RFC-1497))
DHCP Options
DHCP option 53: DHCP Request
DHCP option 50: 192.168.1.100 requested
DHCP option 54: 192.168.1.1 DHCP server.

DHCP Acknowledge

editar

Al recibir el mensaje de solicitud del cliente, el servidor la reconoce y le envía un acuse de recibo o mensaje de aceptación DHCP, se inicia la fase final del proceso de configuración. Esta fase implica el reconocimiento con el envío de un paquete al cliente. Este paquete confirma que la dirección IP solicitada ha sido asignada al cliente e incluye la duración de la conexión y cualquier otra información de configuración que el cliente pueda tener solicitada. En este punto, el proceso de configuración TCP/IP se ha completado. El servidor reconoce la solicitud y la envía acuse de recibo al cliente. El sistema en su conjunto espera que el cliente configure su interfaz de red con las opciones suministradas. El servidor DHCP responde a la DHCPREQUEST con un DHCPACK, completando así el ciclo de iniciación. La dirección origen es la dirección IP del servidor de DHCP y la dirección de destino es todavía 255.255.255.255. El campo YIADDR contiene la dirección del cliente, y los campos CHADDR y DHCP: Client Identifier campos son la dirección física de la tarjeta de red en el cliente. La sección de opciones del DHCP identifica el paquete como un ACK.

DHCPACK
UDP Src=192.168.1.1
sPort=67 Dest=255.255.255.255 dPort=68
OP HTYPE HLEN HOPS
0x02 0x01 0x06 0x00
XID
0x3903F326
SECS FLAGS
0x0000 0x0000
CIADDR (Client IP Address)
0x00000000
YIADDR (Your IP Address)
0xC0A80164
SIADDR (Server IP Address)
0x00000000
GIADDR (Gateway IP Address switched by relay)
0x00000000
CHADDR (Client Hardware Address)
0x00053C04
0x8D590000
0x00000000
0x00000000
192 octets of 0's. BOOTP legacy
Magic Cookie
0x63825363 (En formato IP es 99.130.83.99 (RFC-1497))
DHCP Options
DHCP option 53: DHCP ACK
DHCP option 1: 255.255.255.0 subnet mask
DHCP option 3: 192.168.1.1 router
DHCP option 51: 1 day IP lease time
DHCP option 54: 192.168.1.1 DHCP server

Confidencialidad

editar

En un contexto de proveedor de Internet, los registros DHCP de asignación de direcciones o bien contienen o están vinculadas a información de identificación personal confidencial, los datos de contacto del cliente. Estos son atractivos para los spammers, y podrían ser buscados para "expediciones de pesca" por las agencias de policía o litigantes. Por lo menos una aplicación[cita requerida] imita la política de Canadian Library Association para la circulación del libro y no retiene información de identificación una vez que el "préstamo" ha terminado.

Parámetros de configuración del cliente

editar

El servidor DHCP puede proporcionar parámetros de configuración opcionales para el cliente. El RFC 2132 describe las opciones de DHCP disponibles definidas por Internet Assigned Numbers Authority (IANA) - Parámetros DHCP y BOOTP.[6]

Un cliente DHCP puede seleccionar, manipular y sobrescribir los parámetros proporcionados por un servidor DHCP.[7]

Véase también

editar

Referencias

editar
  1. «El DHCP y la configuración de redes». IONOS Digitalguide. Consultado el 26 de agosto de 2022. 
  2. Network+ Certification option subnet-mask; option broadcast-address; option routers; option domain-name-servers; 2006 Publicado por Microsoft Press.(en inglés)
  3. Bill Croft; John Gilmore (septiembre de 1985). «RFC 951 - Bootstrap Protocol». Network Working Group. 
  4. usado para el protocolo de autodescubrimiento de Proxy Web WPAD
  5. «DHCP Options and BOOTP Vendor Extensions». 
  6. «Dynamic Host Configuration Protocol (DHCP) and Bootstrap Protocol (BOOTP) Parameters». Iana.org. Consultado el 28 de noviembre de 2013. 
  7. En sistemas tipo Unix este refinamiento de nivel cliente típicamente ocurre de acuerdo a los valores en un archivo de configuración /etc/dhclient.conf.

Enlaces externos

editar

Estándares

  • RFC 2131 - Dynamic Host Configuration Protocol
  • RFC 2132 - DHCP Options and BOOTP Vendor Extensions
  • RFC 3046 - DHCP Relay Agent Information Option
  • RFC 3942 - Reclassifying Dynamic Host Configuration Protocol Version Four (DHCPv4) Options
  • RFC 4242 - Information Refresh Time Option for Dynamic Host Configuration Protocol for IPv6
  • RFC 4361 - Node-specific Client Identifiers for Dynamic Host Configuration Protocol Version Four (DHCPv4)
  • RFC 4436 - Detecting Network Attachment in IPv4 (DNAv4)