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

Capítulo 16 Configuración y administración del cliente DHCP

Este capítulo trata sobre el cliente Dynamic Host Configuration Protocol (DHCP) que es parte de Oracle Solaris. En el capítulo se explica el funcionamiento de los protocolos DHCPv4 y DHCPv6 del cliente y la forma de modificar el comportamiento de este.

Uno de los protocolos, DHCPv4, forma parte del sistema operativo Oracle Solaris desde hace tiempo, y permite a los servidores DHCP pasar parámetros de configuración como direcciones de red IPv4 a nodos IPv4.

El otro, DHCPv6, permite a los servidores DHCP pasar parámetros de configuración, como direcciones de red IPv6, a nodos IPv6. DHCPv6 es una contrapartida con estado a “IPv6 Stateless Address Autoconfiguration” (RFC 2462), y se puede utilizar de forma independiente o conjuntamente con la sin estado para obtener parámetros de configuración.

Este capítulo contiene la información siguiente:

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.

Activación y desactivación de un cliente DHCP de Oracle Solaris

Para activar el cliente DHCP en un sistema que ya está ejecutando Oracle Solaris y no utiliza DHCP, primero debe desconfigurar el sistema. Cuando el sistema se inicie, deberá emitir algunos comandos para configurarlo y activar el cliente DHCP.


Nota –

En numerosas implementaciones es habitual que partes esenciales de la infraestructura se configuren con direcciones IP estáticas, en lugar de utilizar DHCP. La determinación de qué dispositivos de la red (como enrutadores y ciertos servidores) deben ser clientes excede el ámbito de esta guía.


ProcedureCómo activar el cliente DHCP de Oracle Solaris

Este procedimiento sólo debe efectuarse si no se activó DHCPv4 durante la instalación de Oracle Solaris. Nunca es necesario para DHCPv6.

  1. Asígnese los permisos de superusuario en el sistema cliente.

  2. Si el sistema utiliza preconfiguración en lugar de configuración interactiva, edite el archivo sysidcfg. Agregue la subclave dhcp a la palabra clave interfaz_red en el archivo sysidcfg.

    Por ejemplo, interfaz_red=hme0 {dhcp}. Consulte la página del comando man sysidcfg(4) para obtener más información.

  3. Desconfigure y cierre el sistema.


    # sys-unconfig
    

    Consulte la página de comando man sys-unconfig(1M) para saber más datos sobre la información de configuración que elimina este comando.

  4. Reinicio del sistema una vez completado el cierre.

    Si el sistema utiliza preconfiguración, la subclave dhcp del archivo sysidcfg configura el sistema para que utilice el cliente DHCP durante el inicio.

    Si el sistema no utiliza preconfiguración, sysidtool le pedirá información de configuración cuando el sistema reinicie. Para más información consulte la página de comando man sysidtool(1M).

  5. Cuando se le solicite si se debe usar DHCP para configurar las interfaces de red, especifique Sí.

ProcedureCómo desactivar un cliente DHCP de Oracle Solaris

  1. Asígnese los permisos de superusuario en el sistema cliente.

  2. Si ha utilizado un archivo sysidcfg para preconfigurar el sistema, elimine la subclave dhcp de la palabra clave network_interface.

  3. Desconfigure y cierre el sistema.


    # sys-unconfig
    

    Consulte la página de comando man sys-unconfig(1M) para saber más datos sobre la información de configuración que elimina este comando.

  4. Reinicio del sistema una vez completado el cierre.

    Si el sistema utiliza preconfiguración, no se le solicitará información de configuración y el cliente DHCP no se configura.

    Si el sistema no utiliza preconfiguración, sysidtool le pedirá información de configuración cuando el sistema se reinicie. Para más información consulte la página de comando man sysidtool(1M).

  5. Cuando se le solicite si se debe usar DHCP para configurar las interfaces de red, especifique No.

Administración del cliente DHCP

El software de cliente DHCP de Oracle Solaris no requiere administración si el sistema funciona normalmente. El daemon dhcpagent se inicia automáticamente cuando el sistema se inicia, renegocia los permisos y se detiene cuando se cierra el sistema. Normalmente no se debe iniciar y detener de forma manual el daemon dhcpagent directamente. En vez de eso, como superusuario del sistema cliente, puede utilizar el comando ifconfig para modificar la gestión que dhcpagent efectúa de la interfaz de red, si es necesario.

Opciones del comando ifconfig que se utilizan con el cliente DHCP

En esta sección se resumen las opciones del comando, documentadas en la página de comando man ifconfig(1M) La única diferencia entre las versiones de DHCPv4 y de DHCPv6 de estos comandos es la palabra clave “inet6”. Incluya la palabra clave “inet6” para DHCPv6, pero no lo haga si ejecuta DHCPv4.

El comando ifconfig le permite efectuar las siguientes tareas:

Asignación de los parámetros de configuración del cliente DHCP

El archivo /etc/default/dhcpagent del sistema cliente contiene parámetros ajustables para dhcpagent. Puede utilizar un editor de texto para modificar diversos parámetros que afectan al funcionamiento del cliente. El archivo /etc/default/dhcpagent está bien documentado; si necesita más información, consulte el propio archivo, así como la página de comando man dhcpagent(1M).

El archivo /etc/dhcp.interfaz es otra de las ubicaciones en las que se definen los parámetros que afectan al cliente DHCP. Los parámetros configurados en este archivo se utilizan en las secuencias de inicio del sistema con el comando ifconfig. Pero esto solo afecta a DHCPv4. No hay un equivalente para DHCPv6.

De forma predeterminada, el cliente DHCP se configura del siguiente modo:

Para DHCPv4

Para DHCPv4 y DHCPv6

Sistemas cliente DHCP con varias interfaces de red

El cliente DHCP puede gestionar simultáneamente varias interfaces distintas en un sistema. Las interfaces pueden ser físicas o lógicas. Cada interfaz tiene su propia dirección IP y tiempo de permiso. Si se configura más de una interfaz de red para DHCP, el cliente emite solicitudes independientes para configurarlas. El cliente mantiene un conjunto independiente de parámetros de configuración de red para cada interfaz. Aunque los parámetros se almacenan de forma independiente, algunos de ellos son de naturaleza global. Los parámetros globales se aplican al sistema en su conjunto, en lugar de a una interfaz de red específica.

El nombre de host, el nombre de dominio NIS y la zona horaria son ejemplos de parámetros globales. Los parámetros globales suelen tener valores distintos para cada interfaz. Sin embargo, solo se puede utilizar un valor para cada parámetro global asociado con cada sistema. Para garantizar que la consulta de un parámetro global recibe una respuesta única, solo se utilizan los parámetros globales de la interfaz de red principal. Puede insertar la palabra primary en el archivo /etc/dhcp. interfaz de la interfaz que desea tratar como principal. Si no se utiliza la palabra clave primary, la primera interfaz en orden alfabético es la que se considerará interfaz principal.

El cliente DHCP gestiona los permisos de las interfazs lógicas y físicas de la misma forma, salvo por la siguiente limitación de las interfazs lógicas:

Nombres de host de cliente DHCPv4

De forma predeterminada, el cliente DHCPv4 de Oracle Solaris no proporciona su propio nombre de host, ya que el cliente espera que sea el servidor DHCP el que lo haga. El servidor DHCPv4 de Oracle Solaris está configurado de forma predeterminada para proporcionar nombres de host a los clientes DHCPv4. Cuando se utilizan el servidor y el cliente DHCPv4 de Oracle Solaris, esta configuración predeterminada funciona perfectamente. Sin embargo, si se utiliza el cliente DHCPv4 de Oracle Solaris con servidores DHCP de terceros, es posible que el cliente no reciba un nombre de host del servidor. Si el cliente DHCP de Oracle Solaris no recibe un nombre de host a través de DHCP, el sistema cliente busca un nombre para utilizar como nombre de host en el archivo /etc/nodename. Si el archivo está vacío, se asigna el nombre de host unknown (desconocido).

Si el servidor DHCP proporciona un nombre en la opción de DHCP Hostname, el cliente utiliza ese nombre de host, aunque se asigne un valor distinto en el archivo /etc/nodename. Si quiere que el cliente utilice un nombre de host específico, puede habilitar al cliente para que lo solicite. Consulte el procedimiento siguiente.


Nota –

El procedimiento siguiente no funciona con todos los servidores DHCP. Mediante este proceso solicita al cliente que envíe un nombre de host específico al servidor DHCP y que espere el mismo nombre como respuesta.

Sin embargo, el servidor DHCP no tiene por qué satisfacer esta solicitud y, de hecho, muchos no lo hacen. Se limitan a devolver un nombre distinto.


ProcedureCómo activar un cliente DHCPv4 de Oracle Solaris para que solicite un nombre de host específico

  1. En el sistema cliente, edite el archivo /etc/default/dhcpagent como superusuario.

  2. Busque la palabra clave REQUEST_HOSTNAME en el archivo /etc/default/dhcpagent y modifíquela del siguiente modo:


    REQUEST_HOSTNAME=yes

    So delante de REQUEST_HOSTNAME aparece un signo de comentario (#), bórrelo. Si no aparece la palabra clave REQUEST_HOSTNAME, insértela.

  3. Edite el archivo /etc/hostname. interfaz en el sistema cliente para agregar la línea siguiente:

    inet nombre_host
    

    nombre_host es el nombre que quiere que el cliente utilice.

  4. Escriba los comandos siguientes para que el cliente efectúe una negociación DHCP completa al reiniciar:


    # ifconfig interface dhcp release
    # reboot
    

    Los datos de DHCP reservados en el cliente se eliminan. El cliente reinicia el protocolo para solicitar nueva información de configuración, incluido un nuevo nombre de host. El servidor DHCP se asegura en primer lugar de que otro sistema de la red no utiliza ese nombre de host. El servidor asigna entonces el nombre de host al cliente. Si se configura para ello, el servidor DHCP puede actualizar los servicios de nombres con el nombre de host del cliente.

    Si desea modificar el nombre de host más adelante, repita el Paso 3 y el Paso 4.

Sistemas cliente DHCP y servicios de nombres

Los sistemas Oracle Solaris admiten los siguientes servicios de nombres: DNS, NIS, NIS+ y un almacén en un archivo local (/etc/inet/hosts). Cada servicio de nombres requiere configurar algunos aspectos antes de poder utilizarse. El archivo de configuración de cambios del servicio de nombres (ver nsswitch.conf(4)) debe también configurarse de forma adecuada para indicar los servicios de nombres que se deben utilizar.

Antes de que un cliente DHCP puede utilizar un servicio de nombrse, se debe configurar el sistema como cliente del servicio. De forma predeterminada y a manos que se indique lo contrario durante la instalación del sistema, solo se utilizan archivos locales.

En la tabla siguiente se resumen las cuestiones relacionadas con cada servicio de nombres y DHCP. La tabla contiene también vínculos a documentación que pueden ayudarle a configurar clientes para cada servicio de nombres.

Tabla 16–1 Información de cliente de servicio de nombres para sistemas cliente DHCP

Servicio de nombres  

Información de configuración de cliente 

NIS 

Si utiliza DHCP de Oracle Solaris para enviar información de la instalación de red de Oracle Solaris a un sistema cliente, puede utilizar una macro de configuración que contiene las opciones NISservs y NISdmain. Estas opciones pasan las direcciones IP de los servidores NIS y el nombre de dominio NIS al cliente. El cliente se convierte automáticamente en cliente NIS.

Si un sistema cliente DHCP ya está ejecutando Oracle Solaris, el cliente NIS no se configura automáticamente en ese sistema cuando el servidor DHCP envía información NIS al cliente. 

Si el servidor DHCP se configura para enviar información NIS al sistema cliente DHCP, puede ver los valores proporcionados al cliente utilizando el comando dhcpinfo en el cliente, de la siguiente forma:

# /sbin/dhcpinfo NISdmain

# /sbin/dhcpinfo NISservs


Nota –

Para DHCPv6, incluya -v6 y palabras clave de protocolo distintas en el comando.

# /sbin/dhcpinfo -v6 NISDomain

# /sbin/dhcpinfo -v6 NISServers


Utilice los valores devueltos para el nombre del dominio NIS y los servidores NIS al configurar el sistema como cliente NIS. 

Para configurar un cliente NIS para un sistema cliente DHCP de Oracle Solaris utilice el método estándar documentado en el Capítulo 5, Setting Up and Configuring NIS Service de System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP).


Consejo –

Puede escribir una secuencia de comandos que utilice dhcpinfo e ypinit para automatizar la configuración de clientes NIS en sistemas cliente DHCP.


NIS+ 

Si el cliente NIS+ para un sistema cliente DHCP se configura de la forma convencional, es posible que el servidor DHCP proporcione de vez en cuando al cliente direcciones distintas. Esto provoca problemas de seguridad, ya que la seguridad de NIS+ incluye la dirección IP como parte de la configuración. Para garantizar que el cliente tenga la misma dirección cada vez, configure el cliente NIS+ para un sistema cliente DHCP de forma no estándar, según se documenta en Configuración de clientes DHCP como clientes NIS+.

Si se ha asignado manualmente una dirección IP al sistema cliente DHCP, la dirección del cliente será siempre la misma. El cliente NIS+ se puede configurar de la forma estándar, descrita en Setting Up NIS+ Client Machines de System Administration Guide: Naming and Directory Services (NIS+).

/etc/inet/hosts

Deberá configurar el archivo /etc/inet/hosts para un sistema cliente DHCP que vaya a utilizar /etc/inet/hosts para su servicio de nombres.

El nombre de host del sistema cliente DHCP se agrega a su propio archivo /etc/inet/hosts mediante las herramientas de DHCP. Sin embargo, se debe agregar manualmente el nombre de host al archivo /etc/inet/hosts de otros sistemas de la red. Si el sistema servidor DHCP utiliza /etc/inet/hosts para la resolución de nombres, deberá agregar también manualmente el nombre de host del cliente al sistema.

DNS 

Si el sistema cliente DHCP recibe el nombre de dominio DNS a través de DHCP, el archivo /etc/resolv.conf del sistema cliente se configura automáticamente. El archivo /etc/nsswitch.conf se actualiza también automáticamente para agregar dns a la línea hosts a continuación de otros servicios de nombres en el orden de búsqueda. Para obtener más información acerca de DNS, consulte la System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP).

Configuración de clientes DHCP como clientes NIS+

Puede utilizar el servicio de nombres NIS+ en sistemas Oracle Solaris que sean clientes DHCP. Sin embargo, si su servidor DHCP puede proporcionar direcciones distintas en momentos distintos, este hecho burla parcialmente una de las opciones de mejora de seguridad de NIS+: la creación de credenciales de Estándar de cifrado de datos (DES). Por seguridad, configure el servidor DHCP para que proporcione siempre la misma dirección. Cuando se configura un cliente NIS+ que no utiliza DHCP, se agregan al servidor NIS+ credenciales DES únicas para el cliente. Hay varias formas de crear credenciales, como el uso de la secuencia nisclient o el comando nisaddcred.

La generación de credenciales NIS+ requiere que un cliente tenga un nombre de host estático para crear y almacenar las credenciales. Si quiere utilizar NIS+ y DHCP, deberá crear credenciales idénticas que se utilizarán para todos los nombres de host de los clientes DHCP. De este modo, no importa qué dirección IP y nombre de host asociado reciba un cliente DHCP, porque el cliente podrá utilizar las mismas credenciales DES.

El procedimiento siguiente muestra cómo se crean credenciales idénticas para todos los nombres de host DHCP. El procedimiento es válido únicamente si se conocen los nombres de host que utilizan los clientes DHCP. Por ejemplo, cuando el servidor DHCP genera los nombres de host, se saben los posibles nombres de host que puede recibir un cliente.

ProcedureCómo configurar clientes DHCP de Oracle Solaris como clientes NIS+

Un sistema cliente DHCP que vaya a ser cliente NIS+ deberá utilizar credenciales que pertenezcan a otro sistema cliente NIS+ del dominio NIS+. Este procedimiento genera únicamente credenciales para el sistema, que se aplican solo al superusuario que ha iniciado sesión en el sistema. Otros usuarios que inicien sesión en el sistema cliente DHCP deberán disponer de sus propias credenciales únicas en el servidor NIS+. Estas credenciales se crean mediante el procedimiento descrito en la System Administration Guide: Naming and Directory Services (NIS+).

  1. Para crear las credenciales para un cliente, escriba el siguiente comando en el servidor NIS+:


    # nisgrep nisplus-client-name cred.org_dir > /tmp/file
    

    Este comando escribe la entrada de la tabla cred.org_dir correspondiente al cliente NIS+ en un archivo temporal.

  2. Utilice el comando cat para ver el contenido de este archivo.

    También puede utilizar un editor de texto.

  3. Copie las credenciales para utilizar para los clientes DHCP.

    Deberá copiar la clave pública y la privada, que son largas secuencias de números y letras separadas por dos puntos (:). Las credenciales se deberán pegar en el comando que se emitirá en el siguiente paso.

  4. Agregue credenciales para un cliente DHCP mediante el siguiente comando:


    # nistbladm -a cname=" dhcp-client-name@nisplus-domain" auth_type=DES \
    auth_name="unix.dhcp-client-name@nisplus-domain" \
    public_data=copied-public-key \ 
    private_data=copied-private-key
    

    En clave_pública_copiada, pegue la información de clave pública que ha copiado del archivo temporal. En clave_privada_copiada, pegue la información de clave privada que ha copiado del archivo temporal.

  5. Copie de forma remota los archivos desde el sistema cliente NIS+ al sistema cliente DHCP emitiendo los siguientes comandos en el sistema cliente DHCP:


    # rcp nisplus-client-name:/var/nis/NIS_COLD_START /var/nis
    # rcp nisplus-client-name:/etc/.rootkey /etc
    # rcp nisplus-client-name:/etc/defaultdomain /etc
    

    Si recibe un mensaje de “permission denied” (permiso denegado), es posible que los sistemas no estén conrfigurados para permitir la copia remota. En tal caso, puede copiar los archivos como usuario normal a una ubicación intermedia. Como superusuario, copie los archivos desde la ubicación intermedia a la ubicación aproìada en el sistema cliente DHCP.

  6. Copie el archivo de cambios del servicio de nombres correcto para NIS+ mediante el siguiente comando en el sistema cliente DHCP:


    # cp /etc/nsswitch.nisplus /etc/nsswitch.conf
    
  7. Reinicie el sistema cliente DHCP.

    Ahora, el sistema cliente DHCP ya podrá utilizar los servicios NIS+.


Ejemplo 16–1 Configuración de un sistema cliente DHCP de Oracle Solaris como cliente NIS+

En el ejemplo siguiente se supone que el sistema nisei, es un cliente NIS+ en el dominio NIS+ dev.example.net . También tiene un sistema cliente DHCP, dhow, y quiere que dhow sea un cliente NIS+.


(First log in as superuser on the NIS+ server)
# nisgrep nisei cred.org_dir > /tmp/nisei-cred
# cat /tmp/nisei-cred
nisei.dev.example.net.:DES:unix.nisei@dev.example.net:46199279911a84045b8e0
c76822179138173a20edbd8eab4:90f2e2bb6ffe7e3547346dda624ec4c7f0fe1d5f37e21cff63830
c05bc1c724b
# nistbladm -a cname="dhow@dev.example.net." \
auth_type=DES auth_name="unix.dhow@dev.example.net" \
public_data=46199279911a84045b8e0c76822179138173a20edbd8eab4 \
private_data=90f2e2bb6ffe7e3547346dda624ec4c7f0fe1d5f37e21cff63830\
c05bc1c724b
# rlogin dhow
(Log in as superuser on dhow)
# rcp nisei:/var/nis/NIS_COLD_START /var/nis
# rcp nisei:/etc/.rootkey /etc
# rcp nisei:/etc/defaultdomain /etc
# cp /etc/nsswitch.nisplus /etc/nsswitch.conf
# reboot

El sistema cliente DHCP dhow podrá ahora utilizar los servicios NIS+.



Ejemplo 16–2 Adición de credenciales mediante una secuencia de comandos

Si quiere configurar una gran cantidad de clientes DHCP como clientes NIS+, puede escribir una secuencia. Una secuencia puede agregar rápidamente las entradas a la tabla NIS+ cred.org_dir. A continuación se muestra un ejemplo de secuencia.


#! /usr/bin/ksh  
# 
# Copyright (c) by Sun Microsystems, Inc. All rights reserved. 
# 
# Sample script for cloning a credential. Hosts file is already populated  
# with entries of the form dhcp-[0-9][0-9][0-9]. The entry we're cloning 
# is dhcp-001. 
#  
#  
PUBLIC_DATA=6e72878d8dc095a8b5aea951733d6ea91b4ec59e136bd3b3 
PRIVATE_DATA=3a86729b685e2b2320cd7e26d4f1519ee070a60620a93e48a8682c5031058df4
HOST="dhcp-" 
DOMAIN="mydomain.example.com"  
 
for 
i in 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019
do         
     print - ${HOST}${i}         
     #nistbladm -r [cname="${HOST}${i}.${DOMAIN}."]cred.org_dir         
     nistbladm -a cname="${HOST}${i}.${DOMAIN}." \
         auth_type=DES auth_name="unix.${HOST}${i}@${DOMAIN}" \
         public_data=${PUBLIC_DATA} private_data=${PRIVATE_DTA} cred.org_Dir
done  
 
exit 0

Secuencias de eventos de cliente DHCP

El cliente DHCP de Oracle Solaris se puede configurar para que ejecute un programa o secuencia que lleve a cabo cualquier acción adecuada para el sistema cliente. El programa o secuencia, que se denomina, secuencia de eventos, se ejecuta automáticamente cuando tienen lugar determinados eventos de permiso de DHCP. La secuencia de eventos se puede utilizar para ejeuctar otros comandos, programas o secuencias en respuesta a eventos de permiso específicos. Para utilizar esta función deberá proporcionar su propia secuencia.

dhcpagent utiliza las siguientes palabras clave para referirse a eventos de permisos de DHCP:

Palabra clave de evento

Descripción

BOUND y BOUND6

La interfaz está configurada para DHCP. El cliente recibe el mensaje de confirmación (DHCPv4 ACK) o (DHCPv6 Reply ) del servidor DHCP en el que se concede la solicitud de permiso para una dirección IP. Se llama a la secuencia de eventos inmediatamente después de la configuración satisfactoria de la interfaz.

EXTEND y EXTEND6

El cliente ha realizado correctamente una concesión. Se llama a la secuencia de eventos inmediatamente después de que el cliente recibe el mensaje de confirmación del servidor DHCP por la solicitud de renovación.

EXPIRE y EXPIRE6

El permiso caduca cuando se agota su tiempo. Para DHCPv4, la secuencia de eventos se llama inmediatamente después de que la dirección permitida se elimina de la interfaz y se marca esta como desconectada. Para DHCPv6, la secuencia de eventos se llama justo antes de que las últimas direcciones permitidas se eliminen de la interfaz.

DROP y DROP6

El cliente usa la concesión para eliminar la interfaz desde el control DHCP. Se llama a la secuencia de eventos inmediatamente antes de la interfaz se retire del control de DHCP.

RELEASE y RELEASE6

El cliente deja de usar la dirección IP. Se llama a la secuencia de eventos inmediatamente antes de que el cliente libere la dirección en la interfaz y envíe el paquete DHCPv4 RELEASE o DHCPv6 Release al servidor DHCP.

INFORM e INFORM6

Una interfaz obtiene información de configuración nueva o actualizada de un servidor DHCP a través del mensaje DHCPv4 INFORM o DHCPv6 Information-Request. Estos eventos tienen lugar cuando el cliente DHCP solo obtiene parámetros de configuración del servidor, pero no obtiene un permiso de dirección IP.

LOSS6

Durante la caducidad del permiso, cuando aún quedan uno o más permisos válidos, se llama a la secuencia de eventos justo antes de eliminar las direcciones caducadas. Las direcciones que se van a eliminar se marcan con el indicador IFF_DEPRECATED.

Con cada uno de estos eventos, dhcpagent llama al comando siguiente:


/etc/dhcp/eventhook interface event

donde interfaz es la interfaz que utiliza DHCP y evento es una de las palabras clave de evento descritas anteriormente. Por ejemplo, cuando la interfaz ce0 se configura por primera vez para DHCP, dhcpagent llama a la secuencia de eventos de la siguiente forma:


/etc/dhcp/eventhook ce0 BOUND

Para utilizar la función de secuencia de eventos, haga lo siguiente:

La secuencia de eventos hereda su entorno de programa de dhcpagent, y se ejecuta con privilegios de root. Si es necesario, la secuencia puede utilizar la utilidad dhcpinfo para obtener más información acerca de la interfaz. Para más información consulte la página de comando man dhcpinfo(1).

El daemon dhcpagent espera la salida de la secuencia de eventos para todos los eventos. Si la secuencia de eventos no sale transcurridos 55 segundos, dhcpagent envía una señal SIGTERM al proceso de la secuencia. Si el proceso sigue sin salir pasados otros tres segundos, el daemon envía una señal SIGKILL para cerrar el proceso.

En la página de comando man dhcpagent(1M) se muestra un ejemplo de secuencia de eventos.

El Ejemplo 16–3 muestra la forma de utilizar una secuencia de eventos DHCP para mantener actualizado el contenido del archivo /etc/resolv.conf. Cuando tienen lugar los eventos BOUND y EXTEND, la secuencia sustituye los nombres del servidor de dominios y del servidor de nombres. Cuando tienen lugar los eventos EXPIRE, DROP y RELEASE, la secuencia elimina del archivo los nombres del servidor de dominios y del servidor de nombres.


Nota –

La secuencia de ejemplo supone que DHCP es el origen de autoridad del servidor de dominios y del servidor de nombres. También supone que todas las interfaces bajo control de DHCP devuelven información coherente y actualizada. Es posible que estas hipótesis no reflejen las condiciones reales de su sistema.



Ejemplo 16–3 Secuencia de eventos para actualizar el archivo /etc/resolv.conf

#!/bin/ksh -p

PATH=/bin:/sbin export PATH
umask 0222

# Refresh the domain and name servers on /etc/resolv.conf

insert ()
{
	dnsservers=`dhcpinfo -i $1 DNSserv`
	if [ -n "$dnsservers" ]; then
		# remove the old domain and name servers
		if [ -f /etc/resolv.conf ]; then
			rm -f /tmp/resolv.conf.$$
			sed -e '/^domain/d' -e '/^nameserver/d' \
			    /etc/resolv.conf > /tmp/resolv.conf.$$
		fi

		# add the new domain
		dnsdomain=`dhcpinfo -i $1 DNSdmain`
		if [ -n "$dnsdomain" ]; then
			echo "domain $dnsdomain" >> /tmp/resolv.conf.$$
		fi

		# add new name servers
		for name in $dnsservers; do
			echo nameserver $name >> /tmp/resolv.conf.$$
		done
		mv -f /tmp/resolv.conf.$$ /etc/resolv.conf
	fi
}

# Remove the domain and name servers from /etc/resolv.conf

remove ()
{
	if [ -f /etc/resolv.conf ]; then
		rm -f /tmp/resolv.conf.$$
		sed -e '/^domain/d' -e '/^nameserver/d' \
		    /etc/resolv.conf > /tmp/resolv.conf.$$
		mv -f /tmp/resolv.conf.$$ /etc/resolv.conf
	fi
}

case $2 in
BOUND | EXTEND)
	insert $1
	exit 0
	;;
EXPIRE | DROP | RELEASE)
	remove
	exit 0
	;;
*)
	exit 0
	;;
esac