JavaScript is required to for searching.
Omitir V�nculos de navegaci�n
Salir de la Vista de impresi�n
Guía de administración del sistema: servicios IP
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 IP móvil

27.  IP para móviles (Descripción general)

28.  Administración de IP móvil (tareas)

29.  Archivos y comandos de IP para móviles (referencia)

Parte VI IPMP

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

31.  Administración de IPMP (tareas)

Parte VII Calidad de servicio IP (IPQoS)

32.  Introducción a IPQoS (Descripción general)

33.  Planificación para una red con IPQoS (Tareas)

34.  Creación del archivo de configuración IPQoS (Tareas)

35.  Inicio y mantenimiento de IPQoS (Tareas)

36.  Uso de control de flujo y recopilación de estadísticas (Tareas)

37.  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

Orden
Descripción
Página de comando man
dhtadm
Se emplea para efectuar cambios en las opciones y macros de dhcptab. Este comando resulta útil en secuencias 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.
pntadm
Se utiliza para efectuar cambios en las tablas de red DHCP que asignan ID de cliente a direcciones IP y, de foram opcional, asocian información de configuración con direcciones IP.
dhcpconfig
Se usa para configurar y desconfigurar servidors DHCP y agentes de reenvío 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.
in.dhcpd
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.
dhcpmgr
El Administrador 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.
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.
dhcpinfo
Lo utilizan las secuencias 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 o en la línea de comandos para obtener valores de parámetros específicos.
snoop
Se utiliza para capturar y mostrar el contenido de paquetes que circulan por la red. snoop resulta útil para resolver problemas del servicio DHCP.
dhcpagent
El daemon del cliente DHCP, que implementa el extremo cliente del protocolo DHCP.

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 nsswitch 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."