この章では、ダイナミックホスト構成プロトコル (DHCP) を紹介し、このプロトコルの基本概念、およびネットワーク上で使用した場合の利点について説明します。
この章では、以下の各項目について説明します。
DHCP は、TCP/IP ネットワーク内のホストシステムが、その起動時に TCP/IP ネットワークに対して自動的に構成されるようにするために開発された標準プロトコルです。DHCP は、クライアント/サーバーメカニズムを採用し、サーバーは、クライアントの設定情報を格納、管理し、クライアントの要求に応じてその設定情報を提供します。設定情報には、クライアントの IP アドレスと、クライアントが使用可能なネットワークサービス情報が含まれます。
DHCP は、従来の BOOTP プロトコルをベースに機能拡張されたプロトコルです。BOOTP は、TCP/IP ネットワーク経由のブートを可能にすることを目的に設計されました。DHCP は、クライアントとサーバー間の通信に BOOTP と同じメッセージ形式を使用しながら、メッセージ内により多くの情報を含められるようにすることで、BOOTP を拡張しています。追加された情報は、クライアントのためのネットワーク構成データです。
DHCP の主な利点は、リースによる IP アドレス割り当てを管理できる機能にあります。この機能を使用すると、IP アドレスを、使用されなくなった時点で回収し、他のクライアントに再割り当てすることが可能になります。これによって、1 つのサイトで使用する IP アドレスプールは、すべてのクライアントに永続的なアドレスを割り当てた場合に比べ、小さくなります。
DHCP は、TCP/IP ネットワークの設定やネットワークの日々の管理に伴う、システム管理者やネットワーク管理者の手間を軽減します。なお、Solaris DHCP は IPv4 でのみ動作することに注意してください。
Solaris DHCP には、以下の利点があります。
IP アドレス管理 - DHCP の主な利点は、IP アドレスをより簡単に管理できることです。DHCP を備えていないネットワークでは、管理者が手動で IP アドレスを割り当てなければなりません。管理者が手動で IP アドレスを割り当てる場合には、各クライアントに一意の IP アドレスを割り当て、各クライアントを個別に設定しなければなりません。クライアントが別のネットワークに移動する場合には、管理者はそのクライアントのために手動で修正を加えなければなりません。DHCP が使用可能な場合は、管理者が介在しなくても、DHCP サーバーが IP アドレスを管理し、割り当てます。クライアントが別のサブネットに移動する場合、クライアントはその新しいネットワークに適合する新しいクライアント情報を DHCP サーバーから取得するため、手動による再設定は必要ありません。
ネットワーククライアント構成の一元化 - ネットワーク管理者は、特定のクライアント、あるいは特定のクライアントタイプに特化した構成を作成し、その情報を 1 箇所に、つまり DHCP データ保存内にまとめて集中管理することができます。管理者は、クライアント構成を変更するためにクライアントにログインする必要はなく、DHCP データ保存内の情報を変更するだけで、複数のクライアントに対する変更を実行できます。
BOOTP クライアントのサポート - BOOTP サーバーと DHCP サーバーはどちらも、クライアントからのブロードキャストを待機して、応答します。DHCP サーバーは、DHCP クライアントからの要求だけではなく、BOOTP クライアントからの要求にも応答できます。BOOTP クライアントは、IP アドレスと、ブートに必要な情報をサーバーから受け取ります。
ローカルおよびリモートクライアントのサポート - BOOTP は、あるネットワークから別のネットワークへのメッセージリレー (中継) 機能を備えています。DHCP は、さまざまな方法で BOOTP リレー機能を使用します。ほとんどのネットワークルーターは、BOOTP リレーエージェントとして機能するように構成でき、そのように構成すると、要求を送るクライアントのネットワーク上に存在しないサーバーに対して BOOTP 要求を渡すことができます。同じ方法で、DHCP 要求をリレーすることも可能です。これは、ルーターには DHCP 要求と BOOTP 要求の区別がないためです。また、BOOTP リレー機能をサポートするルーターが使用できない場合には、Solaris DHCP サーバーを BOOTP リレーエージェントとして動作するように設定することもできます。
ネットワークブート機能 - クライアントは、DHCP を使用すると、RARP (逆アドレス解決プロトコル) や bootparams を使用しなくても、ネットワーク上のサーバーからブートに必要な情報を取得できます。DHCP サーバーは、IP アドレス、ブートサーバー、ネットワーク構成情報を含む、クライアントが動作するのに必要なすべての情報をクライアントに提供することができます。DHCP ネットワークブート要求は、サブネットを超えてリレーできるので、DHCP ネットワークブート機能を使用すれば、ネットワーク内のブートサーバー数を削減できます。RARP でのブートには、サブネットごとにブートサーバーが必要です。
システム管理者はまず、DHCP サーバーをインストールし、構成する必要があります。構成作業において、システム管理者は、クライアントがネットワーク上で動作するのに必要なネットワーク情報を入力します。この情報が正しく設定されると、クライアントはネットワーク情報を要求し、受け取ることができます。
図 8-1 は、DHCP サービスにおける一連のイベントを示したものです。丸の中の番号は、図の後に続く説明の箇条書き番号を示しています。
クライアントは、ローカルサブネット上で制限付きブロードキャストアドレス (255.255.255.255) に探索メッセージをブロードキャストすることで、DHCP サーバーを検出します。ルータが存在し、BOOTP リレーエージェントとして動作するように構成されている場合、要求は異なるサブネット上の別の DHCP サーバーに渡されます。クライアントのブロードキャストには、クライアントの一意の ID が含まれます。Solaris DHCP の実装では、この ID はクライアントの MAC アドレスから導出されます。
探索メッセージを受け取る DHCP サーバーは、以下の情報を調査し、クライアントのネットワークを決定します。
サーバーのネットワークインタフェースの内、どのインタフェースが要求を受け取ったのか。これによってサーバーは、クライアントが、インタフェースが接続されているネットワーク上にあるのか、あるいは、そのネットワークに接続された BOOTP リレーエージェントを使用しているのかがわかります。
BOOTP リレーエージェントの IP アドレスが要求に含まれているか。要求がリレーエージェントを通過する際に、リレーエージェントは要求ヘッダーにリレーエージェントのアドレスを挿入します。サーバーがリレーエージェントのアドレスを検出すると、サーバーは、そのアドレスのネットワーク部分がクライアントのネットワークアドレスを示していることを認識します。これは、リレーエージェントがクライアントのネットワークに接続されている必要があるからです。
クライアントのネットワークは、サブネット化されているか。サーバーは、リレーエージェントアドレスまたは要求を受け取ったネットワークインタフェースのアドレスをキーにして、ネットマスクテーブルを調べます。サーバーは、使用されているサブネットマスクを認識すると、ネットワークアドレスのどの部分がホスト部分であるかを決定し、クライアントに適切な IP アドレスを選択できます。(ネットマスクについては、netmasks(4) を参照)。
クライアントのネットワークを決定したら、DHCP サーバーは、適切な IP アドレスを選択し、そのアドレスがまだ使用されていないことを確認します。次に、選択した IP アドレスと、クライアントの設定に使用可能なサービス情報を含むオファーメッセージ (offer message) をブロードキャストし、クライアントに応答します。各サーバーは、提供予定の IP アドレスを一時的に予約します。この状態は、クライアントがその IP アドレスを使用するかどうかをサーバーが確認できるまで続きます。
クライアントは最善のオファーを選択し (提供されるサービスの番号とタイプをもとに選択する)、要求をブロードキャストして、最善のオファーを行ったサーバーの IP アドレスを指定します。ブロードキャストにより、応答したすべての DHCP サーバーは、クライアントが 1 つのサーバーをすでに選択したことを認識し、選択されなかったサーバーは、それらが提供する予定だった IP アドレスの予約を取り消すことができます。
選択されたサーバーは、クライアントに対して IP アドレスを割り当て、その情報を DHCP データ記憶領域に格納し、クライアントに承認を送信します。承認メッセージには、クライアントのためのネットワーク構成パラメータが含まれています。クライアントは、他のシステムが IP アドレスを使用していないことを確認するために IP アドレスをテストし、ブート処理を継続してネットワークに参加します。
クライアントはリース期間を監視し、規定のリース期間が経過した場合には、リース期間を延長するために、選択したサーバーに対して新たな要求メッセージを送信します。
リース期間が、管理者が規定したローカルリースポリシーに合っている場合、要求を受け取る DHCP サーバーは、そのリース期間を延長します。サーバーが 20 秒以内に応答しない場合、クライアントは、他の DHCP サーバーのいずれかがリース期間を延長できるように要求をブロードキャストします。
クライアントは、その IP アドレスを必要としなくなった場合、IP アドレスを解放する旨を通知するメッセージをサーバーに送信します。この処理は、通常のシャットダウンの際に実行され、また、手動で実行することも可能です。
Solaris DHCP サーバーは、ホストシステム上の Solaris オペレーティング環境ではデーモンとして動作します。Solaris DHCP サーバーは、2 つの基本機能を備えています。
IP アドレスの管理 - Solaris DHCP サーバーは、IP アドレスの範囲を制御し、クライアントに IP アドレスを永続的に、あるいは定義した期間割り当てます。DHCP サーバーはリースメカニズムを使用し、クライアントが一時的なアドレスを使用できる期間を決定します。アドレスは、不要になるとプールに戻され、再割り当てされます。DHCP サーバーは、DHCP ネットワークテーブル内にクライアントへの IP アドレス結合情報を保持し、複数のクライアントが同じアドレスを使用しないようにします。
クライアントへのネットワーク構成情報の提供 - Solaris DHCP サーバーは、クライアントに IP アドレスを割り当てて、ネットワーク構成情報、たとえば、ホスト名、ブロードキャストアドレス、ネットワークサブネットマスク、デフォルトゲートウェイ、ネームサービス、さらに、その他のさまざまな情報をクライアントに提供します。ネットワーク構成情報は、サーバーの dhcptab データベースから取得されます。
また、Solaris DHCP サーバーは以下の追加機能を実行するように設定することも可能です。
BOOTP クライアント要求への応答 - Solaris DHCP サーバーは、BOOTP サーバーを探索する BOOTP クライアントからのブロードキャストを待機し、BOOTP クライアントに IP アドレスとブートパラメータを提供します。管理者は、これらの情報をあらかじめ静的に構成しておく必要があります。DHCP サーバーは、BOOTP サーバーとしても DHCP サーバーとしても機能することができます。
要求のリレー - Solaris DHCP サーバーは、他のサブネット上の適切なサーバーに BOOTP 要求と DHCP 要求をリレーします。DHCP サーバーは BOOTP リレーエージェントとして設定された場合、DHCP サービスや BOOTP サービスを提供できなくなります。
DHCP クライアントに対するネットワークブート機能のサポート - Solaris DHCP サーバーは、DHCP クライアントがネットワーク経由でブートするのに必要な情報、つまり、IP アドレス、ブートパラメータ、ネットワーク構成情報を DHCP クライアントに提供できます。
スーパーユーザーは、DHCP Manager を使用して、あるいはコマンド行ユーティリティを使用して、DHCP サーバーの起動、終了、および設定を行うことができます。通常 DHCP サーバーは、システムの起動時に自動的に立ち上がり、システムのシャットダウン時に終了するように設定されています。したがって、サーバーの起動と終了を手動で行うことは、ほとんどありません。
DHCP サーバーで使用されるすべてのデータは、2 つのデータリポジトリに格納されます。これら 2 つのデータリポジトリは、DHCP Manager またはコマンド行ユーティリティのいずれかを使用して表示および管理できます。2 つのデータリポジトリは、次のとおりです。
dhcptab - クライアントに渡すことが可能な設定情報を含んでいるファイル
DHCP ネットワークテーブル - テーブル名に指定されたネットワーク上に存在している DHCP および BOOTP クライアントに関する情報を含んでいるテーブル。たとえば、ネットワーク 134.20.0.0 には、134_20_0_0 という名前のテーブルがある
ローカルディレクトリ上のファイル、または NIS+ データベースに、DHCP データを保存できます。データの保存方法の選択については、「データ保存方法の選択」を参照してください。
dhcptab ファイルには、クライアントが DHCP サーバーから入手できるすべての情報が入っています。DHCP サーバーは起動するたびにこのファイルを走査します。
DHCP プロトコルは、クライアントに渡すことができる情報の標準的な項目を多数定義しています。これらの項目は、パラメータ、シンボル、またはオプションと呼ばれます。DHCP プロトコルでは、オプションは数値コードとテキストラベルで定義されており、値は与えられていません。例として、一般的に使用されている標準オプションの一部を表 8-1 に示します。
表 8-1 DHCP 標準オプションの例
コード |
ラベル |
説明 |
---|---|---|
1 |
Subnet |
サブネットマスク IP アドレス |
3 |
Router |
ルーターの IP アドレス |
6 |
DNSserv |
DNS サーバーの IP アドレス |
12 |
Hostname |
クライアントホスト名 |
15 |
DNSdmain |
DNS ドメイン名 |
オプションの中には、管理者がサーバーの構成中に情報を提供すると、自動的に値が割り当てられるものがあります。また、管理者は後で、他のオプションに値を明示的に割り当てることもできます。オプションとその値はクライアントに渡され、設定情報を形成します。たとえば、オプションと値のペアである DNSdmain=Georgia.Peach.COM は、クライアントの DNS ドメイン名を Georgia.Peach.COM に設定します。
オプションは、マクロとして知られているコンテナ内で他のオプションと共にグループ化することができ、これによりクライアントへ容易に情報を渡すことができます。マクロの中には、サーバー構成時に自動的に作成され、構成時に値が割り当てられるオプションを含むものがあります。また、マクロには他のマクロを含めることもできます。
dhcptab ファイルのフォーマットは dhcptab(4) のマニュアルページに記載されています。DHCP Manager では、オプションとマクロタブに示されているすべての情報は dhcptab ファイルから得られます。オプションについては 「オプションについて」、マクロについては 「マクロについて」を参照してください。
dhcptab ファイルはテキストファイルですが、手作業では編集できないことに注意してください。オプションやマクロを作成、削除、変更するためには、dhtadm または DHCP Manager のいずれかを使用する必要があります。
DHCP ネットワークテーブルは、クライアントの識別子を IP アドレスと、各アドレスに関連した設定パラメータに対応付けます。ネットワークテーブルのフォーマットは、dhcp_network(4) に記載されています。DHCP Manager では、Addresses タブに示されるすべての情報はネットワークテーブルから得られます。
DHCP Manager は、DHCP サービスに関連するすべての管理業務を行うためのグラフィカルツールです。このツールを使用すると、サーバーだけでなく、サーバーが使用するデータも管理することができます。サーバー上では DHCP Manager を下記の場合に使用することができます。
DHCP サーバーを設定および設定解除する場合
DHCP サーバーを起動、停止、および再起動する場合
DHCP サービスを有効または無効にする場合
サーバーの設定をカスタマイズする場合
また、DHCP Manager を使用すると、IP アドレス、ネットワーク構成マクロ、およびネットワーク構成オプションを下記のように管理することもできます。
IP アドレスの表示、追加、削除、および解放
ネットワーク構成マクロの表示、追加、変更、および削除
標準以外のネットワーク構成オプションの表示、追加、変更、および削除
DHCP Manager では、このツールを使用して実行できる手順についての詳細なオンラインヘルプも利用できます。
すべての DHCP 管理機能は、コマンド行ユーティリティを使用しても実行することができます。表 8-2 に、各ユーティリティとその使用目的を示します。表内のコマンド名をクリックすると、各ユーティリティの使用方法を詳しく説明したマニュアルページが表示されます。
表 8-2 DHCP コマンド行ユーティリティ
DHCP コマンドのマニュアルページ |
説明と使用目的 |
---|---|
in.dhcpd(1M) | |
dhcpconfig(1M) |
テキスト形式のメニューシステムを提供するシェルスクリプトで、DHCP サーバーの構成に役立つ。dhcpconfig は、サーバーマシンのネットワークトポロジファイルから情報を収集し、初期構成に役立つ情報を作成する。dhcpconfig は、バックグラウンドで dhtadm と pntadm ユーティリティを使用して初期 dhcptab テーブルとネットワークテーブルを作成する |
dhtadm(1M) |
DHCP クライアント用の設定オプションとマクロの追加、削除、および変更に使用する。このユーティリティを使用するときは dhcptab ファイルを間接的に編集するため、dhcptab ファイルのフォーマットが正しいことが保証される。dhcptab ファイルは直接編集しないようにする |
pntadm(1M) |
DHCP ネットワークテーブルの管理に使用する。このユーティリティを使用すると、IP アドレスとネットワークを DHCP の管理下に (から) 追加 (削除) したり、指定した IP アドレスのネットワーク構成を変更したり、また DHCP の管理下にある IP アドレスとネットワークについての情報を表示したりできる |
DHCP サーバーを動作させたいシステム上で DHCP Manager を初めて実行するときは、DHCP サーバーを設定します。DHCP Manager のサーバー構成ダイアログに、1 つのネットワーク上で DHCP サーバーを使用可能にして実行するために必要な基本情報を入力するよう促すメッセージが表示されます。既存のシステムファイルからいくつかのデフォルト値を取得することができます。そのネットワークに対してシステムを構成していない場合には、デフォルト値はありません。DHCP Manager は下記の情報を入力するように促します。
そのサーバーの役割 : DHCP サーバーまたは BOOTP リレーエージェントのいずれか
データの保存方法 : ローカルファイルまたは NIS+ のいずれか
リース期間と、クライアントがリース期間を更新できるようにするかどうか
DNS サーバーの DNS ドメイン名および IP アドレス
DHCP サービス用に構成する最初のネットワークのネットワークアドレスとサブネットマスク
ネットワークのタイプ : LAN または PPP (ポイントツーポイント)
ルーターの探索、または特定のルーターの IP アドレス
NIS サーバーの NIS ドメイン名および IP アドレス
NIS+ サーバーの NIS+ ドメイン名および IP アドレス
DHCP サーバーは dhcpconfig コマンドを使用しても設定することができます。このユーティリティは既存のシステムファイルから自動的に情報を収集し、有用な初期設定を提供します。そのため、dhcpconfig コマンドを実行する前に既存のシステムファイルが正しいことを確認しておく必要があります。dhcpconfig コマンドが情報を入手するために使用するファイルについては、dhcpconfig(1M) を参照してください。初期設定後に設定を変更するときは、システムファイルに変更を加え、dhcpconfig コマンドを再度実行して、変更がコマンドに反映される様にする必要があります。
Solaris DHCP サーバーは、下記のタイプの IP アドレス割り当て機能をサポートしています。
手動割り当て - DHCP サーバーは、特定の DHCP クライアントに対して管理者が選択した、専用の IP アドレスを割り当てます。このアドレスは変更したり他のクライアントに割り当てたりすることはできません。
自動または永続的な割り当て - DHCP サーバーは有効期限のない IP アドレスを割り当て、管理者がその割り当てを変更するか、あるいは、クライアントがそのアドレスを解放するまで、そのアドレスを永続的にそのクライアントに使用します。
動的割り当て - DHCP サーバーは IP アドレスを要求しているクライアントに、一定期間このアドレスをリースします (貸し出します)。この期間が過ぎると、サーバーはこのアドレスを回収し、他のクライアントに割り当てることができます。このアドレスの使用期間はサーバーに設定されているリース期間によって決まります。
管理者は DHCP クライアントにどのような情報を提供するかを決定します。DHCP サーバーを設定するときは、そのネットワークについての基本的な情報を提供しますが、後からクライアントに提供したい情報を追加することもできます。
DHCP サーバーは、オプションと値の対、およびマクロの形で、dhcptab データベースにネットワーク構成情報を保存します。オプションはクライアントに供給するネットワークデータのキーワードです。値はオプションに割り当てられ、DHCP メッセージでクライアントに渡されます。たとえば NIS サーバーアドレスは、DHCP サーバーにより割り当てられた値 (IP アドレスのリスト) を持つ、NISservrs と呼ばれるオプションを使用して渡されます。マクロは、クライアントに供給したい任意の個数のオプションをグループ化するための便利な方法です。DHCP Manager を使用すると、これらのオプションに値を割り当て、これらのオプションをグループ化するためのマクロを作成することができます。グラフィカルツール以外のツールを使用したい場合は、DHCP 構成テーブル管理用ユーティリティの dhtadm を使用してオプションおよびマクロを処理することができます。
Solaris DHCP では、オプションはクライアントに渡されるネットワーク情報です。また、DHCP の説明では、オプションはシンボルまたタグと呼ばれる場合もあります。オプションは数値コードおよびテキストラベルで定義され、値が割り当てられます。
DHCP プロトコルは、一般的に指定されているネットワークデータに対して多数の標準オプションを定義しています。それらオプションにはたとえば、Subnet、Router、Broadcast、NIS+dom、Hostname、および LeaseTim があります。標準オプションの一覧表を DHCP Manager のヘルプで見ることができます。標準オプションのキーワードを変更することはできませんが、使用しているネットワークに関連したオプションに値を割り当て、オプションと値のペアをマクロに含めることはできます。
標準オプションで指定できないデータに対しては、新しいオプションを作ることができます。作成するオプションは下記の 3 つのカテゴリのいずれかに分類されるものでなければなりません。
拡張 - 使用している DHCP サーバーの実装にはまだ含まれていない、最新の標準 DHCP オプションのために予約されています。使用したい標準オプションがわかっているが、DHCP サーバーをグレードアップしたくない場合に使用することができます。
サイト - 使用しているサイトに固有なオプションのために予約されています。システム管理者がこれらのオプションを作成します。
ベンダー - ハードウェアまたはベンダープラットホームなどの特定クラスのクライアントにだけ適用するオプションのために予約されています。Solaris DHCP の実装には、Solaris クライアント用の多数のベンダーオプションが含まれています。たとえば、オプション SrootIP4 は、ネットワークブートを行うクライアントがそのルートファイルシステムとして使用しなければならない、サーバーの IP アドレスを指定するために使用されます。
第 11 章「DHCP の管理」に、オプションを作成、変更、および削除する手順が説明されています。
Solaris DHCP サービスでは、マクロはネットワーク構成オプション、およびシステム管理者がこれらのオプションに割り当てた値の集まりです。マクロは、オプションをグループ化し、特定のクライアントまたはクライアントタイプにオプションをまとめて渡すために作成します。たとえば、特定のサブネット上のすべてのクライアントを対象としたマクロには、サブネットマスク、ルーター IP アドレス、ブロードキャストアドレス、NIS+ ドメイン、およびリース期間のためのオプションと値のペアを含めることができます。
DHCP サーバーがマクロを処理するときは、そのマクロで定義されているネットワークオプションと値をクライアントへの DHCP メッセージに含めます。マクロの中には、特定のタイプのクライアント向けにサーバーが自動的に処理するものがあります。
マクロが自動的に処理されるようにするためには、表 8-3 に示されているカテゴリのいずれかに従ってそのマスクに名前を付ける必要があります。
表 8-3 自動処理のためのマクロのカテゴリ
マクロのカテゴリ |
説明 |
---|---|
クライアントクラス |
このマクロ名は、クライアントマシンのタイプやオペレーティングシステムによって指定されたクライアントの種類と一致する。たとえば、サーバーのマクロの名前が SUNW.Ultra-1 の場合、SUNW.Ultra-1 マシンであるクライアントはいずれも自動的に SUNW.Ultra-1 マクロ内の値を受け取る |
ネットワークアドレス |
このマクロ名は、DHCP が管理するネットワーク IP アドレスと一致する。たとえば、サーバーのマクロの名前が 125.53.224.0 の場合、125.53.224.0 ネットワークに接続されているクライアントはいずれも自動的に 125.53.224.0 マクロ内の値を受け取る |
クライアント ID |
このマクロ名は、通常は Ethernet または MAC アドレスから導出された、クライアント用の一意の識別子と一致する。たとえば、サーバーのマクロ名が 08002011DF32 の場合、(Ethernet アドレス 8:0:20:11:DF:32 から導出される) 08002011DF32 の ID を持つクライアントは、08002011DF32 の名前を持ったマクロ内の値を自動的に受け取る |
表 8-3 に示されているカテゴリの 1 つを使用しない名前を持つマクロは、下記のいずれかの条件が満たされた場合にのみ処理することができます。
マクロが IP アドレスに割り当てられる場合
マクロが、自動的に処理される他のマクロに含まれる場合
マクロが、IP アドレスに割り当てられる他のマクロに含まれる場合
サーバーを設定する場合、デフォルトでは、そのサーバーの名前と一致する名前の付いたマクロが作られます。このサーバーマクロは、自動処理が行われる名称タイプのいずれとも一致しないため、いずれのクライアントに対しても自動的に処理されません。後でサーバー上で IP アドレスを作成する場合、その IP アドレスは、サーバーのデフォルトのマクロを使用するように割り当てられます。
DHCP クライアントが DHCP サービスを要求するときは、DHCP サーバーはどのマクロがそのクライアントに一致するかを決定します。このサーバーは、処理の順序を決めるためのマクロのカテゴリを使用して、より一般的なものから特定のものへと、順にマクロを処理します。マクロは下記の順序で処理されます。
クライアントクラスマクロ - 最も一般的なカテゴリ
ネットワークアドレスマクロ - クライアントクラスよりは特定なマクロ
IP アドレスに割り当てられたマクロ - ネットワークアドレスよりは特定なマクロ
クライアント ID マクロ - 最も特定なマクロ
他のマクロに含まれているマクロはそのマクロの一部として処理されます。
複数のマクロに同じオプションが含まれている場合は、最も特定されたカテゴリのマクロ内のオプションに設定されている値が一番最後に処理されるため、その値が使用されます。たとえば、ネットワークアドレスに、24 時間の値を持つリース期間オプションが入っていて、クライアント ID マクロに 8 時間の値を持つリース期間オプションが入っている場合は、そのクライアントは 8 時間のリース期間を受け取ります。
「クライアント」という用語は、ネットワーク上でクライアントとしての役割を実行している物理的なマシンについて言及するために使用される場合がありますが、ここで説明している DHCP クライアントはソフトウェアエンティティです。Solaris DHCP クライアントは、DHCP サーバーからそのネットワーク構成を受け取るように構成されているマシン上の Solaris オペレーティング環境で動作するデーモン (dhcpagent) です。他のベンダーの DHCP クライアントも Solaris DHCP サーバーのサービスを使用することができます。ただし、この節では Solaris DHCP クライアントについてのみ説明します。
この節の説明では 1 つのネットワークインタフェースを想定していることに注意してください。「複数のネットワークインタフェースを持つ DHCP クライアント」の項では 2 つ以上のネットワークインタフェースを備えたホストに関する重要な問題について説明しています。
Solaris DHCP クライアントは、Solaris オペレーティング環境のインストール時に、DHCP を使用してネットワークインタフェースを構成するように指定すると、システム上にインストールされ使用可能な状態になります。DHCP を使用するために Solaris クライアント上で行う作業はこれだけです。
すでに Solaris 環境を稼動しているマシンで、DHCP を使用してネットワークインタフェースを構成する場合は、「Solaris DHCP クライアントの設定および設定解除」を参照してください。
dhcpagent デーモンは、システムのブートに関与する他のプロセスが必要とする構成情報を取得します。このため、dhcpagent はシステム起動スクリプトによってブート処理の初期段階で起動されます。ブートは、ネットワーク構成情報が取得されるまで遅延されることになります。
/etc/dhcp.interface ファイル (たとえば、Sun Enterprise UltraTM マシン上の /etc/dhcp.hme0) が存在すると、起動スクリプトは、DHCP が指定されたインタフェース上で使用されることを認識します。dhcp.interface ファイルを検出すると、起動スクリプトは dhcpagent を起動します。
起動後、dhcpagent はネットワークインタフェースの設定を行う指示を受信するまで待機します。起動スクリプトは ifconfig interface dhcp start コマンドを発行し、「DHCP の動作」で説明しているように、dhcpagent に DHCP を起動するよう指示します。dhcp.interface ファイル内にコマンドが含まれている場合、それらのコマンドは ifconfig の dhcp start オプションに追加されます。dhcp とで使用されるオプションについては、ifconfig(1M) のマニュアルページを参照してください。
DHCP サーバーから情報パケットが取得されると、dhcpagent はネットワークインタフェースの設定、立ち上げを行い、そのインタフェースを IP アドレスのリース期間中制御します。dhcpagent は、メモリー内に保持された内部テーブル中に設定データを保持します。システム起動スクリプトは dhcpinfo コマンドを使用して dhcpagent のテーブルから設定オプションの値を抽出します。それらの値はシステムの設定に使用され、ネットワークの一部を形成します。
エージェントは、設定された時間が経過するまで (通常はリース期間の半分まで) そのまま待機し、DHCP サーバーにリースの延長を要求します。dhcpagent はそのインタフェースの停止、または IP アドレスの変更を検出した場合、ifconfig からの指示があるまでそのインタフェースの制御は行いません。また、dhcpagent は、そのインタフェースが適切に動作していること、および IP アドレスに変更がないことを検出すると、リースの更新要求をサーバーに送信します。リースが更新できない場合、dhcpagent はリース期間の満了時にそのインタフェースを停止させます。
Solaris DHCP クライアントは、通常のシステム動作時には管理を必要としません。 Solaris DHCP クライアントはシステムブート時に自動的に起動し、リースについてサーバーとネゴシエートし、システムの終了時に停止します。dhcpagent デーモンを手動で起動または停止することはできません。しかし必要であれば、クライアントマシン上でスーパーユーザーとして ifconfig コマンドを使用して、クライアントのネットワークインタフェースの管理に関与することができます。
ifconfig コマンドを使用すると、次のような操作が行えます。
DHCP クライアントの起動 - ifconfig interface dhcp start コマンドは、 IP アドレスと設定オプションの新規セットを取得するために、DHCP クライアントと DHCP サーバーの間の相互動作を開始します。このコマンドは、サーバー上のオプションの変更、たとえば、IP アドレスの追加、サブネットマスクの変更などを行い、変更結果を直ちにクライアントに反映させたい場合に便利です。
ネットワーク構成情報だけの要求 - ifconfig interface dhcp inform コマンドは、dhcpagent が IP アドレスを除くネットワーク構成パラメータを要求するようにします。このコマンドは、ネットワークインタフェースが有効な IP アドレスを持っているが、クライアントシステムが更新されたネットワークオプションを必要としているような場合に便利です。たとえば、 IP アドレスの管理には DHCP を使用しないが、ネットワーク上のホストの設定に DHCP を使用する場合が考えられます。
リースの延長要求 - ifconfig interface dhcp extend コマンドは、dhcpagent がリース期間の更新を要求するようにします。この操作は自動的に実行されますが、リース期間を変更し、クライアントが新しいリース期間をただちに使用するようにしたい場合には、次のリース更新を待つよりも、手動でこのコマンドを実行するようにします。
IP アドレスの解放 - ifconfig interface dhcp release コマンドは、dhcpagent がネットワークインタフェースで使用されている IP アドレスを放棄するようにします。この操作はリース満了時に自動的に実行されます。リース期間が長すぎ、ネットワークインタフェースを長期間停止させる必要がある場合、あるいは、ネットワークからシステムを切り離す場合は、このコマンドを発行するようにします。
IP アドレスの停止 - ifconfig interface dhcp drop コマンドは、dhcpagent がDCHP サーバーへの通知を行なわず、ネットワークインタフェースを停止するようにします。この操作により、クライアントは次回リブート時に同じ IP アドレスを使用することができます。
ネットワークインタフェースの上での ping の実行 - ifconfig interface dhcp ping コマンドは、インタフェースが DHCP の制御下にあるかどうかをテストします。
ネットワークインタフェースの DHCP 構成状態の表示 - ifconfig interface dhcp status コマンドは、DHCP クライアントの現在の状態を表示します。表示される情報には、IP アドレスとクライアントの結合状態、送信、受信、および拒否された要求数、一次インタフェースかどうかを示すフラグ、リースが獲得された時刻、満了した時刻、およびリースが更新された時刻と、更新予定時刻が含まれます。表示例を以下に示します。
# ifconfig hme0 dhcp status Interface State Sent Recv Declined Flags hme0 BOUND 1 1 0 [PRIMARY] (Began, Expires, Renew) = (07/15/1999 15:27, 07/17/1999 13:31, 07/16/1999 15:24) |
クライアントシステム上の /etc/default/dhcpagent ファイルには、dhcpagent のための設定可能パラメータが含まれています。テキストエディタを使用して、クライアントの動作に影響を与えるパラメータを変更することができます。このファイルにはわかりやすい注釈が付けられているので、パラメータの詳細についてはファイル内の注釈をお読みください。
DHCP を実行しているシステムが正常に停止するときは、dhcpagent デーモンが現在の構成情報を /etc/dhcp/interface.dhc ファイルに書き込みます。この場合、リースは開放されるのではなく放棄されるので、DHCP サーバーは、IP アドレスが実際には使用されていないことを認識できません。
システムのリブート時にリースがまだ有効である場合、リブート前に使用していたものと同じ IP アドレスとネットワーク構成情報を使用するために、DHCP クライアントは簡略化された要求を送信します。DHCP サーバーがこれを許可した場合、クライアントはシステムの停止時にディスクに書き込んだ情報を使用することができます。サーバーがこの情報の使用を許可しない場合には、クライアントは前述の DHCP プロトコルシークエンスを開始し、新しいネットワーク構成情報を取得します。
DHCP クライアントデーモンは、それぞれが独自の IP アドレスとリース期間を持つ、複数のインタフェースを、1 つのシステム上で同時に管理することができます。DHCP に対して複数のネットワークインタフェースが設定されている場合、クライアントはそれらのインタフェースを設定するために個別のリクエストを発行し、各インタフェースに対して個別のネットワーク構成オプションのセットを維持します。この場合、パラメータは個別に保存されますが、パラメータの中にはその性質上広域的なものがあり、それらは特定のネットワークインタフェースではなく、システム全体に適用されます。ホスト名、NIS ドメイン名、および時間帯のようなオプションが広域パラメータであり、これらのパラメータは各インタフェースについて同じ値を取ります。ただし、DHCP 管理者が入力した情報に誤りがある場合は、上記の事項には当てはまりません。広域パラメータの問い合わせに対して応答が 1 つだけ返されるようにするために、一次ネットワークインタフェース用のパラメータだけが要求されます。一次インタフェースとして扱うインタフェースについては、/etc/dhcp.interface ファイルに「primary」という語を挿入することができます。