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:
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.
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.
Die beiden wesentlichen Unterschiede zwischen DHCPv4 und DHCPv6 sind:
Das administrative Modell
DHCPv4 – Der Administrator aktiviert DHCP für jede Schnittstelle. Die Administration erfolgt pro logischer Schnittstelle.
DHCPv6 – Eine explizite Konfiguration ist nicht erforderlich. Dieses Protokoll wird auf einer angegebenen physikalischen Schnittstelle aktiviert.
Protokolldetails
DHCPv4 – Der DHCP-Server stellt die Teilnetzmaske für jede Adresse bereit. Eine Hostname-Option stellt den systemweit geltenden Knotennamen ein.
DHCPv6 – Die Teilnetzmaske wird über Router-Advertisement-Nachrichten bekannt gegeben, nicht vom DHCPv6-Server. Es gibt keine Hostname-Option für DHCPv6.
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.”
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.
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.
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.
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.
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 |
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).
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
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.
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.
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.
Ein Client sendet eine Solicitation-Nachricht, um Server zu lokalisieren.
Server senden eine Advertisement-Nachricht, um anzugeben, dass sie für DHCP-Services zur Verfügung stehen.
Ein Client sendet eine Request-Nachricht, um Konfigurationsparameter von Servern mit den höchsten Präferenzwerten anzufordern (einschließlich IP-Adressen). Server-Präferenzwerte werden vom Administrator eingerichtet und reichen von 0 (niedrigste Präferenz) bis 255 (höchste Präferenz).
Der Server sendet eine Reply-Nachricht mit den Leasing-Zeiten für die Adresse und Konfigurationsdateien.
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.
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.
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.
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.
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.
Melden Sie sich als Superuser beim Clientsystem an.
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).
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).
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).
Geben Sie „Ja“ an, wenn Sie bestätigen sollen, ob DHCP zur Konfiguration der Netzwerkschnittstellen verwendet werden soll.
Melden Sie sich als Superuser beim Clientsystem an.
Wenn Sie eine sysidcfg-Datei zur Vorkonfiguration des Systems verwenden, löschen Sie den Unterschlüssel dhcp vom Schlüsselwort network_interface.
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).
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).
Geben Sie „Nein“ an, wenn Sie bestätigen sollen, ob DHCP zur Konfiguration der Netzwerkschnittstellen verwendet werden soll.
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.
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:
Starten des DHCP-Client – Mit dem Befehl ifconfig Schnittstelle [inet6] dhcp start initiieren Sie die Interaktionen zwischen dem dhcpagent-Daemon und dem DHCP-Server, um eine IP-Adresse und einen neuen Satz Konfigurationsoptionen zu beziehen. Dieser Befehl eignet sich insbesondere dann, wenn Sie die Informationen ändern möchten, die ein Client unmittelbar verwenden soll, z. B. wenn Sie IP-Adressen hinzufügen oder die Teilnetzmaske ändern.
Anfordern nur der Netzwerkkonfigurationsinformationen – Mit dem Befehl ifconfig Schnittstelle [inet6] dhcp inform sorgen Sie dafür, dass der dhcpagent-Daemon eine Anforderung nach Netzwerkkonfigurationsparametern mit Ausnahme der IP-Adresse sendet. Dieser Befehl eignet sich insbesondere dann, wenn die Netzwerkschnittstelle über eine statische IP-Adresse verfügt, das Clientsystem jedoch aktualisierte Netzwerkoptionen benötigt. So verwenden Sie diesen Befehl immer dann, wenn Sie DHCP nicht zur Verwaltung der IP-Adressen, aber zur Konfiguration der Hosts im Netzwerk verwenden möchten.
Anfordern einer Leasing-Verlängerung – Mit dem Befehl ifconfig Schnittstelle [inet6] dhcp extend sendet der dhcpagent-Daemon eine Anforderung zur Erneuerung der Leasing-Zeit. Der Client fordert automatisch eine Erneuerung der Leasing-Zeit an. Sie können diesen Befehl verwenden, wenn Sie die Leasing-Zeit ändern und möchten, dass die Clients die neue Leasing-Zeit sofort verwenden und nicht auf den nächsten Versuch zur Leasing-Erneuerung warten.
Freigeben der IP-Adresse – Mit dem Befehl ifconfig Schnittstelle [inet6] dhcp release wird veranlasst, dass der dhcpagent-Daemon die Verwaltung der von der Netzwerkschnittstelle verwendeten IP-Adresse abgibt. Die Freigabe der IP-Adresse erfolgt automatisch, wenn die Leasing-Zeit abgelaufen ist. Sie können diesen Befehl auf einem Laptop eingeben, wenn Sie das Netzwerk verlassen und beabsichtigen, das System in einem anderen Netzwerk neu zu starten. Lesen Sie auch die Informationen zur RELEASE_ON_SIGTERM-Eigenschaft in der Konfigurationsdatei /etc/default/dhcpagent.
Abwerfen der IP-Adresse – Mit dem Befehl ifconfig Schnittstelle [inet6] dhcp drop wird veranlasst, dass der dhcpagent-Daemon die Netzwerkschnittstelle offline schaltet, ohne den DHCP-Server zu benachrichtigen. Die Leasing-Zeit wird im Dateisystem zwischengespeichert. Mit diesem Befehl kann ein Client nach einem Neustart wieder die gleiche IP-Adresse erhalten.
Anpingen der Netzwerkschnittstelle – Mit dem Befehl ifconfig Schnittstelle [inet6] dhcp ping können Sie feststellen, ob die Schnittstelle von DHCP verwaltet wird.
Anzeigen des DHCP-Konfigurationsstatus der Netzwerkschnittstelle – Mit dem Befehl ifconfig Schnittstelle [inet6] dhcp status zeigen Sie den aktuellen Status des DHCP-Clients an. Die Anzeige umfasst folgende Informationen:
Ob eine IP-Adresse an den Client gebunden ist
Die Anzahl der gesendeten, empfangenen und abgewiesenen Anforderungen
Ob es sich bei dieser Schnittstelle um die primäre Schnittstelle handelt
Zeitangaben, wann die Leasing-Zeit bezogen wurde, wann sie abläuft, wann Erneuerungsversuche gestartet werden sollen
Beispiel:
# ifconfig hme0 dhcp status Interface State Sent Recv Declined Flags hme0 BOUND 1 1 0 [PRIMARY] (Began,Expires,Renew)=(08/16/2005 15:27, 08/18/2005 13:31, 08/17/2005 15:24) |
# ifconfig hme0 inet6 dhcp status Interface State Sent Recv Declined Flags hme0 BOUND 1 0 0 [PRIMARY] (Began,Expires,Renew)=(11/22/2006 20:39, 11/22/2006 20:41, 11/22/2006 20:40) |
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:
Das Clientsystem benötigt keinen bestimmten Hostnamen.
Wenn Sie möchten, dass ein Client einen bestimmten Hostnamen anfordert, lesen Sie Hostnamen für DHCPv4-Clients.
Standardmäßige Anforderungen für den Client befinden sich in /etc/default/dhcpagent und umfassen DNS-Server, DNS-Domäne und Broadcast-Adresse.
Die Parameterdatei des DHCP-Client kann so eingerichtet werden, dass weitere Informationen im Schlüsselwort PARAM_REQUEST_LIST in der /etc/default/dhcpagent-Datei angefordert werden. Der DHCP-Server kann so konfiguriert werden, dass er Optionen bereitstellt, die nicht explizit angefordert wurden. Informationen zur Verwendung von DHCP-Servermakros zum Senden von Informationen an Clients finden Sie unter Einführung in DHCP-Makros und Arbeiten mit DHCP-Makros (Übersicht der Schritte).
Das Clientsystem verwendet DHCP auf einer physikalischen Netzwerkschnittstelle.
Wenn Sie DHCP auf mehreren physikalischen Schnittstellen verwenden möchten, lesen Sie DHCP-Clientsysteme mit mehreren Netzwerkschnittstellen.
Der Client wird nicht automatisch als Namen-Service-Client konfiguriert, wenn der DHCP-Client nach der Installation von Oracle Solaris konfiguriert wurde.
Informationen zum Verwenden von Namen-Services mit DHCP-Clients finden Sie unter DHCP -Clientsysteme und Namen-Services.
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:
Der DHCP-Client verwaltet keinen Standard-Routen, die logischen Schnittstellen zugewiesen sind.
Der Oracle Solaris-Kernel weist Routen den physikalischen, jedoch nicht den logischen Schnittstellen zu. Nachdem die IP-Adresse einer physikalischen Schnittstelle eingerichtet wurde, müssen die erforderlichen Standard-Routen in die Routing-Tabelle eingepflegt werden. Wird daraufhin DHCP zur Konfiguration einer logischen Schnittstelle verwendet, die dieser physikalischen Schnittstelle zugeordnet ist, sind die erforderlichen Routen bereits eingerichtet. Die logische Schnittstelle verwendet die gleichen Routen.
Läuft die Leasing-Zeit einer physikalischen Schnittstelle ab, löscht der DHCP-Client die dieser Schnittstelle zugeordneten Standard-Routen. Läuft die Leasing-Zeit einer logischen Schnittstelle ab, löscht der DHCP-Client die der logischen Schnittstelle zugeordneten Standard-Routen nicht. Die zugeordnete physikalische Schnittstelle und eventuell vorhandene weitere logische Schnittstellen können die gleichen Routen weiterverwenden.
Wenn Sie die einer von DHCP verwalteten Schnittstelle zugeordneten Standard-Routen hinzufügen oder entfernen müssen, verwenden Sie ein DHCP-Client-Ereignisskript. Lesen Sie dazu DHCP-Client Ereignisskripten.
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.
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.
Melden Sie sich als Superuser bei einem Clientsystem an und nehmen Sie die folgenden Änderungen an der /etc/default/dhcpagent-Datei vor.
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.
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.
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.
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) . |
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.
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.
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.
Zum Anzeigen des Inhalts der temporären Datei geben Sie den Befehl cat ein.
Oder verwenden Sie einen Texteditor.
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.
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.
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.
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 |
Booten Sie das DHCP-Clientsystem neu.
Das DHCP-Clientsystem sollte jetzt in der Lage sein, NIS+-Services zu verwenden.
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.
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 |
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:
Beschreibung
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.
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.
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.
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.
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.
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.
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:
Benennen der ausführbaren Datei /etc/dhcp/eventhook.
Einstellen des Eigners der Datei auf root.
Einstellen der Berichtigungen auf 755 (rwxr-xr-x ).
Schreiben Sie das Skript oder Programm, um eine Abfolge von Aktionen als Reaktion auf eines der dokumentierten Ereignisse auszuführen. Da Sun eventuell neue Ereignismodelle hinzufügt, muss das Programm alle nicht erkannten Ereignisse oder solche, die keine Aktionen erfordern, stillschweigend ignorieren. Beispielsweise könnte das Programm oder Skript in eine Protokolldatei schreiben, wenn das Ereignis RELEASE lautet und alle anderen Ereignisse ignorieren.
Sorgen Sie dafür, das Skript bzw. Programm nicht-interaktiv ist. Bevor das Ereignis wird aufgerufen wird, sind stdin, stdout und stderr mit /dev/null verbunden. Um die Ausgabe oder Fehler zu sehen, müssen Sie zu einer Datei umleiten.
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.
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.
#!/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