Guía de administración del sistema: servicios IP

Acerca del cliente DHCP de Oracle Solaris

El cliente DHCP de Oracle Solaris es el daemon dhcpagent, parte de Oracle Solaris. Al instalar Oracle Solaris se le solicitará que utilice DHCP para configurar las interfaces de red. Si especifica Sí para DHCPv4, el protocolo se activa en su sistema durante la instalación de Oracle Solaris. No hay opciones de instalación específicas para DHCPv6. Pero hay una cuestión relacionada acerca de IPv6. Si activa IPv6, DHCPv6 se activará también en una red local compatible con DHCPv6.

No es necesario hacer nada más con el cliente de Oracle Solaris para utilizar DHCP. La configuración del servidor DHCP determina la información que se proporciona a los sistemas cliente DHCP que utilizan el servicio DHCP.

Si un sistema cliente ya está ejecutando Oracle Solaris pero no utiliza DHCP, se puede reconfigurar para que lo utilice. También se puede reconfigurar un sistema cliente DHCP de modo que deje de utilizar DHCP y utilice la información de red estática que se le proporcione. Para más información consulte Activación y desactivación de un cliente DHCP de Oracle Solaris.

Servidor DHCPv6

No hay ningún servidor DHCPv6 disponible a través de Sun Microsystems para Oracle Solaris. Los servidores de terceros son compatibles con el DHCPv6 de Sun y, si hay un servidor DHCPv6 en la red, el cliente DHCPv6 de Sun lo utilizará.

Consulte Servidor DHCP de Oracle Solarispara obtener información sobre el servidor DHCPv4 de Sun.

Diferencias entre DHCPv4 y DHCPv6

Las dos principales diferencias entre DHCPv4 y DHCPv6 son las siguientes:

El modelo administrativo

DHCPv4 requiere una configuración de cliente explícita. Deberá configurar el sistema DHCPv4 para direccionar a voluntad; esto se suele llevar a cabo durante la instalación inicial del sistema o de forma dinámica mediante las opciones de ifconfig(1M).

DHCPv6 no requiere una configuración de cliente explícita. Por el contrario, el uso de DHCP es una propiedad de la red, y la señal para utilizarlo se encuentra en los mensajes de anuncio de los enrutadores locales. El cliente DHCP crea y destruye automáticamente las interfaces lógicas según sea necesario.

El mecanismo de DHCPv6 es muy parecido, desde el punto de vista administrativo, a la configuración de direcciones sin estado IPv6 (automática) actual. Para la configuración de direcciones sin estado se activaría un indicador en el enrutador local con el fin de indicar que, para un conjunto de prefijos determinado, cada cliente deberá configurar automáticamente una dirección propia utilizando el prefijo anunciado, así como un símbolo o número aleatorio de interfaz local. Para DHCPv6 se requieren los mismos prefijos, pero las direcciones se obtienen y gestionan mediante un servidor DHCPv6 en lugar de asignarse de forma "aleatoria.”

Dirección MAC e ID de cliente

DHCPv4 utiliza la dirección MAC y un ID de cliente opcional para identificar al cliente y así asignarle una dirección. Cad vez que el mismo cliente llega a la red, obtiene la misma dirección, si es posbile.

DHCPv6 utiliza básicamente el mismo esquema, pero hace que el ID de cliente sea obligatorio y le impone una estructura. El ID de cliente de DHCPv6 consta de dos partes: un Identificador único de DHCP (DUID) y un Identificador de identidad de asociación (IAID). El DUID identifica el sistema cliente (no solo una interfaz, como en DHCPv4), y el IAID identifica la interfaz en ese sistema.

Tal como se describe en RFC 3315, una asociación de identidad es el método que utilizan el servidor y el cliente para identificar, agrupar y gestionar un conjunto de direcciones IPv6 relacionadas. Un cliente debe asociar al menos una asociación de identidad (IA) con cada una de sus interfaces de red, y a continuación utiliza las IA asignadas para obtener información de configuración de un servidor de esa interfaz. Para obtener información adicional sobre IA, consulte la siguiente sección, “Detalles de protocolo.”

DUID+IAID pueden también emplearse con DHCPv4. Se pueden concatenar de forma no ambigua para actuar como ID de cliente. Por motivos de compatibilidad, en las interfaces IPv4 habituales no suele hacerse. Sin embargo, para interfaces lógicas ("hme0:1") sí se utiliza DUID+IAID si no se ha configurado ningún ID de cliente.

A diferencia de DHCPv4, DHCPv6 no ofrece una opción de "nombre de cliente", así que no hay modo de asignar nombres a sus sistemas basándose únicamente en DHCPv6. Si necesita saber el nombre DNS que corresponde a una dirección porporcionada por DHCPv6, utilice la técnica de determinación inversa de DNS (consulta de dirección-nombre a través de la función getaddrinfo(3SOCKET) ) para averiguar la información de nombre correspondiente. Esto implica que, si solo utiliza DHCPv6 y desea que un nodo tenga un nombre específico, deberá configurar /etc/nodename en su sistema.

Detalles del protocolo

Con DHCPv4, el servidor DHCP proporciona la máscara de subred qie se debe utilizar con la dirección asignada. Con DHCPv6, la máscara de subred (que se denomina también “longitud de prefijo”) la asignan los anuncios de enrutador, y no la controla el servidor DHCP.

DHCPv4 incorpora la opción de Nombre de host, que se utiliza para asignar el nombre del nodo en todo el sistema. DHCPv6 no dispone de esa opciòn.

Para configurar un ID de cliente para DHCPv6 se debe especificar un DUID, en lugar de dejar que el sistema lo elija automáticamente. Esta operación se puede hacer globalmente para el daemon, por cada interfaz. Utilice el formato siguiente para configurar la DUID global (tenga en cuenta el punto inicial):

.v6.CLIENT_ID=<DUID>

Para configurar una interfaz determinada para que use un DUID específico (y que un servidor DHCPv6 perciba el sistema como varios clientes independientes):

hme0.v6.CLIENT ID=<DUID>

Cada asociación de identidad (IA) acepta un tipo de dirección. Por ejemplo, una asociación de identidad para direcciones temporales (IA_TA) acepta direcciones temporales, mientras que una para direcciones no temporales (IA_NA) lleva asignadas direcciones permanentes. La versión de DHCPv6 que se describe en esta guía solo poroporciona asociaciones IA_NA.

Oracle Solaris asigna exactamente un IAID a cada interfaz cuando se le solicita, y el IAID se guarda en un archivo en el sistema de archivos raíz para que sea constante durante toda la vida del sistema.

Interfaces lógicas

En el cliente DHCPv4, cada interfaz lógica es independiente y es una unidad administrativa. Aparte de la interfaz lógica cero (cuyo identificador predeterminado es la dirección MAC de la interfaz), el usuario puede configurar interfaces específicas para ejecutar DHCP; para ello debe especificar un CLIENT_ID en el archivo de configuración dhcpagent. Por ejemplo:

hme0:1.CLIENT_ID=orangutan

DHCPv6 funciona de otra forma. La interfaz lógica cero en una interfaz IPv6 es siempre, a diferencia de IPv4, una dirección local. La dirección local se utiliza pars asignar automáticamente una dirección IP a un dispositivo de una red IP cuando no se dispone de otro método de asignación, como un servidor DHCP. La interfaz lógica cero no puede estar bajo control de DHCP, de modo que, aunque DHCPv6 se ejecute en esa interfaz (que se denomina también interfaz "física"), solo asigna direcciones a interfaces lógicas que no sean la cero.

En respuesta a una solicitud de cliente DHCPv6, el servidor DHCPv6 devuelve una lista de direcciones para que el cliente las configure.

Negociación de opciones

DHCPv6 dispone de la opción Solicitud de opciones, que ofrece al servidor una pista de lo que el cliente prefiere ver. Si se han enviado todas las posibles opciones desde el servidor al cliente, se podría enviar tanta información que parte de ella debería perderse en el camino al cliente. El servidor podría utilizar esa pista para elegir qué opciones debe incluir en la respuesta. Otra posibilidad es que el servidor haga caso omiso de la pista y elija los elementos que se inlcuyen. En Oracle Solaris, por ejemplo, las opciones preferibles podrían incluir el dominio de direcciones DNS de Oracle Solaris o el dominio de direcciones NIS, pero posiblemente no se incluiría el servidor de netbios.

DHCPv4 proporciona el mismo tipo de sugerencia, pero sin la opción especial de Solicitud de opciones. En cambio, DHCPv4 utiliza PARAM_REQUEST_LIST en /etc/default/dhcpagent.

Sintaxis de configuración

Configure el cliente DHCPv6 de forma similar al actual cliente DHCPv4, mediante /etc/default/dhcpagent.

La sintaxis se aumenta con un marcador “.v6” entre el nombre de la interfaz (si lo hay) y el parámetro que se debe configurar. Por ejemplo, la lista de solicitud de opciones IPv4 global se configura así:

PARAM_REQUEST_LIST=1,3,6,12,15,28,43

Se puede configurar una interfaz individual para omitir la opción de nombre de host, de este modo:

hme0.PARAM_REQUEST_LIST=1,3,6,15,28,43

Para configurar una lista de solicitud global para DHCPv6, tenga en cuenta el punto precedente:

.v6.PARAM_REQUEST_LIST=23,24

O, para configurar una interfaz individual, siga este ejemplo:

hme0.v6.PARAM_REQUEST_LIST=21,22,23,24

Utilice como referencia para configuración de DHCPv6 este archivo /etc/default/dhcpagent:


# The default DHCPv6 parameter request list has preference (7), unicast (12),
# DNS addresses (23), DNS search list (24), NIS addresses (27), and
# NIS domain (29).  This may be changed by altering the following parameter- 
# value pair.  The numbers correspond to the values defined in RFC 3315 and 
# the IANA dhcpv6-parameters registry. 
.v6.PARAM_REQUEST_LIST=7,12,23,24,27,29

Inicio de cliente DHCP

En la mayor parte de casos, no es necesario hacer nada para que se incie el cliente DHCPv6. El daemon in.ndpd inicia DHCPv6 automáticamente cuando se necesita. Es posible que necesite /etc/hostname6.$IFNAME para configurar una interfaz que se debe sondear para IPv6 durante el inicio. Sin embargo, el instalador ya efectúa esta operación si se activa IPv6 en el sistema durante la instalación.

Para DHCPv4 se debe solicitar el inicio del cliente, si no se hizo durante la instalación de Oracle Solaris. Consulte Cómo activar el cliente DHCP de Oracle Solaris.

El daemon dhcpagent obtiene la información de configuración que necesitan otros procesos implicados en el inicio del sistema. Por ello, las secuencias de inicio del sistema se inician dhcpagent en las primeras fases del proceso de inicio y esperan hasta que llega la información de configuración de red del servidor DHCP.

Aunque el comportamiento predeterminado es ejecutar DHCPv6, puede optar por no ejecutarlo. Una vez que DHCPv6 se está ejecutando, se puede detener con el comando ifconfig. También se puede desactivar DHCPv6 para que no se inicie al reiniciar el sistema; para ello se debe modificar el archivo /etc/inet/ndpd.conf.

Por ejemplo, para cerrar inmediatamente DHCPv6 en la interfaz denominada “hme0.”


ex# echo ifdefault StatefulAddrConf false >> /etc/inet/ndpd.conf  
ex# pkill -HUP -x in.ndpd   
ex# ifconfig hme0 inet6 dhcp release

La presencia del archivo /etc/dhcp.interfaz (por ejemplo, /etc/dhcp.ce0 en un sistema Sun Fire 880) indica a las secuencias de inicio que en la interfaz especificada se debe utilizar DHCPv4. Cuando encuentran un archivo dhcp. interfaz, las secuencias de inicio ejecutan dhcpagent.

Al ejecutarse, dhcpagent espera hasta recibir instrucciones para configurar una interfaz de red. Las secuencias de inicio emiten el comando ifconfig interfaz dhcp start, que indica a dhcpagent que inicie DHCPv4 como se describe en Funcionamiento de DHCP. Si hay comandos en el archivo dhcp.interfaz, se agregan a la opción dhcp start de ifconfig. Consulte la página de comando man ifconfig(1M) para obtener información sobre las opciones del comando ifconfig interfaz dhcp.

Comunicación con DHCPv6

A diferencia de DHCPv4, que se invoca mediante configuración manual, DHCPv6 se invoca mediante anuncios de enrutador (RA). En función de la configuración del enrutador, el sistema llama automáticamente a DHCPv6 en la interfaz en la que se ha recibido el mensaje de anuncio de enrutador y utiliza DHCP para obtener una dirección y otros parámetros, o el sistema solicita sólo datos que no sean la dirección (por ejemplo, servidores DNS) con DHCPv6.

El daemon in.ndpd recibe el mensaje de anuncio del enrutador. Lo hace automáticamente en todas las interfaces sondeadas para IPv6 en el sistema. Cuando in.ndpd ve un RA que especifica que se debe ejecutar DHCPv6, lo llama.

Para impedir que in.ndpd inicie DHCPv6 se puede modificar el archivo /etc/inet/ndpd.conf.

También se puede detener DHCPv6 una vez iniciado mediante una de las siguientes versiones de ifconfig:

ifconfig <interfaz> inet6 dhcp drop

o:

ifconfig <interfaz> inet6 dhcp release

Cómo gestionan los protocolos del cliente DHCP la información de configuración de red

Los protocolos de los clientes DHCPv4 y DHCPv6 gestionan la información de configuración de red de forma distinta. La principal diferencia es que, con DHCPv4, la negociación es por el permiso de uso de una sola dirección y algunas opciones para acompañarla. Con DHCPv6, la negociación implica un lote de direcciones y de opciones.

Para acceder a información básica sobre la interacción entre el cliente y el servidor DHCPv4, consulte el Capítulo 12Acerca de DHCP de Oracle Solaris (información general).

Cómo gestiona el cliente DHCPv4 la información de configuración de red

Una vez obtenido el paquete de información de un servidor DHCP, dhcpagent configura la interfaz de red y la muestra. El daemon controla la interfaz durante la duración del permiso de la dirección IP y mantiene los datos de configuración en una tabla interna. Las secuencias de inicio del sistema utilizan el comando dhcpinfo para extraer valores de opciones de configuración de la tabla interna. Los valores se utilizan para configurar el sistema y permitirle comunicarse a través de la red.

El daemon dhcpagent espera de forma pasiva a que transcurra un cierto período de tiempo, generalmente la mitad del tiempo de permiso. A continuación, el daemon solicita una ampliación del permiso a un servidor DHCP. Si el sistema notifica a dhcpagent que la interfaz está cerrada o que la dirección IP ha cambiado, el daemon no controla la interfaz hasta que el comando ifconfig le indica que lo haga. Si dhcpagent obtiene que la interfaz está en marcha y que la dirección IP no ha cambiafdo, envía una solicitud al servidor para una renovación del permiso. Si no se puede renovar el permiso, dhcpagent cierra la interfaz al finalizar el período de permiso.

Cada vez que dhcpagent efectúa una acción relacionada con el permiso, el daemon busca un archivo ejecutable denominado /etc/dhcp/eventhook. Si se halla un archivo ejecutable con ese nombre, dhcpagent llama a dicho archivo. Consulte Secuencias de eventos de cliente DHCP para obtener más información acerca del uso del ejecutable de eventos.

Cómo gestiona el cliente DHCPv6 la información de configuración de red

La comunicación DHCPv6 entre cliente y servidor se inicia con el envío de un mensaje de solicitud por parte del cliente con el objetivo de localizar servidores. En respuesta, todos los servidores disponibles para el servicio DHCP envían un mensaje de anuncio. El mensaje del servidor contiene varios registros IA_NA (Asociación de identidad - Dirección no temporal), así como otras opciones (como direcciones de servidores DNS) que puede proporcionar el servidor.

Un cliente puede solicitar direcciones específicas (y múltiplos de ellas) si incluye sus propios registros IA_NA/IAADDR en el mensaje de solicitud. Generalmente, un cliente solicita direcciones específicas si tiene direcciones antiguas registradas y quiere que el servidor le proporcione las mismas direcciones si es posible. Independientemente de lo que haga el cliente (incluso si no solicita dirección alguna), el servidor puede proporcionarle cualquier número de direcciones para una única transacción DHCPv6.

Este es el diálogo de mensajes entre los clientes y los servidores.

Si el valor de preferencia en el mensaje de anuncio es de 255, el cliente DHCPv6 selecciona inmediatamente ese servidor. Si el servidor con la preferencia más alta no responde o no envía satisfactoriamente un mensaje de respuesta al mensaje de solicitud, el cliente sigue buscando servidores por orden de preferencia hasta que se queda sin mensajes de anuncio. En ese momento, el cliente vuelve a empezar reenviando mensajes de solicitud.

El servidor elegido envía un mensaje de respuesta que contiene las direcciones y parámetros de configuración asignados en respuesta a un mensaje de solicitud de tipo Request o Solicit.

Cierre del cliente DHCP

Al cerrarse, el cliente envía un mensaje de liberación al servidor para indicarle que ya no utilizará una o varias de las direcciones asignadas. Cuando el sistema que ejecuta el cliente DHCPv4 se cierra normalmente, dhcpagent escribe la información de configuración actual en el archivo /etc/dhcp/interfaz.dhc o, para DHCPv6, en /etc/dhcp/interfaz.dh6 . De forma predeterminada, el permiso se suele guardar en vez de liberarse, de modo que el servidor DHCP no sabe que la dirección IP no se está usando de forma activa, lo que permite al cliente recuperar fácilmente la dirección en el siguiente inicio. Esta acción predeterminada es equivalente al comando ifconfig <interfaz> dhcp drop.

Si el permiso en ese archivo aún es válido cuando el sistema se reinicia, dhcpagent envía una solicitud abreviada para utilizar la misma dirección IP e información de configuración de red. Para DHCPv4, es un mensaje de solicitud de tipo Request. Para DHCPv6, es un mensaje de confirmación.

Si el servidor DHCP permite esta solicitud, dhcpagent puede utilizar la información que escribió en el disco cuando el sistema se cerró. Si el servidor no da permiso al cliente para utilizar la información, dhcpagent inicia la secuencia del protocolo DHCP que se describe en Funcionamiento de DHCP. El resultado es que el cliente obtiene nueva información de configuración de red.