JavaScript is required to for searching.
Omitir Vínculos de navegación
Salir de la Vista de impresión
Administración de Oracle Solaris: servicios IP     Oracle Solaris 10 1/13 Information Library (Español)
search filter icon
search icon

Información del documento

Prefacio

Parte I Introducción a la administración del sistema: servicios IP

1.  Conjunto de protocolos TCP/IP de Oracle Solaris (descripción general)

Parte II Administración de TCP/IP

2.  Planificación de la red TCP/IP (tareas)

3.  Introducción a IPv6 (descripción general)

4.  Planificación de una red IPv6 (tareas)

5.  Configuración de servicios de red TCP/IP y direcciones IPv4 (tareas)

6.  Administración de interfaces de red (tareas)

7.  Configuración de una red IPv6 (tareas)

8.  Administración de redes TCP/IP (tareas)

9.  Resolución de problemas de red (tareas)

10.  Descripción detallada de TCP/IP e IPv4 (referencia)

11.  IPv6 en profundidad (referencia)

Parte III DHCP

12.  Acerca de DHCP (descripción general)

13.  Planificación del servicio DHCP (tareas)

14.  Configuración del servicio DHCP (tareas)

15.  Administración de DHCP (tareas)

16.  Configuración y administración del cliente DHCP

17.  Solución de problemas de DHCP (referencia)

18.  Comandos y archivos DHCP (referencia)

Comandos DHCP

Ejecución de comandos DHCP en secuencias

Archivos que utiliza el servicio DHCP

Información de opciones DHCP

Cómo determinar si su sitio se ve afectado

Diferencias entre los archivos dhcptags e inittab

Conversión de entradas de dhcptags en entradas de inittab

Parte IV Seguridad IP

19.  Arquitectura de seguridad IP (descripción general)

20.  Configuración de IPsec (tareas)

21.  Arquitectura de seguridad IP (referencia)

22.  Intercambio de claves de Internet (descripción general)

23.  Configuración de IKE (tareas)

24.  Intercambio de claves de Internet (referencia)

25.  Filtro IP en Oracle Solaris (descripción general)

26.  Filtro IP (tareas)

Parte V IPMP

27.  Introducción a IPMP (descripción general)

28.  Administración de IPMP (tareas)

Parte VI Calidad de servicio IP (IPQoS)

29.  Introducción a IPQoS (descripción general)

30.  Planificación para una red con IPQoS (tareas)

31.  Creación del archivo de configuración IPQoS (tareas)

32.  Inicio y mantenimiento de IPQoS (tareas)

33.  Uso de control de flujo y recopilación de estadísticas (tareas)

34.  IPQoS detallado (referencia)

Glosario

Índice

Comandos DHCP

En la tabla siguiente se enumeran los comandos que se pueden utilizar para gestionar DHCP en la red.

Tabla 18-1 Comandos utilizados en DHCP

Comando
Descripción
/usr/lib/inet/dhcpd
Sólo DHCP de ISC: el daemon del servidor DHCP de ISC. Para obtener más información, consulte la página del comando man dhcpd(8).
/usr/lib/inet/dhcrelay
Sólo DHCP de ISC: permite un medio para retransmitir solicitudes DHCP y BOOTP de un cliente de una red sin servidores DHCP a servidores de otras redes. Para obtener más información, consulte la página del comando man dhcrelay(8).
/usr/lib/inet/in.dhcpd
El daemon del servidor DHCP. El daemon se inicia al iniciarse el sistema. No es conveniente iniciar el daemon del servidor directamente. Utilice DHCP Manager, el comando svcadm o dhcpconfig para iniciar y detener el daemon. El daemon solo se debe llamar directamente para ejecutar el servidor en modo de depuración y para resolver problemas. Para obtener más información, consulte la página del comando man in.dhcpd(1M).
/usr/sadm/admin/bin/dhcpmgr
El Gestor de DHCP, una interfaz gráfica de usuario (GUI), se utiliza para la configuración y gestión del servicio DHCP. El Administrador de DHCP es la herramienta de administración recomendada para DHCP. Para obtener más información, consulte la página del comando man dhcpmgr(1M).
/usr/sbin/dhcpagent
El daemon del cliente DHCP, que implementa el lado del cliente del protocolo DHCP. Para obtener más información, consulte la página del comando man dhcpagent(1M).
/usr/sbin/dhcpconfig
Se usa para configurar y anular la configuración de servidores DHCP y agentes de retransmisión BOOTP. También se utiliza para convertir a un formato de almacén de datos distinto y para importar y exportar datos de configuración DHCP. Para obtener más información, consulte la página del comando man dhcpconfig(1M).
/usr/sbin/dhcpinfo
Lo utilizan las secuencias de comando de inicio de los sistemas cliente de Oracle Solaris para obtener información (como el nombre de host) para el daemon del cliente DHCP, dhcpagent. También se puede utilizar dhcpinfo en secuencias de comandos o en la línea de comandos para obtener valores de parámetros específicos. Para obtener más información, consulte la página del comando man dhcpinfo(1).
/usr/sbin/dhtadm
Se utiliza para efectuar cambios en las opciones y macros de la tabla dhcptab. Este comando resulta útil en secuencias de comandos creadas para automatizar los cambios en la información DHCP. Utilice dhtadm con la opción -P y redirija la salida al comando grep para buscar de forma rápida valores específicos de opciones en la tabla dhcptab. Para obtener más información, consulte la página del comando man dhtadm(1M).
/usr/sbin/ifconfig
Se utiliza en el inicio del sistema para asignar direcciones IP a interfaces de red, configurar parámetros de red o ambas funciones. En un cliente DHCP, ifconfig inicia DHCP para obtener los parámetros (incluida la dirección IP) necesarios para configurar una interfaz de red. Si desea más información, consulte la página del comando man ifconfig(1M).
/usr/sbin/omshell
Sólo DHCP de ISC: brinda una manera de consultar y cambiar el estado del servidor DHCP de ISC mediante la API de gestión de objetos (OMAPI). Para obtener más información, consulte la página del comando man omshell(1).
/usr/sbin/pntadm
Se utiliza para efectuar cambios en las tablas de red DHCP que asignan ID de cliente a direcciones IP y, de forma opcional, asocian información de configuración con direcciones IP. Para obtener más información, consulte la página del comando man pntadm(1M).
/usr/sbin/snoop
Se utiliza para capturar y mostrar el contenido de paquetes que circulan por la red. snoop resulta útil para solucionar problemas del servicio DHCP. Para obtener más información, consulte la página del comando man snoop(1M).

Ejecución de comandos DHCP en secuencias

Los comandos dhcpconfig, dhtadm y pntadm están optimizados para su uso en secuencias. En particular, el comando pntadm es útil para crear una gran cantidad de entradas de dirección IP en una tabla de red DHCP. En la siguiente secuencia de ejemplo se utiliza pntadm en modo de proceso por lotes para crear direcciones IP.

Ejemplo 18-1 Secuencia addclient.ksh con el comando pntadm

#! /usr/bin/ksh
#
# This script utilizes the pntadm batch facility to add client entries
# to a DHCP network table. It assumes that the user has the rights to
# run pntadm to add entries to DHCP network tables.

#
# Based on the switch setting, query the netmasks table for a netmask.
# Accepts one argument, a dotted IP address.
#
get_netmask()
{
    MTMP=`getent netmasks ${1} | awk '{ print $2 }'`
    if [ ! -z "${MTMP}" ]
    then
        print - ${MTMP}
    fi
}

#
# Based on the network specification, determine whether or not network is 
# subnetted or supernetted.
# Given a dotted IP network number, convert it to the default class
# network.(used to detect subnetting). Requires one argument, the
# network number. (e.g. 10.0.0.0) Echos the default network and default
# mask for success, null if error.
#
get_default_class()
{
    NN01=${1%%.*}
    tmp=${1#*.}
    NN02=${tmp%%.*}
    tmp=${tmp#*.}
    NN03=${tmp%%.*}
    tmp=${tmp#*.}
    NN04=${tmp%%.*}
    RETNET=""
    RETMASK=""

    typeset -i16 ONE=10#${1%%.*}
    typeset -i10 X=$((${ONE}&16#f0))
    if [ ${X} -eq 224 ]
    then
        # Multicast
        typeset -i10 TMP=$((${ONE}&16#f0))
        RETNET="${TMP}.0.0.0"
        RETMASK="240.0.0.0"
    fi
    typeset -i10 X=$((${ONE}&16#80))
    if [ -z "${RETNET}" -a ${X} -eq 0 ]
    then
        # Class A
        RETNET="${NN01}.0.0.0"
        RETMASK="255.0.0.0"
    fi
    typeset -i10 X=$((${ONE}&16#c0))
    if [ -z "${RETNET}" -a ${X} -eq 128 ]
    then
        # Class B
        RETNET="${NN01}.${NN02}.0.0"
        RETMASK="255.255.0.0"
    fi
    typeset -i10 X=$((${ONE}&16#e0))
    if [ -z "${RETNET}" -a ${X} -eq 192 ]
    then
        # Class C
        RETNET="${NN01}.${NN02}.${NN03}.0"
        RETMASK="255.255.255.0"
    fi
    print - ${RETNET} ${RETMASK}
    unset NNO1 NNO2 NNO3 NNO4 RETNET RETMASK X ONE
}

#
# Given a dotted form of an IP address, convert it to its hex equivalent.
#
convert_dotted_to_hex()
{
    typeset -i10 one=${1%%.*}
    typeset -i16 one=${one}
    typeset -Z2 one=${one}
    tmp=${1#*.}

    typeset -i10 two=${tmp%%.*}
    typeset -i16 two=${two}
    typeset -Z2 two=${two}
    tmp=${tmp#*.}

    typeset -i10 three=${tmp%%.*}
    typeset -i16 three=${three}
    typeset -Z2 three=${three}
    tmp=${tmp#*.}

    typeset -i10 four=${tmp%%.*}
    typeset -i16 four=${four}
    typeset -Z2 four=${four}

     hex=`print - ${one}${two}${three}${four} | sed -e 's/#/0/g'`
     print - 16#${hex}
     unset one two three four tmp
}

#
# Generate an IP address given the network address, mask, increment.
# 
get_addr()
{
    typeset -i16 net=`convert_dotted_to_hex ${1}`
    typeset -i16 mask=`convert_dotted_to_hex ${2}`
    typeset -i16 incr=10#${3}

    # Maximum legal value - invert the mask, add to net.
    typeset -i16 mhosts=~${mask}
    typeset -i16 maxnet=${net}+${mhosts}

    # Add the incr value.
    let net=${net}+${incr}

    if [ $((${net} < ${maxnet})) -eq 1 ]
    then
        typeset -i16 a=${net}\&16#ff000000
        typeset -i10 a="${a}>>24"

        typeset -i16 b=${net}\&16#ff0000
        typeset -i10 b="${b}>>16"

        typeset -i16 c=${net}\&16#ff00
        typeset -i10 c="${c}>>8"

        typeset -i10 d=${net}\&16#ff
        print - "${a}.${b}.${c}.${d}"
    fi
    unset net mask incr mhosts maxnet a b c d
}

# Given a network address and client address, return the index.
client_index()
{
    typeset -i NNO1=${1%%.*}
    tmp=${1#*.}
    typeset -i NNO2=${tmp%%.*}
    tmp=${tmp#*.}
    typeset -i NNO3=${tmp%%.*}
    tmp=${tmp#*.}
    typeset -i NNO4=${tmp%%.*}

    typeset -i16 NNF1
    let NNF1=${NNO1}
    typeset -i16 NNF2
    let NNF2=${NNO2}
    typeset -i16 NNF3
    let NNF3=${NNO3}
    typeset -i16 NNF4
    let NNF4=${NNO4}
    typeset +i16 NNF1
    typeset +i16 NNF2
    typeset +i16 NNF3
    typeset +i16 NNF4
    NNF1=${NNF1#16\#}
    NNF2=${NNF2#16\#}
    NNF3=${NNF3#16\#}
    NNF4=${NNF4#16\#}
    if [ ${#NNF1} -eq 1 ]
    then
        NNF1="0${NNF1}"
    fi
    if [ ${#NNF2} -eq 1 ]
    then
        NNF2="0${NNF2}"
    fi
    if [ ${#NNF3} -eq 1 ]
    then
        NNF3="0${NNF3}"
    fi
    if [ ${#NNF4} -eq 1 ]
    then
        NNF4="0${NNF4}"
    fi
    typeset -i16 NN
    let NN=16#${NNF1}${NNF2}${NNF3}${NNF4}
    unset NNF1 NNF2 NNF3 NNF4

    typeset -i NNO1=${2%%.*}
    tmp=${2#*.}
    typeset -i NNO2=${tmp%%.*}
    tmp=${tmp#*.}
    typeset -i NNO3=${tmp%%.*}
    tmp=${tmp#*.}
    typeset -i NNO4=${tmp%%.*}
    typeset -i16 NNF1
    let NNF1=${NNO1}
    typeset -i16 NNF2
    let NNF2=${NNO2}
    typeset -i16 NNF3
    let NNF3=${NNO3}
    typeset -i16 NNF4
    let NNF4=${NNO4}
    typeset +i16 NNF1
    typeset +i16 NNF2
    typeset +i16 NNF3
    typeset +i16 NNF4
    NNF1=${NNF1#16\#}
    NNF2=${NNF2#16\#}
    NNF3=${NNF3#16\#}
    NNF4=${NNF4#16\#}
    if [ ${#NNF1} -eq 1 ]
    then
        NNF1="0${NNF1}"
    fi
    if [ ${#NNF2} -eq 1 ]
    then
        NNF2="0${NNF2}"
    fi
    if [ ${#NNF3} -eq 1 ]
    then
        NNF3="0${NNF3}"
    fi
    if [ ${#NNF4} -eq 1 ]
    then
        NNF4="0${NNF4}"
    fi
    typeset -i16 NC
    let NC=16#${NNF1}${NNF2}${NNF3}${NNF4}
    typeset -i10 ANS
    let ANS=${NC}-${NN}
    print - $ANS
}

#
# Check usage.
#
if [ "$#" != 3 ]
then
    print "This script is used to add client entries to a DHCP network"
    print "table by utilizing the pntadm batch facilty.\n"
    print "usage: $0 network start_ip entries\n"
    print "where: network is the IP address of the network"
        print "       start_ip is the starting IP address \n"
        print "       entries is the number of the entries to add\n"
    print "example: $0 10.148.174.0 10.148.174.1 254\n"
    return
fi

#
# Use input arguments to set script variables.
#
NETWORK=$1
START_IP=$2
typeset -i STRTNUM=`client_index ${NETWORK} ${START_IP}`
let ENDNUM=${STRTNUM}+$3
let ENTRYNUM=${STRTNUM}
BATCHFILE=/tmp/batchfile.$$
MACRO=`uname -n`

#
# Check if mask in netmasks table. First try
# for network address as given, in case VLSM
# is in use.
#
NETMASK=`get_netmask ${NETWORK}`
if [ -z "${NETMASK}" ]
then
    get_default_class ${NETWORK} | read DEFNET DEFMASK
    # use the default.
    if [ "${DEFNET}" != "${NETWORK}" ]
    then
        # likely subnetted/supernetted.
        print - "\n\n###\tWarning\t###\n"
        print - "Network ${NETWORK} is netmasked, but no entry was found  \n
              in the 'netmasks' table; please update the 'netmasks'  \n
              table in the appropriate nameservice before continuing. \n
              (See /etc/nsswitch.conf.) \n" >&2
        return 1
    else
        # use the default.
        NETMASK="${DEFMASK}"
    fi
fi

#
# Create a batch file.
#
print -n "Creating batch file "
while [ ${ENTRYNUM} -lt ${ENDNUM} ]
do
    if [ $((${ENTRYNUM}-${STRTNUM}))%50 -eq 0 ]
    then
        print -n "."
    fi

    CLIENTIP=`get_addr ${NETWORK} ${NETMASK} ${ENTRYNUM}`
    print "pntadm -A ${CLIENTIP} -m ${MACRO} ${NETWORK}" >> ${BATCHFILE}
    let ENTRYNUM=${ENTRYNUM}+1
done
print " done.\n"

#
# Run pntadm in batch mode and redirect output to a temporary file.
# Progress can be monitored by using the output file.
#
print "Batch processing output redirected to ${BATCHFILE}"
print "Batch processing started."

pntadm -B ${BATCHFILE} -v > /tmp/batch.out 2 >&1

print "Batch processing completed."