JavaScript is required to for searching.
Ignorer les liens de navigation
Quitter l'aperu
Administration d'Oracle Solaris : Services IP     Oracle Solaris 10 1/13 Information Library (Français)
search filter icon
search icon

Informations document

Préface

Partie I Introduction à l'administration système : services IP

1.  Suite de protocoles réseau TCP/IP Oracle Solaris (présentation)

Partie II Administration TCP/IP

2.  Planification de votre réseau TCP/IP (tâches)

3.  Présentation d'IPv6

4.  Planification d'un réseau IPv6 (tâches)

5.  Configuration des services réseau TCP/IP et de l'adressage IPv4 (tâches)

6.  Administration d'interfaces réseau (tâches)

7.  Configuration d'un réseau IPv6 (tâches)

8.  Gestion d'un réseau TCP/IP (tâches)

9.  Dépannage des problèmes de réseau (tâches)

10.  Présentation détaillée de TCP/IP et IPv4 (référence)

11.  Présentation détaillée de IPv6 (référence)

Partie III DHCP

12.  A propos de DHCP (présentation)

13.  Planification pour le service DHCP (liste des tâches)

14.  Configuration du service DHCP (tâches)

15.  Administration de DHCP (tâches)

16.  Configuration et administration du client DHCP

17.  Résolution des problèmes DHCP (référence)

18.  Commandes et fichiers DHCP (référence)

Commandes DHCP

Exécution des commandes DHCP au sein de scripts

Fichiers utilisés par le service DHCP

Informations relatives aux options DHCP

Vérification de l'impact éventuel du commutateur sur votre site

Différences entre les fichiers dhcptags et inittab

Conversion d'entrées dhcptags au format inittab

Partie IV IPsec

19.  Architecture IPsec (présentation)

20.  Configuration d'IPsec (tâches)

21.  Architecture IPsec (référence)

22.  Protocole IKE (présentation)

23.  Configuration du protocole IKE (tâches)

24.  Protocole IKE (référence)

25.  IP Filter dans Oracle Solaris (présentation)

26.  IP Filter (tâches)

Partie V IPMP

27.  Présentation d'IPMP

28.  Administration d'IPMP (tâches)

Partie VI Qualité de service IP (IPQoS)

29.  Présentation d'IPQoS (généralités)

30.  Planification d'un réseau IPQoS (tâches)

31.  Création du fichier de configuration IPQoS (tâches)

32.  Démarrage et maintenance d'IPQoS (tâches)

33.  Utilisation de la comptabilisation des flux et de la collecte statistique (tâches)

34.  IPQoS en détails (référence)

Glossaire

Index

Commandes DHCP

Le tableau suivant présente les commandes prévues pour gérer le protocole DHCP sur votre réseau.

Tableau 18-1 Commandes utilisées dans DHCP

Commande
Description
/usr/lib/inet/dhcpd
DHCP ISC uniquement : démon de serveur DHCP ISC. Pour plus d'informations, reportez-vous à la page de manuel dhcpd(8).
/usr/lib/inet/dhcrelay
DHCP ISC uniquement : moyen de relayer les demandes DHCP et BOOTP d'un client sur un réseau sans serveurs DHCP vers des serveurs appartenant à d'autres réseaux. Pour plus d'informations, reportez-vous à la page de manuel dhcrelay(8).
/usr/lib/inet/in.dhcpd
Démon du serveur DHCP. exécuté lors de l'initialisation du système. Il est déconseillé de lancer directement le démon du serveur. Pour démarrer ou arrêter le démon, utilisez le gestionnaire DHCP, la commande svcadm ou la commande dhcpconfig. Faites appel directement au démon uniquement lorsque vous souhaitez exécuter le serveur en mode de débogage en vue de résoudre des problèmes. Pour plus d'informations, reportez-vous à la page de manuel in.dhcpd(1M).
/usr/sadm/admin/bin/dhcpmgr
Gestionnaire DHCP, outil d'interface graphique (GUI) qui permet de configurer et de gérer le service DHCP. Le gestionnaire DHCP est l'outil d'administration DHCP recommandé. Pour plus d'informations, reportez-vous à la page de manuel dhcpmgr(1M).
/usr/sbin/dhcpagent
Démon client DHCP prévu pour implémenter le côté client du protocole DHCP. Pour plus d'informations, reportez-vous à la page de manuel dhcpagent(1M).
/usr/sbin/dhcpconfig
Permet de configurer et d'annuler la configuration des serveurs DHCP et des agents de relais BOOTP. Cette commande sert également à effectuer une conversion vers un autre format de magasin de données et à importer/exporter les données de configuration DHCP. Pour plus d'informations, reportez-vous à la page de manuel dhcpconfig(1M).
/usr/sbin/dhcpinfo
Utilisé par les scripts de démarrage du système sur les systèmes client Oracle Solaris pour obtenir des informations (comme le nom d'hôte) depuis le démon du client DHCP, dhcpagent. Vous pouvez également exécuter la commande dhcpinfo dans des scripts ou dans la ligne de commande afin d'obtenir les valeurs des paramètres qui vous intéressent. Pour plus d'informations, reportez-vous à la page de manuel dhcpinfo(1).
/usr/sbin/dhtadm
Permet d'apporter des modifications aux options et aux macros figurant dans la table dhcptab. Cette commande est particulièrement utile dans les scripts que vous créez pour automatiser les changements de vos informations DHCP. Associez la commande dhtadm à l'option -P et traitez la sortie avec la commande grep de manière à rechercher des valeurs d'option particulières dans la table dhcptab. Pour plus d'informations, reportez-vous à la page de manuel dhtadm(1M).
/usr/sbin/ifconfig
Permet d'attribuer des adresses IP aux interfaces réseau et/ou de configurer les paramètres d'interface réseau lors de l'initialisation du système. Sur un client DHCP, la commande ifconfig permet de démarrer le service DHCP pour obtenir les paramètres nécessaires (y compris l'adresse IP) à la configuration d'une interface réseau. Pour de plus amples informations, reportez-vous à la page de manuel ifconfig(1M)
/usr/sbin/omshell
DHCP ISC uniquement : moyen d'interroger et de modifier l'état du serveur DHCP ISC à l'aide de l'API Object Management (OMAPI). Pour plus d'informations, reportez-vous à la page de manuel omshell(1).
/usr/sbin/pntadm
Permet d'apporter des modifications aux tables du réseau DHCP qui mappent les ID client aux adresses IP et associent facultativement les informations de configuration aux adresses IP. Pour plus d'informations, reportez-vous à la page de manuel pntadm(1M).
/usr/sbin/snoop
Permet de capturer et d'afficher le contenu des paquets transmis sur le réseau. snoop est très pratique pour résoudre les problèmes liés au service DHCP. Pour plus d'informations, reportez-vous à la page de manuel snoop(1M).

Exécution des commandes DHCP au sein de scripts

Les commandes dhcpconfig, dhtadm et pntadm sont optimisées pour les scripts. La commande pntadm est notamment utile pour créer un grand nombre d'entrées d'adresses IP dans une table de réseau DHCP. L'exemple de script suivant utilise la commande pntadm en mode de traitement par lots pour générer des adresses IP.

Exemple 18-1 Script addclient.ksh avec la commande 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."