JavaScript is required to for searching.
Ignorer les liens de navigation
Quitter l'aperu
Guide d'administration système : services IP
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.  À 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 Mobile IP

27.  Mobile IP (présentation)

28.  Administration de Mobile IP (tâches)

29.  Fichiers et commandes de Mobile IP (références)

Partie VI IPMP

30.  Présentation d'IPMP

31.  Administration d'IPMP (tâches)

Partie VII Qualité de service IP (IPQoS)

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

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

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

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

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

37.  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
Page de manuel
dhtadm
Permet d'apporter des modifications aux options et macros dans le fichier 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.
pntadm
Permet d'apporter des modifications aux tables de réseau DHCP établissant la correspondance entre ID de client et adresses IP et éventuellement d'associer les données de configuration aux adresses IP.
dhcpconfig
Permet de configurer des serveurs DHCP et les agents de relais BOOTP et d'annuler la configuration lorsque cela est nécessaire. 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.
in.dhcpd
Correspond au démon du serveur DHCP exécuté au démarrage du système. Il est déconseillé de lancer directement le démon du serveur. Pour démarrer ou arrêter le démon, vous pouvez au choix utiliser 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.
dhcpmgr
Correspond au gestionnaire DHCP, interface graphique (IG) utilisée spécialement pour configurer et gérer le service DHCP. Le gestionnaire DHCP est l'outil d'administration DHCP recommandé.
ifconfig
Permet d'attribuer des adresses IP aux interfaces réseau et/ou de configurer les paramètres d'interface réseau au démarrage 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.
dhcpinfo
Permet aux scripts de démarrage système des systèmes clients Oracle Solaris d'obtenir un certain nombre d'informations (comme le nom de l'hôte) à partir du démon du client DHCP dhcpagent. Vous pouvez également utiliser la commande dhcpinfo dans des scripts ou depuis la ligne de commande afin d'obtenir les valeurs des paramètres qui vous intéressent.
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.
dhcpagent
Correspond au démon client DHCP prévu pour implémenter le côté client du protocole DHCP.

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