JavaScript is required to for searching.
Navigationslinks �berspringen
Druckansicht beenden
Systemverwaltungshandbuch: IP Services
search filter icon
search icon

Dokument-Informationen

Vorwort

Teil I Einführung in die Systemverwaltung: IP Services

1.  Oracle Solaris TCP/IP-Protokollfamilie (Übersicht)

Teil II Administration von TCP/IP

2.  Planen Ihres TCP/IP-Netzwerks (Vorgehen)

3.  Einführung in IPv6 (Überblick)

4.  Planen eines IPv6-Netzwerks (Aufgaben)

5.  Konfiguration der TCP/IP-Netzwerkservices und IPv4-Adressierung (Aufgaben)

6.  Verwalten von Netzwerkschnittstellen (Aufgaben)

7.  Konfigurieren eines IPv6-Netzwerks (Vorgehen)

8.  Verwaltung eines TCP/IP-Netzwerks (Aufgaben)

9.  Fehlersuche bei Netzwerkproblemen (Aufgaben)

10.  TCP/IP und IPv4 im Detail (Referenz)

11.  IPv6 im Detail (Referenz)

Teil III DHCP

12.  Einführung in DHCP (Übersicht)

13.  Planungen für den DHCP-Service (Aufgaben)

14.  Konfiguration des DHCP-Services (Aufgaben)

15.  Verwalten von DHCP (Aufgaben)

16.  Konfiguration und Verwaltung des DHCP-Clients

17.  DHCP-Fehlerbehebung (Referenz)

18.  DHCP - Befehle und Dateien (Referenz)

DHCP-Befehle

Ausführen von DHCP-Befehlen in Skripten

Vom DHCP-Service verwendete Dateien

DHCP-Optionsinformationen

Feststellen, ob Ihr Standort betroffen ist

Unterschiede zwischen den Dateien dhcptags und inittab

Umwandeln von dhcptags-Einträgen zu inittab-Einträgen

Teil IV IP-Sicherheit

19.  IP Security Architecture (Übersicht)

20.  Konfiguration von IPsec (Aufgaben)

21.  IP Security Architecture (Referenz)

22.  Internet Key Exchange (Übersicht)

23.  Konfiguration von IKE (Aufgaben)

24.  Internet Key Exchange (Referenz)

25.  IP Filter in Oracle Solaris (Übersicht)

26.  IP Filter (Aufgaben)

Teil V Mobile IP

27.  Mobile IP (Übersicht)

28.  Verwalten von Mobile IP (Aufgaben)

29.  Mobile IP-Dateien und Befehle (Referenz)

Teil VI IPMP

30.  Einführung in IPMP (Übersicht)

31.  Verwaltung von IPMP (Aufgaben)

Teil VII IP Quality of Service (IPQoS)

32.  Einführung in IPQoS (Übersicht)

33.  Planen eines IPQoS-konformen Netzwerks (Aufgaben)

34.  Erstellen der IPQoS-Konfigurationsdatei (Aufgaben)

35.  Starten und Verwalten des IPQoS (Aufgaben)

36.  Verwenden von Flow Accounting und Erfassen von Statistiken (Aufgaben)

37.  IPQoS im Detail (Referenz)

Glossar

Index

DHCP-Befehle

In der folgenden Tabelle sind die Befehle aufgelistet, die Sie zur Verwaltung von DHCP in Ihrem Netzwerk verwenden können.

Tabelle 18-1 In DHCP verwendete Befehle

Befehl
Beschreibung
Manpage
dhtadm
Mit diesem Befehl nehmen Sie Änderungen an den Optionen und Makros in der dhcptab-Tabelle vor. Dieser Befehl eignet sich in Skripten, mit denen Sie Änderungen an Ihren DHCP-Informationen automatisieren. Verwenden Sie den Befehl dhtadm mit der Option -P, und leiten Sie die Ausgabe über den Befehl grep, um schnell nach bestimmten Optionswerten in der Tabelle dhcptab suchen zu können.
pntadm
Mit diesem Befehl nehmen Sie Änderungen an den DHCP-Netzwerktabellen vor, die Client-IDs zu IP-Adressen zuordnen und optional Konfigurationsinformationen mit IP-Adressen verbinden.
dhcpconfig
Mit diesem Befehl konfigurieren und dekonfigurieren Sie DHCP-Server und BOOTP-Relay-Agents. Darüber hinaus dient dieser Befehl zum Konvertieren in ein anderes Datenspeicherformat sowie zum Importieren und Exportieren von DHCP-Konfigurationsdateien.
in.dhcpd
Der DHCP-Server-Daemon. Der Daemon startet, wenn das System hochgefahren wird. Der Server-Daemon darf nicht direkt gestartet werden. Zum Starten und Stoppen des Daemon verwenden Sie DHCP Manager, den Befehl svcadm oder dhcpconfig. Der Daemon darf nur direkt aufgerufen werden, um den Server im Debugging-Modus auszuführen, sodass Probleme behoben werden können.
dhcpmgr
Der DHCP Manager ist ein Tool mit einer grafischen Benutzeroberfläche (GUI), mit dem Sie den DHCP-Service konfigurieren und verwalten. DHCP Manager ist das empfohlene DHCP-Verwaltungstool.
ifconfig
Dieser Befehl wird beim Booten des Systems verwendet, um Netzwerkschnittstellen IP-Adressen zuzuordnen, Netzwerkschnittstellenparameter zu konfigurieren oder beides. Auf einem DHCP-Client wird das DHCP mithilfe von ifconfig gestartet, um die zur Konfiguration einer Netzwerkschnittstelle erforderlichen Parameter zu beziehen (einschließlich IP-Adresse).
dhcpinfo
Dieser Befehl wird von System-Startskripten auf Oracle Solaris-Clientsystemen verwendet, um Informationen vom DHCP-Client-Daemon dhcpagent zu beziehen (z. B. den Hostnamen). Sie können dhcpinfo auch in Skripten oder an der Befehlszeile verwenden, um bestimmte Parameterwerte zu beziehen.
snoop
Dient zum Erfassen und Anzeigen der Inhalte von Datenpaketen, die im Netzwerk ausgetauscht werden. snoop eignet sich insbesondere zur Fehlersuche bei Problemen mit dem DHCP-Service.
dhcpagent
Der DHCP-Client-Daemon, der die Client-Seite des DHCP-Protokolls implementiert.

Ausführen von DHCP-Befehlen in Skripten

Die Befehle dhcpconfig, dhtadm und pntadm wurden zur Verwendung in Skripten optimiert. So eignet sich der Befehl pntadm insbesonders zum Erstellen zahlreicher IP-Adresseinträge in einer DHCP-Netzwerktabelle. Im folgenden Beispielskript wird der Befehl pntadm dazu verwendet, IP-Adressen im Batch-Modus zu erzeugen.

Beispiel 18-1 addclient.ksh-Skript mit dem Befehl 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."