Systemverwaltungshandbuch: IP Services

Kapitel 16 Konfiguration und Verwaltung des DHCP-Clients

In diesem Kapitel wird der Dynamic Host Configuration Protocol (DHCP)-Client beschrieben, der zu Oracle Solaris gehört. In diesem Kapitel wird erklärt, wie die DHCPv4- und DHCPv6-Protokolle des Clients arbeiten, und wie Sie das Verhalten des Clients beeinflussen können.

Ein Protokoll, DHCPv4, ist seit langem Teil von Oracle Solaris. Es ermöglicht, dass DHCP-Server Konfigurationsparameter wie IPv4-Netzwerkadressen an IPv4-Knoten übergeben können.

Das andere Protokoll, DHCPv6, ermöglicht es DHCP-Servern, Konfigurationsinformationen wie z. B. IPv6-Adressen an IPv6-Knoten zu übergeben. DHCPv6 ist das statusbehaftete Gegenstück zur „IPv6 Stateless Address Autoconfiguration“ (RFC 2462), kann separat oder gleichzeitig mit dem statusfreien Protokoll verwendet werden, um Konfigurationsparameter zu beziehen.

Dieses Kapitel enthält die folgenden Informationen:

Allgemeine Informationen zum Oracle Solaris DHCP-Client

Der Oracle Solaris DHCP-Client ist der dhcpagent-Daemon, Teil von Oracle Solaris. Wenn Sie Oracle Solaris installieren, werden Sie aufgefordert, DHCP zur Konfiguration der Schnittstellen zu verwenden. Wenn Sie die Frage nach DHCPv4 mit ?Ja“ beantworten, wird das Protokoll während der Oracle Solaris-Installation auf Ihrem System aktiviert. Während der Installation können keine Optionen für DHCPv6 angegeben werden. Eine entsprechende Frage bezieht sich jedoch auf IPv6. Wenn Sie IPv6 aktivieren, wird auch DHCPv6 in einem lokalen Netzwerk aktiviert, dass DHCPv6 unterstützt.

Bei einem Oracle Solaris-Client, der DHCP verwendet, sind keine weiteren Schritte erforderlich. Die Konfiguration des DHCP-Servers legt fest, welche Informationen an DHCP-Clientsysteme übergeben werden, die den DHCP-Service verwenden.

Wenn ein Clientsystem Oracle Solaris ausführt, DHCP aber noch nicht verwendet, können Sie das Clientsystem zur Verwendung von DHCP neukonfigurieren. Entsprechend können Sie ein DHCP-Clientsystem neu konfigurieren, so dass es nicht mehr DHCP und stattdessen die von Ihnen bereitgestellten statischen Netzwerkinformationen verwendet. Weitere Informationen finden Sie unter Aktivieren und Deaktivieren eines Oracle Solaris DHCP-Clients.

DHCPv6-Server

Sun Microsystems stellt keinen DHCPv6-Server für Oracle Solaris zur Verfügung. Die von Drittanbietern angebotenen Server sind mit Suns DHCPv6 kompatibel. Wenn ein DHCPv6-Server im Netzwerk verfügbar ist, wird er von Suns DHCPv6-Client verwendet.

Weitere Informationen zum DHCPv4-Server von Sun finden Sie unter Oracle Solaris DHCP-Server.

Unterschiede zwischen DHCPv4 und DHCPv6

Die beiden wesentlichen Unterschiede zwischen DHCPv4 und DHCPv6 sind:

Das administrative Modell

DHCPv4 erfordert die explizite Konfiguration von Clients. Falls die Adressierung gewünscht wird, müssen Sie das DHCPv4-System dazu einrichten. Dies erfolgt in der Regel während der Erstinstallation oder dynamisch mithilfe von ifconfig(1M)-Optionen.

DHCPv6 erfordert keine explizite Konfiguration des Clients. Stattdessen ist der Einsatz von DHCP eine Eigenschaft des Netzwerks, und das Signal zum Verwenden von DHCP wird in Router-Advertisement-Nachrichten von lokalen Routern gesendet. Der DHCP-Client erstellt und löscht logische Schnittstellen je nach Bedarf.

Bei der Verwaltung ähnelt der DHCPv6 -Mechanismus der bereits bestehenden IPv6-statusfreien (automatischen) Adresskonfiguration. Bei der statusfreien Adresskonfiguration richten Sie ein Flag für den lokalen Router ein, dass jeder Client in einem bestimmten Präfixbereich automatisch selbst eine Adresse erzeugen soll. Dazu verwendet er das bekannt gegebene Präfix plus ein lokales Schnittstellentoken oder eine Zufallszahl. Für DHCPv6 sind die gleichen Präfixe erforderlich, aber die Adressen werden über einen DHCPv6-Server erhalten und verwaltet und nicht „zufällig zugewiesen.”

MAC-Adresse und Client-ID

DHCPv4 verwendet die MAC-Adresse und eine optionale Client-ID, um den Client zu erkennen, so dass ihm eine Adresse zugewiesen werden kann. Jedes Mal, wenn der gleiche Client im Netzwerk eintrifft, erhält er, sofern möglich, die gleiche Adresse.

DHCPv6 verwendet grundsätzlich das gleiche Schema, aber die Client-ID ist obligatorisch und bildet die Grundlage für die Adressstruktur. Die Client-ID in DHCPv6 besteht aus zwei Komponenten: einem DHCP Unique Identifier (DUID) und einem Identity Association Identifier (IAID). Die DUID kennzeichnet das Clientsystem (und nicht nur eine Schnittstelle wie bei DHCPv4), und die IAID kennzeichnet die Schnittstelle auf diesem System.

Wie in RFC 3315 beschrieben, wird eine Identity Association für einen Server und einen Client verwendet, um einen Satz verwandter IPv6-Adressen zu identifizieren, zu gruppieren und zu verwalten. Ein Client muss jeder seiner Netzwerkschnittstellen mindestens eine bestimmte IA zuordnen. Dann verwendet er die zugeordneten IAs, um die Konfigurationsinformationen für diese Schnittstelle von einem Server zu beziehen. Weitere Informationen zu IAs finden Sie im folgenden Abschnitt „Protokolldetails.”

DUID+IAID können zusammen mit DHCPv4 verwendet werden. Sie werden unverwechselbar miteinander verkettet, so dass sie als die Client-ID verwendet werden können. Aus Kompatibilitätsgründen wird dies für reguläre IPv4-Schnittstellen nicht durchgeführt. Für logische Schnittstellen ("hme0:1") kann DUID+IAID jedoch verwendet werden, wenn keine Client-ID konfiguriert wurde.

Im Gegensatz zu IPv4 DHCP, stellt DHCPv6 keine „Clientname“-Option bereit, so dass es keine Möglichkeit gibt, Ihre Systeme allein basierend auf DHCPv6 zu benennen. Wenn Sie stattdessen den DNS-Namen wissen müssen, der zu einer von DHCPv6 bereitgestellten Adresse gehört, verwenden Sie die DNS Reverse-Resolution (Adresse-zu-Name-Abfrage über die Funktion getaddrinfo(3SOCKET)), um die entsprechenden Namensinformationen zu suchen. Der Nachteil dabei: wenn Sie nur DHCPv6 verwenden und möchten, dass ein Knoten einen bestimmten Namen hat, müssen Sie /etc/nodename auf Ihrem System einrichten.

Protokolldetails

Bei DHCPv4 stellt der DHCP-Server die Teilnetzmaske bereit, die mit der zugewiesenen Adresse verwendet wird. Bei DHCPv6 wird die Teilnetzmaske (auch als „Präfixlänge“ bezeichnet) durch Router-Advertisement-Nachrichten zugewiesen und nicht vom DHCP-Server gesteuert.

DHCPv4 verfügt über eine Hostname-Option, über die ein systemweit geltender Knotenname eingerichtet werden kann. DHCPv6 bietet eine solche Option nicht.

Um eine Client-ID für DHCPv6 zu konfigurieren, müssen Sie eine DUID angeben. Gestatten Sie dem System nicht, automatisch eine DUID auszuwählen. Sie können dies global für den Daemon oder für jede Schnittstelle einzeln ausführen. Zum Einrichten der globalen DUID verwenden Sie die folgende Syntax (beachten Sie den einleitenden Punkt):

.v6.CLIENT_ID=<DUID>

Mit dem folgenden Befehl sorgen Sie dafür, dass eine bestimmte Schnittstelle eine angegebene DUID verwendet (und das System gegenüber einem DHCPv6-Server als mehrere unabhängige Clients auftritt):

hme0.v6.CLIENT ID=<DUID>

Jede Identity Association (IA) enthält einen Adresstyp. Beispielsweise nimmt eine Identity Association für temporäre Adressen (IA_TA) temporäre Adressen auf, während eine Identity Association für nicht-temporäre Adressen (IA_NA) zugewiesene permanente Adressen aufnimmt. Die in diesem Handbuch beschriebene Version von DHCPv6 bietet nur IA_NA-Zuweisungen.

Oracle Solaris weist jeder Schnittstelle auf Anforderung genau eine IAID zu, die in einer Datei im Root-Dateisystem gespeichert wird, so dass sie über die Lebensdauer des Computers konstant bleibt.

Logische Schnittstellen

Bei dem DHCPv4-Client ist jede logische Schnittstelle unabhängig und eine administrative Einheit. Zusätzlich zur nullten logischen Schnittstelle (die standardmäßig die MAC-Adresse der Schnittstelle als Bezeichner verwendet), kann der Benutzer bestimmte logische Schnittstellen zur Ausführung von DHCP konfigurieren, indem er eine CLIENT_ID in der Konfigurationsdatei dhcpagent angibt. Beispiel:

hme0:1.CLIENT_ID=orangutan

DHCPv6 arbeitet anders. Die nullte logische Schnittstelle auf einer IPv6-Schnittstelle ist im Gegensatz zu IPv4 immer Link-lokal. Link-lokal wird verwendet, um einem Gerät in einem IP-Netzwerk automatisch eine IP-Adresse zuzuweisen, wenn keine andere Zuweisungsmethode (z. B. ein DHCP-Server) verfügbar ist. Die nullte logische Schnittstelle kann nicht unter die Verwaltung von DHCP gestellt werden, daher weist sie, obwohl DHCPv6 auf der nullten logischen Schnittstelle ausgeführt wird (auch als „physikalische“ Schnittstelle bezeichnet), nur logischen Schnittstellen, die nicht null sind, Adressen zu.

Als Antwort auf eine DHCPv6-Client-Anforderung gibt der DHCPv6-Server eine Adressenliste an den zu konfigurierenden Client zurück.

Optionsaushandlung

In DHCPv6 gibt es eine Option „Optionsanforderungen“, die dem Server einen Hinweis bietet, was der Client sehen möchte. Wenn der Server alle möglichen Optionen an den Client sendet, könnten so viele Informationen gesendet werden, dass sie auf dem Weg zum Client eventuell abgeworfen werden. Der Server kann basierend auf diesem Hinweis Optionen auswählen, die in die Antwort aufgenommen werden. Alternativ kann der Server den Hinweis ignorieren und andere Objekte auswählen, die an den Client gesendet werden. Unter Oracle Solaris würden die bevorzugten Optionen z. B. die Oracle Solaris DNS-Adressdomäne oder die NIS-Adressdomäne enthalten, den NetBios-Server jedoch nicht.

Der gleiche Hinweistyp wird auch für DHCPv4 angeboten, jedoch ohne die spezielle Option zur Optionsanforderung. Stattdessen verwendet DHCPv4 PARAM_REQUEST_LIST in /etc/default/dhcpagent.

Konfigurationssyntax

Sie konfigurieren den DHCPv6-Client auf nahezu die gleiche Weise wie einen bestehenden DHCPv4-Client: mithilfe von /etc/default/dhcpagent.

Die Syntax wird mit dem Kennzeichen „v6” zwischen dem Schnittstellennamen (falls vorhanden) und dem zu konfigurierenden Parameter erweitert. Die globale Liste zur IPv4-Optionsanforderung sieht wie folgt aus:

PARAM_REQUEST_LIST=1,3,6,12,15,28,43

Eine einzelne Schnittstelle kann so konfiguriert werden, dass die Hostname-Option weggelassen wird:

hme0.PARAM_REQUEST_LIST=1,3,6,15,28,43

Zum Einrichten einer globalen Anforderungsliste für DHCPv6 verwenden Sie den folgenden Befehl (beachten Sie den einleitenden Punkt):

.v6.PARAM_REQUEST_LIST=23,24

Oder richten Sie, wie in dem folgenden Beispiel, eine einzelne Schnittstelle ein:

hme0.v6.PARAM_REQUEST_LIST=21,22,23,24

Zur Referenz eine tatsächliche /etc/default/dhcpagent-Datei für die DHCPv6-Konfiguration:


# The default DHCPv6 parameter request list has preference (7), unicast (12),
# DNS addresses (23), DNS search list (24), NIS addresses (27), and
# NIS domain (29).  This may be changed by altering the following parameter- 
# value pair.  The numbers correspond to the values defined in RFC 3315 and 
# the IANA dhcpv6-parameters registry. 
.v6.PARAM_REQUEST_LIST=7,12,23,24,27,29

Start eines DHCP-Clients

In den meisten Fällen müssen Sie beim Start eines DHCPv6-Clients nichts ausführen. Der in.ndpd-Daemon startet DHCPv6 gegebenenfalls automatisch. Es kann sein, dass Sie für /etc/hostname6.$IFNAME eine Touch-Operation durchführen müssen, um eine Schnittstelle zu konfigurieren, die zur Boot-Zeit für IPv6 geplumbt werden soll. Dies übernimmt jedoch das Installationsprogramm für Sie, wenn Sie IPv6 während der Installation auf Ihrem System aktiviert haben.

Bei DHCPv4 müssen Sie den Start des Clients jedoch anfordern, falls dies nicht während der Oracle Solaris-Installation erfolgt ist. Weitere Informationen finden Sie unter So aktivieren Sie den Oracle Solaris DHCP-Client.

Der dhcpagent-Daemon bezieht Konfigurationsinformationen, die von anderen, am Boot-Vorgang des Systems beteiligten Prozessen benötigt werden. Aus diesem Grund startet das System-Startskript den dhcpagent-Daemon bereits sehr früh im Boot-Vorgang und wartet, bis die Netzwerkkonfigurationsinformationen vom DHCP-Server eintreffen.

Obwohl DHCPv6 standardmäßig ausgeführt wird, können Sie wählen, DHCPv6 nicht auszuführen. Wenn DHCPv6 bereits ausgeführt wird, können Sie es mit dem Befehl ifconfig stoppen. Sie können DHCPv6 auch deaktivieren, so dass es bei einem erneuten Booten nicht mehr ausgeführt wird. Dazu nehmen Sie Änderungen an der/etc/inet/ndpd.conf-Datei vor.

Mit dem folgenden Code fahren Sie beispielsweise DHCPv6 auf einer Schnittstelle namens „hme0“ herunter.”


ex# echo ifdefault StatefulAddrConf false >> /etc/inet/ndpd.conf  
ex# pkill -HUP -x in.ndpd   
ex# ifconfig hme0 inet6 dhcp release

Das Vorhandensein der Datei /etc/dhcp.Schnittstelle (z. B. /etc/dhcp.ce0 auf einem Sun Fire 880-System) weist die Startskripten an, DHCPv4 auf einer bestimmten Schnittstelle zu verwenden. Sobald eine dhcp.Schnittstelle-Datei gefunden wurde, startet das Startskript den dhcpagent-Daemon.

Nach dem Start wartet dhcpagent, bis er Anweisungen zur Konfiguration einer Netzwerkschnittstelle empfängt. Die Startskripten geben den Befehl ifconfig Schnittstelle dhcp start aus, der dhcpagent anweist, DHCPv4 gemäß der Beschreibung unter Arbeitsweise des DHCP-Protokolls zu starten. Eventuell in der dhcp.Schnittstelle-Datei enthaltene Befehle werden an die dhcp start-Option von ifconfig angehängt. Weitere Informationen zu Optionen für den Befehl ifconfig Schnittstelle dhcp finden Sie in der Manpage ifconfig(1M).

DHCPv6-Kommunikation

Im Gegensatz zu DHCPv4, das durch manuelle Konfiguration aufgerufen wird, erfolgt der Aufruf von DHCPv6 durch Router Advertisement-Nachrichten (RAs). Abhängig von der Konfiguration des Routers ruft das System DHCPv6 automatisch auf der Schnittstelle auf, auf der die Router Advertisement-Nachricht empfangen wurde und verwendet DHCP, um eine Adresse und andere Parameter zu beziehen. Eventuell fordert das System auch nur andere Daten als eine Adresse (z. B. DNS-Server) mit DHCPv6 an.

Der in.ndpd-Daemon empfängt die Router Advertisement-Nachricht. Dies erfolgt automatisch auf allen für IPv6 beim System geplumbten Schnittstellen. Wenn in.ndpd eine RA sieht, in der angegeben ist, dass DHCPv6 ausgeführt werden soll, wird es aufgerufen.

Um zu verhindern, dass in.ndpd DHCPv6 startet, können Sie Änderungen an der /etc/inet/ndpd.conf-Datei vornehmen.

Sie können DHCPv6 auch nach dem Starten einer der folgenden Versionen von ifconfig stoppen:

ifconfig <Schnittstelle> inet6 dhcp drop

oder:

ifconfig <Schnittstelle> inet6 dhcp release

So verwalten die DHCP-Client-Protokolle Netzwerkkonfigurationsinformationen

DHCPv4- und DHCPv6-Client-Protokolle verwalten die Netzwerkkonfigurationsinformationen auf unterschiedliche Art. Der wesentliche Unterschied besteht darin, dass bei DHCPv4 die Aushandlung für das Leasing einer einzelnen Adresse und einiger zugehöriger Optionen erfolgt. Bei DHCPv6 erfolgt die Aushandlung für einen Adressstapel und einen Optionsstapel.

Hintergrundinformationen zur Interaktion zwischen DHCPv4-Client und Server finden Sie in Kapitel 12Einführung in Oracle Solaris DHCP.

So verwaltet der DHCPv4-Client Netzwerkkonfigurationsinformationen

Nachdem das Informationspaket von einem DHCP-Server bezogen wurde, konfiguriert der dhcpagent-Daemon die Netzwerkschnittstelle und schaltet sie online. Der Daemon steuert die Schnittstelle über die Leasing-Zeit der IP-Adresse und verwaltet die Konfigurationsdaten in einer internen Tabelle. Die System-Startskripten verwenden den Befehl dhcpinfo, um die Werte von Konfigurationsoptionen aus der internen Tabelle zu extrahieren. Die Werte werden dann zur Konfiguration des Systems verwendet und ermöglichen dessen Kommunikation im Netzwerk.

Der dhcpagent-Daemon wartet passiv, bis ein bestimmter Zeitraum verstrichen ist, in der Regel die Hälfte der Leasing-Zeit. Dann fordert der Daemon eine Verlängerung der Leasing-Zeit von einem DHCP-Server an. Wenn das System dhcpagent benachrichtigt, dass die Schnittstelle heruntergefahren oder die IP-Adresse geändert wurde, verwaltet der Daemon die Schnittstelle nicht weiter, bis er erneut vom ifconfig-Befehl dazu angewiesen wird. Stellt der dhcpagent-Daemon fest, dass die Schnittstelle hochgefahren ist und die IP-Adresse nicht geändert wurde, sendet der Daemon eine Anforderung zur Erneuerung des Leasings an den Server. Kann das Leasing nicht erneuert werden, schaltet der dhcpagent-Daemon die Schnittstelle am Ende der Leasing-Zeit offline.

Jedes Mal, wenn dhcpagent eine Aktion im Zusammenhang mit dem Leasing durchführt, sucht der Daemon nach einer ausführbaren Datei namens /etc/dhcp/eventhook. Wurde eine ausführbare Dateien mit diesem Namen gefunden, wird sie von dhcpagent aufgerufen. Weitere Informationen zur Verwendung der ausführbaren Datei für ein Ereignis finden Sie unter DHCP-Client Ereignisskripten.

So verwaltet der DHCPv6-Client Netzwerkkonfigurationsinformationen

Die DHCPv6-Kommunikation zwischen Client und Server beginnt damit, dass der Client eine Solicitation-Nachricht sendet, um Server zu lokalisieren. Als Antwort senden alle Server, die für den DHCP-Service zur Verfügung stehen, eine Advertisement-Nachricht. Die Servernachricht enthält mehrere IA_NA (Identity Association Non-Temporary Address)-Datensätze plus weitere Optionen (z. B. DNS-Serveradressen), die der Server bereitstellen kann.

Ein Client kann bestimmte Adressen anfordern (auch mehrere Adresse), indem er seine eigenen IA_NA/IAADDR-Datensätze in der Request-Nachricht einrichtet. In der Regel fordert ein Client bestimmte Adressen an, wenn er alte Adressen aufgezeichnet hat und möchte, dass ihm der Server die gleichen Adressen zur Verfügung stellt (sofern dies möglich ist). Unabhängig davon, was der Client ausführt (auch wenn er keine Adressen anfordert) kann der Server dem Client eine beliebige Anzahl an Adressen für eine einzelne DHCPv6-Transaktion bereitstellen.

Im Folgenden ist ein möglicher Nachrichtendialog zwischen den Clients und Servern aufgeführt.

Wenn der Präferenzwert in der Advertisement-Nachricht 255 beträgt, wählt der DHCPv6-Client diesen Server sofort aus. Wenn der Server mit der höchsten Präferenz nicht reagiert oder keine Antwort auf die Request-Nachricht sendet, sucht der Client weiter nach Servern mit geringerer Präferenz, bis keine Advertisement-Nachrichten mehr vorliegen. Dann beginnt der Client erneut, Solicitation-Nachrichten zu senden.

Der ausgewählte Server sendet eine Reply-Nachricht mit zugewiesenen Adressen und Konfigurationsparametern als Antwort auf eine Solicitation- oder Request-Nachricht.

Herunterfahren eines DHCP-Clients

Beim Herunterfahren sendet der Client eine Release-Nachricht an den Server, der dem Client die Adressen zugewiesen hat, um ihn zu benachrichtigen, dass er eine oder mehrere der zugewiesenen Adresse nicht mehr benötigt. Wenn das DHCPv4-Clientsystem ordnungsgemäß heruntergefahren wird, schreibt dhcpagent die aktuellen Konfigurationsinformationen in die Datei /etc/dhcp/Schnittstelle.dhc, oder (bei DHCPv6) in die Datei /etc/dhcp/Schnittstelle .dh6. In der Standardeinstellung wird das Leasing gespeichert und nicht freigegeben, so dass der DHCP-Server nicht weiß, ob die IP-Adresse noch aktiv verwendet wird. Dadurch ist der Client in der Lage, die Adresse beim nächsten Booten leicht wieder zu beziehen. Diese standardmäßige Aktion entspricht dem Befehl ifconfig <Schnittstelle> dhcp drop.

Wenn das Leasing in dieser Datei beim erneuten Booten des Systems noch immer gültig ist, sendet dhcpagent eine abgekürzte Anforderung zur Verwendung der gleichen IP-Adresse und der gleichen Netzwerkkonfigurationsinformationen. Bei DHCPv4 ist dies die Request-Nachricht. Bei DHCPv6 ist dies die Confirm-Nachricht.

Wenn der DHCP-Server diese Anforderung zulässt, kann dhcpagent die Informationen verwenden, die beim Herunterfahren des Systems gespeichert wurden. Wenn der Server dem Client nicht gestattet, die Informationen zu verwenden, initiiert dhcpagent die unter Arbeitsweise des DHCP-Protokolls beschriebene DHCP-Protokollfolge. Dadurch bezieht der Client neue Netzwerkkonfigurationsinformationen.

Aktivieren und Deaktivieren eines Oracle Solaris DHCP-Clients

Um den DHCP-Client auf einem System zu aktivieren, auf dem Oracle Solaris ausgeführt, DHCP noch nicht verwendet wird, müssen Sie das System zunächst dekonfigurieren. Wenn das System bootet, geben Sie einige Befehle ein, um das System einzurichten und den DHCP-Client zu aktivieren.


Hinweis –

Bei vielen Installationen ist es gebräuchlich, wichtige Teile der Infrastruktur mit statischen IP-Adressen anstelle mit DHCP zu konfigurieren. Eine Aufstellung, welche Geräte in Ihrem Netzwerk Clients sein sollen und welche nicht (z. B. Router und bestimmte Server) sprengt jedoch den Umfang dieses Handbuchs.


ProcedureSo aktivieren Sie den Oracle Solaris DHCP-Client

Dieses Verfahren ist nur dann notwendig, wenn DHCPv4 nicht während der Installation von Oracle Solaris aktiviert wurde. Für DHCPv6 ist dieses Verfahren nie notwendig.

  1. Melden Sie sich als Superuser beim Clientsystem an.

  2. Wenn das System eine Vorkonfiguration anstelle einer in der aktiven Konfiguration verwendet, nehmen Sie die erforderlichen Änderungen an der Datei sysidcfg vor. Fügen Sie den Unterschlüssel dhcp zum Schlüsselwort network_interface in der Datei sysidcfg hinzu.

    Beispiel: network_interface=hme0 {dhcp}. Weitere Informationen finden Sie in der Manpage sysidcfg(4).

  3. Dekonfigurieren Sie das System und fahren Sie es herunter.


    # sys-unconfig
    

    Weitere Informationen zu den Konfigurationsinformationen, die mit diesem Befehl gelöscht werden, finden Sie in der Manpage sys-unconfig(1M).

  4. Booten Sie das System neu, nachdem es vollständig heruntergefahren ist.

    Wenn das System vorkonfiguriert ist, konfiguriert der Unterschlüssel dhcp in der sysidcfg-Datei das System so, dass es den DHCP-Client verwendet.

    Ist das System nicht vorkonfiguriert, werden Sie von den sysidtool-Programmen beim Booten des Systems zur Eingabe der Konfigurationsinformationen aufgefordert. Weitere Informationen finden Sie in der Manpage sysidtool(1M).

  5. Geben Sie „Ja“ an, wenn Sie bestätigen sollen, ob DHCP zur Konfiguration der Netzwerkschnittstellen verwendet werden soll.

ProcedureSo deaktivieren Sie einen Oracle Solaris DHCP-Client

  1. Melden Sie sich als Superuser beim Clientsystem an.

  2. Wenn Sie eine sysidcfg-Datei zur Vorkonfiguration des Systems verwenden, löschen Sie den Unterschlüssel dhcp vom Schlüsselwort network_interface.

  3. Dekonfigurieren Sie das System und fahren Sie es herunter.


    # sys-unconfig
    

    Weitere Informationen zu den Konfigurationsinformationen, die mit diesem Befehl gelöscht werden, finden Sie in der Manpage sys-unconfig(1M).

  4. Booten Sie das System neu, nachdem es vollständig heruntergefahren ist.

    Wenn das System vorkonfiguriert ist, werden Sie nicht zur Eingabe der Konfigurationsinformationen aufgefordert, und der DHCP-Client wird nicht konfiguriert.

    Ist das System nicht vorkonfiguriert, werden Sie von den sysidtool-Programmen beim Booten des Systems zur Eingabe der Konfigurationsinformationen aufgefordert. Weitere Informationen finden Sie in der Manpage sysidtool(1M).

  5. Geben Sie „Nein“ an, wenn Sie bestätigen sollen, ob DHCP zur Konfiguration der Netzwerkschnittstellen verwendet werden soll.

Verwaltung eines DHCP-Client

Die Software eines Oracle Solaris DHCP-Client erfordert bei normalem Systembetrieb keine Administration. Der dhcpagent-Daemon wird beim Booten des Systems automatisch gestartet, handelt Leasings neu aus und stoppt, wenn das System heruntergefahren wird. Sie sollten den dhcpagent-Daemon weder manuell starten noch stoppen. Stattdessen können Sie als Superuser auf dem Clientsystem den Befehl ifconfig einsetzen, um die Verwaltung der Netzwerkschnittstelle durch den dhcpagent-Daemon zu beeinflussen.

ifconfig-Befehlsoptionen für den DHCP-Client

In diesem Abschnitt sind die Befehlsoptionen zusammengefasst, die in der Manpage ifconfig(1M) ausführlich beschrieben sind. Der einzige Unterschied zwischen der DHCPv4- und der DHCPv6-Version dieser Befehle liegt in dem Schlüsselwort „inet6“. Nehmen Sie das Schlüsselwort „inet6“ für DHCPv6 auf, aber lassen Sie es beim Ausführen von DHCPv4 weg.

Mit dem ifconfig-Befehl können Sie Folgendes ausführen:

Einrichten der Konfigurationsparameter eines DHCP-Client

Die /etc/default/dhcpagent-Datei auf dem Clientsystem enthält einstellbare Parameter für den dhcpagent-Daemon. Mit einem Texteditor können Sie verschiedene Parameter ändern, die sich auf den Clientbetrieb auswirken. Die Datei /etc/default/dhcpagent ist ausführlich dokumentiert. Weitere Informationen finden Sie sowohl in der Datei als auch in der Manpage dhcpagent(1M).

Die Datei /etc/dhcp.Schnittstelle ist ein weiterer Speicherort, an dem Parameter eingestellt werden, die sich auf den DHCP-Client auswirken. In dieser Datei eingestellten Parameter werden von den System-Startskripten mit dem Befehl ifconfig verwendet. Dies betrifft jedoch nur DHCPv4. Es gibt kein DHCPv6-Äquivalent.

Standardmäßig ist der DHCP-Client wie folgt konfiguriert:

Bei DHCPv4

Bei DHCPv4 und DHCPv6

DHCP-Clientsysteme mit mehreren Netzwerkschnittstellen

Der DHCP-Client kann mehrere Schnittstellen eines Systems gleichzeitig verwalten. Bei diesen Schnittstellen kann es sich um physikalische oder um logische Schnittstellen handeln. Jede Schnittstelle verfügt über eine eigene IP-Adresse und eine individuelle Leasing-Zeit. Wenn mehrere Netzwerkschnittstellen für DHCP konfiguriert sind, gibt der Client individuelle Anforderungen zur Konfiguration dieser Schnittstellen aus. Der Client pflegt für jede Schnittstelle einen individuellen Satz an Netzwerkkonfigurationsparametern. Einige Parameter gelten global, obwohl sie separat gespeichert werden. Diese globalen Parameter gelten für das gesamte System und nicht nur für eine bestimmte Netzwerkschnittstelle.

Beispiele für globale Parameter sind Hostname, NIS-Domänenname und Zeitzone. Globale Parameter weisen in der Regel für jede Schnittstelle einen anderen Wert auf. Es kann jedoch für jeden globalen Parameter, der einem System zugeordnet ist, nur ein Wert verwendet werden. Um sicherzustellen, dass es nur eine Antwort auf eine Anfrage nach einem globalen Parameter gibt, werden nur die Parameter für die primäre Netzwerkschnittstelle verwendet. Sie können das Wort primary in die /etc/dhcp.Schnittstelle-Datei für die Schnittstelle einfügen, die als primäre Schnittstelle behandelt werden soll. Wird das Schlüsselwort primary nicht verwendet, wird die erste Schnittstelle in der alphabetischen Reihenfolge als primäre Schnittstelle betrachtet.

Der DHCP-Client verwaltet die Leasing-Zeiten für logische und physikalische Schnittstellen auf die gleiche Weise, mit Ausnahme der folgenden Einschränkung für logische Schnittstellen:

Hostnamen für DHCPv4-Clients

Standardmäßig gibt der Oracle Solaris DHCPv4-Client seinen eigenen Hostnamen nicht an, da er erwartet, dass der DHCP-Server den Hostnamen bereitstellt. Der Oracle Solaris DHCPv4-Server ist standardmäßig zur Bereitstellung von Hostnamen für DHCPv4-Clients konfiguriert. Wenn Sie den Oracle Solaris DHCPv4-Client und -Server zusammen verwenden, arbeiten diese Standardeinstellungen sehr gut. Wenn Sie jedoch den Oracle Solaris DHCPv4-Client und einen DHCP-Server eines Drittanbieters verwenden, empfängt der Client eventuell keinen Hostnamen vom Server. Empfängt der Oracle Solaris DHCP-Client keinen Hostnamen über DHCP, sucht das Clientsystem in der /etc/nodename-Datei nach einem Namen, den es als Hostnamen verwenden kann. Ist diese Datei leer, wird der Hostnamen auf unknown gesetzt.

Stellt der DHCP-Server in der DHCP Hostname-Option einen Namen bereit, verwendet der Client diesen Hostnamen auch dann, wenn ein anderer Wert in der Datei /etc/nodename gespeichert ist. Wenn der Client einen bestimmten Hostnamen verwenden soll, können Sie den Client so konfigurieren, dass er diesen Namen anfordert. Lesen Sie dazu die folgenden Anweisungen.


Hinweis –

Die folgenden Anweisungen können nicht mit allen DHCP-Servern verwendet werden. In diesem Verfahren konfigurieren Sie den Client so, dass er einen bestimmten Hostnamen an den DHCP-Server sendet und diesen in der Antwort erwartet.

Jedoch muss der DHCP-Server dieser Anforderung nicht entsprechen, und einige Server entsprechen ihr auch nicht. Sie geben einfach einen anderen Namen zurück.


ProcedureSo konfigurieren Sie einen Oracle Solaris DHCPv4-Client zur Anforderung eines bestimmten Hostnamens

  1. Melden Sie sich als Superuser bei einem Clientsystem an und nehmen Sie die folgenden Änderungen an der /etc/default/dhcpagent-Datei vor.

  2. Suchen Sie das Schlüsselwort REQUEST_HOSTNAME in der Datei /etc/default/dhcpagent und ändern Sie es wie folgt:


    REQUEST_HOSTNAME=yes

    Falls sich ein Kommentarzeichen (#) vor REQUEST_HOSTNAME befindet, löschen Sie es. Sollte das Schlüsselwort REQUEST_HOSTNAME nicht vorhanden sein, fügen Sie es ein.

  3. Fügen Sie zur Datei /etc/hostname.Schnittstelle auf dem Client-System die folgende Zeile hinzu:

    inet Hostname
    

    Hostname ist der Name, den der Client verwenden soll.

  4. Geben Sie die folgenden Befehle ein, damit der Client nach dem erneuten Booten eine vollständige DHCP-Aushandlung durchführt:


    # ifconfig interface dhcp release
    # reboot
    

    Die auf dem Client zwischengespeicherten DHCP-Daten werden gelöscht. Der Client startet das Protokoll zur Anforderung neuer Konfigurationsinformationen neu. Hierzu gehört auch ein neuer Hostname. Zunächst stellt der DHCP-Server sicher, dass der Hostname noch von keinem anderen System im Netzwerk verwendet wird. Dann weist er dem Client den Hostnamen zu. Der DHCP-Server kann die Namen-Services mit dem Hostnamen des Clients aktualisieren, wenn er dazu konfiguriert wurde.

    Soll der Hostname zu einem späteren Zeitpunkt geändert werden, wiederholen Sie Schritt 3 und Schritt 4.

DHCP -Clientsysteme und Namen-Services

Oracle Solaris-Systeme unterstützen die folgenden Namen-Services: DNS, NIS, NIS+ und einen lokalen Datenspeicher (/etc/inet/hosts). Jeder Namen-Service erfordert bestimmte Konfigurationsschritte. Die Switch-Konfigurationsdatei des Namen-Service (siehe nsswitch.conf(4)) muss entsprechend des zu verwendenden Namen-Services eingerichtet werden.

Bevor ein DHCP-Clientsystem einen Namen-Service verwenden kann, müssen Sie das System als einen Client des Namen-Service konfigurieren. In der Standardeinstellung, und sofern nicht anderweitig während der Systeminstallation konfiguriert, werden nur lokale Dateien verwendet.

In der folgenden Tabelle sind die Punkte zusammengefasst, die bei den verschiedenen Namen-Services und DHCP beachtet werden müssen. Die Tabelle enthält Links zu der Dokumentation, die Sie beim Einrichten von Clients für den jeweiligen Namen-Service unterstützt.

Tabelle 16–1 Client-Setup-Informationen zum Namen-Service für DHCP-Clientsysteme

Namen-Service  

Client-Setup-Informationen 

NIS 

Wenn Sie Oracle Solaris DHCP verwenden, um Informationen zu einer Oracle Solaris-Netzwerkinstallation zu senden, können Sie ein Konfigurationsmakro erstellen, in dem die Optionen NISservs und NISdmain enthalten sind. Diese Optionen übergeben die IP-Adressen der NIS-Server und den NIS-Domänennamen an den Client. Der Client wird dann automatisch ein NIS-Client.

Wenn ein DHCP-Clientsystem Oracle Solaris ausführt, wird der NIS-Clients nicht automatisch auf dem System konfiguriert, wenn der DHCP-Server NIS-Informationen an den Client sendet. 

Wurde der DHCP-Server so konfiguriert, dass er NIS-Informationen an das DHCP-Clientsystem sendet, können Sie die an den Client übergebenen Werte anzeigen. Dazu geben Sie den Befehl dhcpinfo wie folgt auf dem Client ein:

# /sbin/dhcpinfo NISdmain

# /sbin/dhcpinfo NISservs


Hinweis –

Bei DHCPv6 beziehen Sie -v6 und andere Protokollschlüsselwörter in den Befehl ein.

# /sbin/dhcpinfo -v6 NISDomain

# /sbin/dhcpinfo -v6 NISServers


Die für den NIS-Domänennamen und NIS-Server zurückgegebenen Werte verwenden Sie zum Einrichten des Systems als NIS-Client. 

Sie richten einen NIS-Client standardmäßig für ein Oracle Solaris DHCP-Clientsystem ein. Dies wird in Kapitel 5, Setting Up and Configuring NIS Service in System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP) beschrieben.


Tipp –

Sie können ein Skript schreiben, das dhcpinfo und ypinit verwendet, um die Konfiguration des NIS-Client auf DHCP-Clientsystemen zu automatisieren.


NIS+ 

Wenn der NIS+-Client für ein DHCP-Clientsystem auf konventionelle Weise eingerichtet wird, könnte der DHCP-Server gelegentlich unterschiedliche Adressen an den Client ausgeben. Dies führt zu Sicherheitsproblemen, da die NIS+-Sicherheit die IP-Adresse als Teil der Konfiguration einschließt. Um sicherzustellen, dass Ihr Client jedes Mal die gleiche Adresse erhält, richten Sie den NIS+-Client für ein DHCP-Clientsystem nicht-standardmäßig ein. Dies wird unter Einrichten von DHCP-Clients als NIS+-Clients beschrieben.

Falls dem DHCP-Clientsystem manuell eine IP-Adresse zugewiesen wurde, so ist die Client-Adresse immer gleich. In diesem Fall richten Sie den NIS+-Client standardmäßig ein. Dies wird unter Setting Up NIS+ Client Machines in System Administration Guide: Naming and Directory Services (NIS+) beschrieben.

/etc/inet/hosts

Sie müssen die Datei /etc/inet/hosts für ein DHCP-Clientsystem einrichten, das /etc/inet/hosts als Namen-Service verwendet.

Der Hostname des DHCP-Clientsystems wird mithilfe der DHCP-Tools der eigenen /etc/inet/hosts-Datei hinzugefügt. Den /etc/inet/hosts-Dateien anderer Systeme im Netzwerk müssen Sie den Hostnamen jedoch manuell hinzufügen. Wenn das DHCP-Serversystem /etc/inet/hosts zur Namensauflösung verwendet, müssen Sie darüber hinaus den Hostnamen des Clients auf dem Server manuell hinzufügen.

DNS 

Wenn das DHCP-Clientsystem den DNS-Domänennamen über DHCP bezieht, wird die /etc/resolv.conf-Datei auf dem Clientsystem automatisch konfiguriert. Darüber hinaus wird die Datei /etc/nsswitch.conf automatisch aktualisiert, und dns wird hinter den anderen Namen-Services in der Suchreihenfolge an die Zeile hosts angefügt. Weitere Informationen zu DNS finden Sie im System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP) .

Einrichten von DHCP-Clients als NIS+-Clients

Sie können den NIS+-Namen-Service auf Oracle Solaris-Systemen einsetzen, die als DHCP-Clients konfiguriert sind. Stellt Ihr DHCP-Server jedoch zu verschiedenen Zeiten unterschiedliche Adressen bereit, umgeht dies teilweise eine der Funktionen von NIS+. die die Sicherheit verbessern sollen: die Erstellung von Data Encryption Standard (DES)-Berechtigungsnachweisen. Aus Sicherheitsgründen müssen Sie den DHCP-Server so konfigurieren, dass er jederzeit die gleiche Adresse bereitstellt. Wenn Sie einen NIS+-Client so konfigurieren, dass er kein DHCP verwendet, können Sie einmalige DES-Berechtigungsnachweise für den Client beim NIS+-Server hinzufügen. Es gibt verschiedene Möglichkeiten, Berechtigungsnachweise zu erstellen. Hierzu zählen das Verwenden des nisclient-Skripts oder der nisaddcred-Befehl.

Zum Erzeugen von NIS+-Berechtigungsnachweisen muss der Client über einen statischen Hostnamen verfügen, so dass die Berechtigungsnachweise erstellt und gespeichert werden können. Wenn Sie NIS+ und DHCP verwenden möchten, müssen Sie identische Berechtigungsnachweise erstellen, die für alle Hostnamen von DHCP-Clients verwendet werden. Auf diese Weise kann der Client die gleichen DES-Berechtigungsnachweise verwenden, ungeachtet dessen, welche IP-Adresse mit zugehörigem Hostnamen ein DHCP-Client erhält.

Das folgende Verfahren zeigt, wie Sie identische Berechtigungsnachweise für alle DHCP-Hostnamen erstellen. Dieses Verfahren ist nur dann gültig, wenn Sie die von den DHCP-Clients verwendeten Hostnamen kennen. Angenommen, der DHCP-Server erzeugt die Hostnamen, so kennen Sie die möglichen Hostnamen, die ein Client erhalten kann.

ProcedureSo richten Sie Oracle Solaris DHCP-Clients als NIS+-Clients ein

Ein DHCP-Clientsystem, das als NIS+-Client konfiguriert werden soll, muss Berechtigungsnachweise verwenden, die einem anderen NIS+-Clientsystem in der NIS+-Domäne gehören. Dieses Verfahren erzeugt lediglich Berechtigungsnachweise für das System, die nur für den Superuser gelten, der beim System angemeldet ist. Andere Benutzer, die sich beim DHCP-Clientsystem anmelden, müssen über eigene einmalige Berechtigungsnachweise auf dem NIS+-Server verfügen. Diese Berechtigungsnachweise werden entsprechend dem Verfahren im System Administration Guide: Naming and Directory Services (NIS+) erzeugt.

  1. Erstellen Sie die Berechtigungsnachweise für einen Client, indem Sie den folgenden Befehl auf einem NIS+-Server eingeben:


    # nisgrep nisplus-client-name cred.org_dir > /tmp/file
    

    Dieser Befehl schreibt den Tabelleneintrag cred.org_dir für den NIS+-Client in eine temporäre Datei.

  2. Zum Anzeigen des Inhalts der temporären Datei geben Sie den Befehl cat ein.

    Oder verwenden Sie einen Texteditor.

  3. Kopieren Sie die zu verwendenden Berechtigungsnachweise für DHCP-Clients.

    Sie müssen den PublicKey und den PrivateKey kopieren. Dies sind lange Strings mit Zahlen und Buchstaben, die durch Doppelpunkte voneinander getrennt sind. Die Berechtigungsnachweise müssen in den Befehl eingefügt werden, der im nächsten Schritt ausgegeben wird.

  4. Fügen Sie die Berechtigungsnachweise für einen DHCP-Client hinzu, indem Sie den folgenden Befehl eingeben:


    # nistbladm -a cname=" dhcp-client-name@nisplus-domain" auth_type=DES \
    auth_name="unix.dhcp-client-name@nisplus-domain" \
    public_data=copied-public-key \ 
    private_data=copied-private-key
    

    Für kopierter-PublicKey fügen Sie die Informationen des PublicKey ein, die Sie aus der temporären Datei kopiert haben. Für kopierter-PrivateKey fügen Sie die Informationen des PrivateKey ein, die Sie aus der temporären Datei kopiert haben.

  5. Kopieren Sie Dateien standortfern vom NIS+-Clientsystem zum DHCP-Clientsystem, indem Sie die folgenden Befehle auf einem DHCP-Clientsystem eingeben:


    # rcp nisplus-client-name:/var/nis/NIS_COLD_START /var/nis
    # rcp nisplus-client-name:/etc/.rootkey /etc
    # rcp nisplus-client-name:/etc/defaultdomain /etc
    

    Falls Sie die Meldung „Zugriff verweigert“ angezeigt wird, gestattet das System eventuell kein remotes Kopieren. In diesem Fall können Sie die Dateien als normaler Benutzer an einen Zwischenspeicherort kopieren. Kopieren Sie die Dateien dann als Superuser vom Zwischenspeicherort an den korrekten Speicherort auf dem DHCP-Clientsystem.

  6. Kopieren Sie die richtige Switch-Datei des Namen-Service für NIS+, indem Sie den folgenden Befehl auf einem DHCP-Clientsystem ausführen:


    # cp /etc/nsswitch.nisplus /etc/nsswitch.conf
    
  7. Booten Sie das DHCP-Clientsystem neu.

    Das DHCP-Clientsystem sollte jetzt in der Lage sein, NIS+-Services zu verwenden.


Beispiel 16–1 Einrichten eines Oracle Solaris DHCP-Clientsystems als NIS+-Client

Im folgenden Beispiel wird ein System nisei angenommen, bei dem es sich um einen NIS+-Client in der NIS+-Domäne dev.example.net handelt. Darüber hinaus gibt es ein DHCP-Clientsystem, dhow, und Sie möchten dhow als NIS+-Client konfigurieren.


(First log in as superuser on the NIS+ server)
# nisgrep nisei cred.org_dir > /tmp/nisei-cred
# cat /tmp/nisei-cred
nisei.dev.example.net.:DES:unix.nisei@dev.example.net:46199279911a84045b8e0
c76822179138173a20edbd8eab4:90f2e2bb6ffe7e3547346dda624ec4c7f0fe1d5f37e21cff63830
c05bc1c724b
# nistbladm -a cname="dhow@dev.example.net." \
auth_type=DES auth_name="unix.dhow@dev.example.net" \
public_data=46199279911a84045b8e0c76822179138173a20edbd8eab4 \
private_data=90f2e2bb6ffe7e3547346dda624ec4c7f0fe1d5f37e21cff63830\
c05bc1c724b
# rlogin dhow
(Log in as superuser on dhow)
# rcp nisei:/var/nis/NIS_COLD_START /var/nis
# rcp nisei:/etc/.rootkey /etc
# rcp nisei:/etc/defaultdomain /etc
# cp /etc/nsswitch.nisplus /etc/nsswitch.conf
# reboot

Das DHCP-Clientsystem dhow sollte jetzt in der Lage sein, NIS+-Services zu verwenden.



Beispiel 16–2 Hinzufügen von Berechtigungsnachweisen mit einem Skript

Wenn Sie zahlreiche DHCP-Clientsysteme als NIS+-Clients einrichten möchten, können Sie ein Skript schreiben. Mit einem Skript können Sie schnell Einträge zur NIS+-Tabelle cred.org_dir hinzufügen. Im Folgenden ist ein Beispielskript aufgeführt.


#! /usr/bin/ksh  
# 
# Copyright (c) by Sun Microsystems, Inc. All rights reserved. 
# 
# Sample script for cloning a credential. Hosts file is already populated  
# with entries of the form dhcp-[0-9][0-9][0-9]. The entry we're cloning 
# is dhcp-001. 
#  
#  
PUBLIC_DATA=6e72878d8dc095a8b5aea951733d6ea91b4ec59e136bd3b3 
PRIVATE_DATA=3a86729b685e2b2320cd7e26d4f1519ee070a60620a93e48a8682c5031058df4
HOST="dhcp-" 
DOMAIN="mydomain.example.com"  
 
for 
i in 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019
do         
     print - ${HOST}${i}         
     #nistbladm -r [cname="${HOST}${i}.${DOMAIN}."]cred.org_dir         
     nistbladm -a cname="${HOST}${i}.${DOMAIN}." \
         auth_type=DES auth_name="unix.${HOST}${i}@${DOMAIN}" \
         public_data=${PUBLIC_DATA} private_data=${PRIVATE_DTA} cred.org_Dir
done  
 
exit 0

DHCP-Client Ereignisskripten

Sie können den Oracle Solaris DHCP-Client so konfigurieren, dass er ein ausführbares Programm oder ein Skript aufruft, das eine für das Clientsystem geeignete Aktion ausführt. Dieses Programm oder Skript, das als Ereignisskript bezeichnet wird, wird automatisch ausgeführt, nachdem bestimmte DHCP-Leasing-Ereignisse aufgetreten sind. Das Ereignisskript kann zum Ausführen anderer Befehle, Programme oder Skripten als Reaktion auf bestimmte Leasing-Ereignisse verwendet werden. Zum Verwenden dieser Funktion müssen Sie eigene Ereignisskripten bereitstellen.

Die folgenden Ereignis-Schlüsselwörter werden von dhcpagent-Daemon verwendet, um DHCP-Leasing-Ereignisse zu kennzeichnen:

Ereignis-Schlüsselwort

Beschreibung

BOUND und BOUND6

Die Schnittstelle wird für DHCP konfiguriert. Der Client erhält eine Bestätigungsnachricht (DHCPv4 ACK) oder (DHCPv6 Reply) vom DHCP-Server, die eine Leasing-Anforderung nach einer IP-Adresse gewährt. Das Ereignisskript wird unmittelbar nach der erfolgreichen Konfiguration der Schnittstelle aufgerufen.

EXTEND und EXTEND6

Der Client verlängert erfolgreich ein Leasing. Das Ereignisskript wird aufgerufen, unmittelbar nachdem der Client die Bestätigungsnachricht vom DHCP-Server über die Erneuerungsanforderung erhalten hat.

EXPIRE und EXPIRE6

Das Leasing läuft ab, wenn die Leasing-Zeit gestrichen ist. Bei DHCPv4 wird das Ereignisskript aufgerufen, unmittelbar bevor die geleaste Adresse von der Schnittstelle entfernt und die Schnittstelle als offline gekennzeichnet wird. Bei DHCPv6 wird das Ereignisskript aufgerufen, unmittelbar bevor die letzte verbleibende geleaste Adresse von der Schnittstelle entfernt wird.

DROP und DROP6

Der Client verwirft das Leasing, um die Schnittstelle aus der DHCP-Verwaltung zu entfernen. Das Ereignisskript wird aufgerufen, unmittelbar bevor die Schnittstelle aus der DHCP-Verwaltung entfernt wird.

RELEASE und RELEASE6

Der Client gibt die IP-Adresse frei. Das Ereignisskript wird ausgeführt, unmittelbar bevor der Client die Adresse der Schnittstelle freigibt und RELEASE- oder DHCPv6 Release-Pakete an den DHCP-Server sendet.

INFORM und INFORM6

Eine Schnittstelle bezieht über die DHCPv4 INFORM- oder die DHCPv6 Information-Request-Nachricht neue oder aktualisierte Konfigurationsinformationen von einem DHCP-Server. Dieser Ereignisse treten auf, wenn der DHCP-Client nur Konfigurationsinformationen vom Server und kein Leasing für eine IP-Adresse bezieht.

LOSS6

Während des Ablaufs der Leasing-Zeit, wenn noch mindestens ein Leasing gültig ist, wird das Ereignisskript aufgerufen, bevor abgelaufene Adressen entfernt werden. Die entfernten Adressen werden mit dem Flag IFF_DEPRECATED gekennzeichnet.

Bei jedem dieser Ereignisse ruft der dhcpagent-Daemon den folgenden Befehl auf:


/etc/dhcp/eventhook interface event

dabei steht Schnittstelle für die Schnittstelle, die DHCP verwendet und Ereignis ist eines der oben beschriebenen Ereignisschlüsselwörter. Angenommen, die Schnittstelle ce0 wurde als erstes für DHCP konfiguriert, so ruft der dhcpagent-Daemon das Ereignisskript wie folgt auf:


/etc/dhcp/eventhook ce0 BOUND

Um ein Ereignisskript verwenden zu können, müssen Sie Folgendes ausführen:

Das Ereignisskript übernimmt die Programmumgebung vom dhcpagent-Daemon und wird mit root-Berechtigungen ausgeführt. Das Skript kann das Dienstprogramm dhcpinfo verwenden, um ggf. weitere Informationen zur Schnittstelle zu beziehen. Weitere Informationen finden Sie in der Manpage dhcpinfo(1).

Der dhcpagent-Daemon wartet, bis das Ereignisskript für alle Ereignisse beendet ist. Wenn das Ereignisskript nach 55 Sekunden nicht beendet ist, sendet der dhcpagent-Daemon ein SIGTERM-Signal an den Skriptprozess. Wird der Prozess nach weiteren 3 Sekunden nicht beendet, sendet der Daemon ein SIGKILL-Signal, um den Prozess zu beenden.

Ein Beispiel eines Ereignisskripts finden Sie in der Manpage dhcpagent(1M).

Beispiel 16–3 zeigt, wie Sie ein DHCP-Ereignisskript verwenden, um den Inhalt der /etc/resolv.conf-Datei auf dem neuesten Stand zu halten. Wenn die Ereignisse BOUND und EXTEND auftreten, ersetzt das Skript die Namen von Domänenserver und Namensserver. Wenn die Ereignisse EXPIRE, DROP und RELEASE auftreten, entfernt das Skript die Namen von Domänenserver und Namensserver aus der Datei.


Hinweis –

Das Beispielskript geht davon aus, dass DHCP die autoritative Quelle für die Namen von Domänenserver und Namensserver ist. Weiterhin geht das Skript davon aus, dass alle Schnittstellen unter der Verwaltung von DHCP konsistente und aktuelle Informationen zurückgeben. Diese Annahmen spiegeln eventuell nicht die Bedingungen auf Ihrem System wider.



Beispiel 16–3 Ereignisskript zur Aktualisierung der Datei /etc/resolv.conf

#!/bin/ksh -p

PATH=/bin:/sbin export PATH
umask 0222

# Refresh the domain and name servers on /etc/resolv.conf

insert ()
{
	dnsservers=`dhcpinfo -i $1 DNSserv`
	if [ -n "$dnsservers" ]; then
		# remove the old domain and name servers
		if [ -f /etc/resolv.conf ]; then
			rm -f /tmp/resolv.conf.$$
			sed -e '/^domain/d' -e '/^nameserver/d' \
			    /etc/resolv.conf > /tmp/resolv.conf.$$
		fi

		# add the new domain
		dnsdomain=`dhcpinfo -i $1 DNSdmain`
		if [ -n "$dnsdomain" ]; then
			echo "domain $dnsdomain" >> /tmp/resolv.conf.$$
		fi

		# add new name servers
		for name in $dnsservers; do
			echo nameserver $name >> /tmp/resolv.conf.$$
		done
		mv -f /tmp/resolv.conf.$$ /etc/resolv.conf
	fi
}

# Remove the domain and name servers from /etc/resolv.conf

remove ()
{
	if [ -f /etc/resolv.conf ]; then
		rm -f /tmp/resolv.conf.$$
		sed -e '/^domain/d' -e '/^nameserver/d' \
		    /etc/resolv.conf > /tmp/resolv.conf.$$
		mv -f /tmp/resolv.conf.$$ /etc/resolv.conf
	fi
}

case $2 in
BOUND | EXTEND)
	insert $1
	exit 0
	;;
EXPIRE | DROP | RELEASE)
	remove
	exit 0
	;;
*)
	exit 0
	;;
esac