JavaScript is required to for searching.
Navigationslinks überspringen
Druckansicht beenden
Oracle Systemverwaltungshandbuch: IP-Services     Oracle Solaris 10 1/13 Information Library (Deutsch)
search filter icon
search icon

Dokumentinformationen

Vorwort

Teil I Einführung in die SystemAdministration: 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.  Administration 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 Administration 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 IPMP

27.  Einführung in IPMP (Übersicht)

28.  Administration von IPMP (Aufgaben)

Teil VI IP Quality of Service (IPQoS)

29.  Einführung in IPQoS (Übersicht)

30.  Planen eines IPQoS-konformen Netzwerks (Aufgaben)

31.  Erstellen der IPQoS-Konfigurationsdatei (Aufgaben)

32.  Starten und Verwalten des IPQoS (Aufgaben)

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

34.  IPQoS im Detail (Referenz)

Glossar

Index

DHCP-Befehle

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

Tabelle 18-1 In DHCP verwendete Befehle

Befehl
Beschreibung
/usr/lib/inet/dhcpd
Nur ISC DHCP: Der ISC DHCP-Server-Daemon. Weitere Informationen finden Sie auf der Manpage dhcpd(8).
/usr/lib/inet/dhcrelay
Nur ISC DHCP: Aktiviert eine Methode zum Übertragen von DHCP- und BOOTP-Anforderungen von einem Client in einem Netzwerk ohne DHCP-Server an Server in anderen Netzwerken. Weitere Informationen finden Sie auf der Manpage dhcrelay(8).
/usr/lib/inet/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 Debug-Modus auszuführen, sodass Probleme behoben werden können. Weitere Informationen finden Sie auf der Manpage in.dhcpd(1M).
/usr/sadm/admin/bin/dhcpmgr
DHCP Manager, eine grafische Benutzeroberfläche (GUI) zum Konfigurieren und Verwalten des DHCP-Service. DHCP Manager ist das empfohlene DHCP-Administrationstool. Weitere Informationen finden Sie auf der Manpage dhcpmgr(1M).
/usr/sbin/dhcpagent
Der DHCP-Client-Daemon, der die Clientseite des DHCP-Protokolls implementiert. Weitere Informationen finden Sie auf der Manpage dhcpagent(1M).
/usr/sbin/dhcpconfig
Wird zum Konfigurieren und Dekonfigurieren von DHCP-Servern und BOOTP-Relay-Agents verwendet. Darüber hinaus dient dieser Befehl zum Konvertieren in ein anderes Datenspeicherformat sowie zum Importieren und Exportieren von DHCP-Konfigurationsdateien. Weitere Informationen finden Sie auf der Manpage dhcpconfig(1M).
/usr/sbin/dhcpinfo
Wird von Systemstartskripten auf Oracle Solaris-Clientsystemen zum Abrufen von Informationen (Beispiel: Hostname) vom DHCP-Client-Daemon dhcpagent verwendet. Sie können dhcpinfo auch in Skripten oder an der Befehlszeile verwenden, um bestimmte Parameterwerte zu beziehen. Weitere Informationen finden Sie auf der Manpage dhcpinfo(1).
/usr/sbin/dhtadm
Wird zum Ändern der Optionen und Makros in der Tabelle dhcptab verwendet. 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. Weitere Informationen finden Sie auf der Manpage dhtadm(1M).
/usr/sbin/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). Weitere Informationen finden Sie in der Manpage ifconfig(1M)
/usr/sbin/omshell
Nur ISC DHCP: Bietet eine Möglichkeit, den Status des ISC DHCP-Servers mithilfe von Object Management API (OMAPI) abzufragen und zu ändern. Weitere Informationen finden Sie auf der Manpage omshell(1).
/usr/sbin/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. Weitere Informationen finden Sie auf der Manpage pntadm(1M).
/usr/sbin/snoop
Mit diesem Befehl erfassen Sie den Inhalt von Paketen, die im Netzwerk übergeben werden, und zeigen ihn an. snoop ist nützlich bei der Behebung von Fehlern, die im DHCP-Service auftreten. Weitere Informationen finden Sie auf der Manpage snoop(1M).

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