TCP/IP とデータ通信

第 16 章 DHCP の管理

この章では、DHCP を管理する方法、すなわち DHCP を実行するネットワークを設定する方法、リース時間ポリシーを決定する方法、BOOTP 中継エージェントを追加する方法について説明します。また、DHCP が使用するデータベースの種類と、特定のデータベース内でマクロを作成する方法についても説明します。さらに、DHCP に実装されたオプション、DHCP に追加可能なオプションについても説明します。

情報を収集してから DHCP のサービスを設定

DHCP を実行するネットワークを設定する場合は、まず既存のネットワークについての情報を収集する必要があります。必要な情報は、ネットワークトポロジについての情報 (ルーター、スイッチ、その他のネットワークなど) とサービスについての情報 (ネームサービス、ファイルおよび出力サービスなど) です。

リモートネットワーク上のクライアント (すなわち、DHCP サービスを配置する予定のネットワークとは別のネットワーク上のクライアント) をサポートすることを予定している場合は、リモートネットワークのサブネットマスクも収集する必要があります (ただし、リモートネットワークがサブネット化されている場合)。DHCP サービスが使用する netmasks テーブルが、この情報を用いて変更済みであることを確認してください。さらに、リモートネットワーク上のルーターの IP アドレスを収集するか、またはルーター検出機能を使用するようにリモートネットワーク上のクライアントを構成する必要があります。

必要な情報をすべて取得したら、ネットワーク内を移動するデータを NIS+ とファイルのどちらに格納するかを決める必要があります。複数サービス環境または事業用の場合は、NIS+ が適しています。単一サーバーまたは小規模な環境の場合は、ファイルが適しています。情報の収集が終了したら、dhcpconfig(1M) を実行してリモートネットワークを構成します。

DHCP データ用のデータストアの選択

DHCP ネームサービスの設定では、テーブルを格納する際とホスト情報にアクセスする際に DHCP サーバーが使用するデータストア資源を決定します。dhcpconfig スクリプトは、/etc/default/dhcp ファイル内に DHCP サービスを設定します。実行時デーモンと管理ユーティリティはこのファイルを使用して、処理の際の問い合わせ先のネームサービスを決定します。

データストアのサービスを選択する方法

まず最初に、dhcpconfig コマンドにより、サーバーが現在使用しているのが NIS+ とファイルのどちらであるのかを判定します。システムが NIS+ を使用中である場合は、nisplusEnter data store プロンプトにおけるデフォルト値です。システムがファイルを使用中である場合は files がデフォルト値です。

NIS+ を選択して、サーバーが NIS + を実行していない場合は、警告メッセージと NIS+ の設定方法が表示されます。dhcpconfig スクリプトの処理が継続します (ただし、次に DHCP テーブルを作成する際におそらくエラーが発生します)。

複数のサーバーを持つ環境、または事業用の環境の場合は、NIS+ を使用する必要があります。NIS+ を使用すれば、データをサーバー間で共有することができます。単一サーバーのみの場合は、NFS を使用してデータの共有を行う場合を除いて、ファイルを使用することができます。

初期 DHCP テーブルの作成

dhcpconfig スクリプトにより、表 16-1 に示すように、選択したデータストア内に以下の空 DHCP テーブルを作成します。

表 16-1 dhcpconfig スクリプトにより作成するテーブル

dhcptab

DHCP 構成情報テーブル 

dhcp_network

DHCP クライアントのマップテーブル、DHCP サーバーのあるネットワークごとに 1 つ 

DHCP テーブル

DHCP は、2 種類のデータベース、すなわちネットワークテーブルと dhcptab 構成マクロテーブルとを使用します。これらのデータベースは、NIS+ を使用している場合は NIS+ テーブルであり、NIS+ を使用していない場合はファイルです。

DHCP ネットワークテーブル

DHCP ネットワークテーブルは、IP アドレスの割り当てに関連する情報を格納しています。ネットワークごとに別個のネットワークテーブルがあります。DHCP において dhcp_network テーブルと呼ばれるテーブルの名前は、サービスを提供しているネットワークの IP アドレスから派生しています。たとえば、ネットワーク 120.146.5.0 のネットワークテーブルは、IP アドレス指定の中のピリオドを下線に置換して 120_146_5_0 となります。

DHCP 内の各サブネットには、サブネット内のクライアントのエントリを格納している dhcp_network テーブルがあります。ブートしたクライアントからのパラメータを求める要求に DHCP サーバーが応答すると、そのクライアントの dhcp_network エントリとして情報が記録されます。このテーブルには、クライアントの IP アドレスと、dhcptab テーブルへのポインタとが含まれています。

ネットワークテーブルは、以下の固有情報を格納しています。

ネットワークテーブルは、特定のネットワークに対して DHCP サーバーが割り当てることができる IP アドレスのリストとして機能します。各ネットワークには独自のネットワークテーブルがあります。ネットワークテーブルの基本要素は IP アドレスのリストです。テーブル内のその他の要素は、すべて IP アドレスとの関係において意味を持ちます。たとえば、クライアント ID は特定の IP アドレスが現在割り当てられているクライアントを特定します。IP アドレスが未割り当てである場合、その IP アドレスのクライアント ID は 0 です。有効期限も 0 です。IP アドレスが割り当て済みである場合は、クライアント ID とリースの有効期限が記入されています。

特定の実装状態では、クライアント ID はネットワークの種類を表す接頭辞を付けてクライアントマシンのハードウェアアドレスになります。たとえば、イ−サネットアドレスを持つクライアントのクライアント ID が 0102608BA614C1 である場合は、01 によりクライアントがイ−サネットネットワークであることが示されます。DHCP の実装状態によっては、その他の識別子 (DNS 名やプロパティ番号など) を使用する場合があります。重要なことは、クライアント ID はネットワーク内で一意である必要があることです。

IP アドレスが割り当て済みの場合、その IP アドレスのリースの有効期限は特定の日付と時刻に設定されるか、または "No Expiration" とマークされます。

lease フラグと dhcptab 構成マクロの名前は、IP アドレスがクライアントに割り当てられているかどうかにかかわらず同じです。クライアントが特定の IP アドレスを取得すると、lease フラグにより指定されたリースの種類と、プロパティ名により指定された構成も取得します。lease フラグは、IP アドレスを割り当てることができる条件を表示します。pntadm コマンドにより、dhcp_network テーブルを管理することができます。例 16-1pntadm の出力例を示します。


例 16-1 pntadm -P 129.146.86.0 の出力例

Client ID       Flags  Client IP        Server IP       Lease         Macro     Comment
                                                        Explanation

010800207CBA2C   04    129.146.86.153   129.146.86.181   Zero         mrcoffee
0108002022519C   00    129.146.86.205   129.146.86.181   7/3/1996     inet11
01080011043B65   08    129.146.86.29    129.146.86.181   Zero         inet11
0100A024A9BCEE   08    129.146.86.198   129.146.86.181   7/22/1996    inet11 	
0100A024A791DE   00    129.146.86.200   129.146.86.181   8/4/1996     inet11 
0100A02463D6EC   00    129.146.86.199   129.146.86.181   8/1/1996     inet11 
0100A024636AB7   00    129.146.86.201   129.146.86.181   8/3/1996     inet11 
010080C72EE4A3   00    129.146.86.206   129.146.86.181   7/5/1996     inet11 
010020AF4A3B31   0     129.146.86.214   129.146.86.181   Zero         hobbs
00               00    129.146.86.202   129.146.86.181   Zero         inet11	

dhcptab 構成テーブル

dhcptab テーブルは、クライアントの構成に関連する情報を格納しています。このテーブルは、ネットワーククライアントを構成するのに必要な全情報を格納する、一連のマクロ定義として編成されます。クライアントは、ネットワークテーブルから IP アドレスを割り当てられる際に構成を取得します。IP アドレスに関連付けられたマクロ名は、dhcptab テーブル内のマクロ名に対応します。クライアントは、ネットワークテーブルから IP アドレスを取得した後に、dhcptab テーブルからネットワーク構成を取得します。

DHCP サーバーの初期構成の際に、構成済みネットワークごとに dhcptab テーブルとマクロが作成されます。各マクロには、ネットワークに固有の情報、すなわちサブネットマスク、ネットワークブロードキャスト通信アドレス、IP パケット生存時間、データグラムの最大サイズ、デフォルトのルーター、静的送信経路、DNS ドメイン、NIS ドメイン、DNS サーバー、NIS サーバーのうち、サーバーの構成時に使用可能なものが格納されます。

マクロ内に格納されている情報を変更することによって、クライアントマシンがネットワークを利用する方法を制御することができます。たとえば、特定のクライアントマシンが使用するマクロの名前を変更すると、そのマシンのネットワーク構成が変更されます。別の例としては、あるマクロ内の 1 つのオプションを変更することにより、そのマクロセットを使用する全マシンの動作が変更されます。IP アドレスを管理する能力は、DHCP の主要機能の 1 つです。dhtadm コマンドにより、dhcptab サーバー構成テーブルを管理します。例 16-2dhtadm の出力例を示します。


例 16-2 dhtadm -P の出力例

Name          Type    Value

mrcoffee      Macro   :Subnet=255.255.255.0:Router=129.146.86.1:Broadcst=129.146.86.255: ¥
                      :BootSrvA=129.146.86.175:BootFile="/export/root/JavaDesktop/kona": ¥
                      :NISservs=129.146.86.33:NISdmain=sunsoft.eng.sun.com: ¥
                      :DNSdmain=Eng.Sun.COM: ¥
                      :DNSserv=129.146.1.151 129.146.1.152 129.144.1.57 129.144.134.19: ¥ 
                      :Include=Locale: ¥
                      :Timeserv=129.144.1.3:LeaseTim=3600:T1Time=1800: ¥
                      :T2Time=3060:	

Locale        Macro   :UTCoffst=25200:SN_TZ="PST8PDT":

inet11        Macro   :Include=Locale:Timeserv=129.146.86.181:LeaseTim=259200: ¥
                      :DNSdmain=Eng.Sun.COM: ¥
                      :DNSserv=129.146.1.151 129.146.1.152 129.144.1.57 129.144.134.19:

hobbs         Macro   :Subnet=255.255.255.0:Router=129.146.86.1:Broadcst=129.146.86.255: ¥
                      :BootSrvA=129.146.86.32:BootFile="819256D6.PREP":

129.146.89.0  Macro   :Subnet=255.255.255.0:Router=129.146.89.1:Broadcst=129.146.89.255: ¥
                      :NISdmain=sunsoft.eng.sun.com:NISservs=129.146.89.33: ¥
                      :NetBNms=129.146.171.31:NetBNdT=8:

129.146.88.0  Macro   :Subnet=255.255.255.0:Router=129.146.88.1:Broadcst=129.146.88.255: ¥
                      :NISdmain=sunsoft.eng.sun.com:NISservs=129.146.88.33: ¥
                      :NetBNms=129.146.171.31:NetBNdT=8:

129.146.87.0  Macro   :Subnet=255.255.255.0:Router=129.146.87.1:Broadcst=129.146.87.255: ¥
                      :NISdmain=sunsoft.eng.sun.com:NISservs=129.146.87.33: 
                      :NetBNms=129.146.171.31:NetBNdT=8:	

129.146.86.0  Macro   :Broadcst=129.146.86.255:Subnet=255.255.255.0:MTU=1500: ¥
                      :Router=129.146.86.1:NISdmain=sunsoft.eng.sun.com: ¥
                      :NISservs=129.146.86.33:NetBNms=129.146.171.31:NetBNdT=8: ¥
                      :BootSrvA=129.146.86.32:

129.146.85.0  Macro   :Subnet=255.255.255.0:Router=129.146.85.1:Broadcst=129.146.85.255: ¥
                      :NISdmain=sunsoft.eng.sun.com:NISservs=129.146.85.33: ¥
                      :NetBNms=129.146.171.31:NetBNdT=8:

129.146.84.0  Macro   :Subnet=255.255.255.0:Router=129.146.84.1:Broadcst=129.146.84.255: ¥
                      :NISdmain=sunsoft.eng.sun.com:NISservs=129.146.84.33: ¥
                      :NetBNms=129.146.171.31:NetBNdT=8:

129.146.83.0  Macro   :Subnet=255.255.255.0:Router=129.146.83.1:Broadcst=129.146.83.255: ¥
                      :NISdmain=sunsoft.eng.sun.com: ¥
                      :NISservs=129.146.83.33:NetBNms=129.146.171.31:NetBNdT=8:

129.146.82.0  Macro   :Subnet=255.255.255.0:Router=129.146.82.1:Broadcst=129.146.82.255: ¥
                      :NISdmain=sunsoft.eng.sun.com:NISservs=129.146.82.33: ¥
                      :NetBNms=129.146.171.31:NetBNdT=8:

129.146.81.0  Macro   :Subnet=255.255.255.0:Router=129.146.81.1:Broadcst=129.146.81.255: ¥
                      :NISdmain=sunsoft.eng.sun.com:NISservs=129.146.81.33: ¥
                      :NetBNms=129.146.171.31:NetBNdT=8:

SN_TZ         Symbol  Vendor=SUNW,13,ASCII,1,0

DHCP の各サブネットの構成

この節では、dhcpconfig を使用し、各サブネットについての以下の 3 つの質問に対する答えをもとにして、サブネットを構成する方法について説明します。

DHCP の各サブネットを構成する方法

dhcpconfig スクリプトにより、サーバーシステム上に構成するサブネットごとに、dhcp_network テーブルと呼ばれるテーブルを作成します。テーブル名は IP アドレスと同じですが、小数点は下線に置換されます。たとえば、サブネット 129.148.5.0dhcp_network テーブルは、DHCP が使用しているネームサービス内では 129_148_5_0 です。これは、NIS+ の場合は org_dir オブジェクト内のテーブルであり、ファイルの場合は /var/dhcp ディレクトリ内のファイルです。

DHCP が管理しているクライアントシステムごとに、dhcp_network テーブル (クライアントマシンが接続されているサブネットに対応するテーブル) 内にエントリが 1 つあります。エントリが永久である場合もありますが、この場合は IP アドレスが永久的にマシンに割り当てられています。あるいはエントリが動的である場合もありますが、この場合はクライアントが最初に構成される際に DHCP サーバーが IP アドレスを割り当てて、さらに IP アドレスを使用できる時間の長さを指定したリースを与えます。この段階で設定するのは、これらの動的クライアントです。永久クライアントは、DHCP の環境をすべて構成した後で、pntadm を用いて設定することができます。

DHCP サービスデーモンの開始

この節では、dhcpconfig スクリプトが実行する、以下の 3 つの機能について説明します。

start/stop スクリプトの名前は dhcp であり、リンクは S34dhcp (デーモンを開始する場合) と K34dhcp (デーモンを停止する場合) です。このスクリプトは、デーモンプロセス実行用の標準 SVR4 手続きをブート時に実行します。

デーモンプロセス in.dhcpd を開始します。in.dhcpd デーモンは DHCP サーバープロセスであり、クライアントの要求に応答して、dhcptab テーブル内に確立済みのネットワーク構成を転送します。

リース時間ポリシー

DHCP は IP アドレスを動的に割り当てるメカニズムを提供します。IP アドレスにはリース期間が伴っており、永久または一時に設定することができます。ユーザーサイトのポリシーとして、一時 IP アドレスと永久 IP アドレスの数を決定し、さらに一時 IP アドレスのリース期間を決定する必要があります。

DHCP サービスを最大限利用するには、DHCP に IP アドレスの割り当てを動的に管理させることが最善です。DHCP を用いた場合には、クライアントとサーバーが特定の期間に渡る IP アドレス設定の貸し出し (リース時間と呼ぶ) についてネゴシエーションを行います。dhcptab 内の特定のマクロ定義の LeaseTim シンボルと LeaseNeg シンボルを使用することによって、サーバー、ネットワーク、クライアントのベンダークラス、個別のクライアント IP アドレスのいずれかをベースにしてリース時間ポリシーを設定することができます。

LeaseNeg シンボルと LeaseTim シンボルを使用すると、ユーザーサイトのポリシーを設定することができます。LeaseTim は相対的な時間であり、24時間、2 時間、または 10 時間などとなります。クライアントに IP アドレスが割り当てられると (または、すでに割り当てられている IP アドレスのリースについて再度ネゴシエーションを行うと)、クライアントが DHCP の回答を受け取った絶対時間に LeaseTim の値が追加されます。絶対時間は現在時刻であり、たとえば 1996 年 9 月 27 日です。絶対的な現在時刻に LeaseTim の値を加算した時刻は、IP アドレスについてのクライアントのリースが期限切れとなる絶対時間として、クライアントの dhcp_network レコード内に格納されます。

LeaseTim シンボルの設定は、クライアントに対して許可することができる、リースの最大時間間隔を定義します。一般的にはこの値を相対的に小さな値にしておく必要がありますが、その理由は、クライアントとサーバーの同期を維持するため、使用されていない IP アドレスを遅滞なく回収するため、さらにネットワークの再番号付けをより円滑に行うためです。

ただし、DHCP サーバーが使用不可能になった場合に DHCP サービスを実行しているマシン (複数可) が修復されるまでの間、クライアントが機能を継続することができる程度には大きい値である必要があります。1 〜 3 日が最善の LeaseTim ポリシーとなります。所定の環境において適切に動作する値を選択してください。

LeaseNeg シンボルは、リースの期限が切れる前にクライアントがサーバーとリースについて再度ネゴシエーションを行うことを可能とするかどうかを決定します。このシンボルが存在する場合、クライアントはリースについて再度ネゴシエーションを行うことができます。LeaseNeg が存在する場合、クライアントは既存の接続に対してリース関連の割り込みを行わないでネットワーク上で動作することができます。

IP アドレスよりマシンの方が数が多く、したがって IP アドレスの使用に時間制限を実施したい環境では、LeaseNeg を省略する方が実用的です。このような場合の例として、コンピュータサイエンスの教室内のマシンに対して時間制限を実施する場合があります。LeaseTim と同様に、LeaseNegdhcptab の各種マクロ内で使用することができます。詳細は、dhcptab(4) および dhcp_network(4) を参照してください。

サービス (たとえば、メールや Web ページ) をエクスポートするマシンは IP アドレスを保持する必要がありますが、当該ノードが使用する IP アドレスがもはや使用されていない場合に (おそらくは廃棄された場合に)、その事実を検出可能であることを希望する場合もあります。この希望は、手動で割り当てられた旨を (必要に応じて割り当て者も) 当該ノードの dhcp_network レコードにマークし、そのノードのフラグフィールドを MANUAL に設定することによって実現することができます。たとえば、ホスト名が gandalf でネットワークが 10.50.0.0 である場合は、pntadm gandalf -f MANUAL 10.50.0.0 と入力します。

永久リースで IP アドレスを割り当てることもできますが、DHCP サービスを使用して自動的に IP アドレスを回収することはできません。したがって、永久 IP アドレスの数は最小限の管理可能な数に抑えてください。

DHCP サービスは、このフラグフィールドを使用して、dhcp_network レコードエントリの期限が切れて回収可能となる時点を判定します。この値は、pntadm コマンドの e オプションを使用することによって変更できます。このコマンドを使用すると、クライアントのリースの有効期限を過去の時間に設定することができますが、クライアントとそのクライアントのユーザー (複数可) に悪影響を及ぼすことを避けるために、未来の時間にのみ設定してください。

DHCP サービスが動的に IP アドレスを割り当てるか、または既存の有効期限について再度ネゴシエーションを行うたびに、dhcp_network テーブル内のこのフィールドが更新されます。

lease フラグは IP アドレスを割り当てる条件を表します。フラグの設定は、以下を結合したものになります。

0 (Dynamic)

IP アドレスのこのリースには有効期限があります。リースが期限切れとなった場合は、更新が可能である旨がサイトのポリシーに指示してあれば更新することができます。現在のクライアントがリースを更新しない場合、その IP アドレスは別のクライアントに割り当てることができます。フラグが 0 に設定されている場合は、リース時間を変更することができます。

1 (Permanent)

この IP アドレスのリースは永久的に割り当てられており、クライアントがリース時間を変更することはできません。ただし、IP アドレスを使用しているクライアントがその IP アドレスの割り当てを解除することは可能です。割り当て解除された IP アドレスは、別のクライアントに割り当てることができます。

2 (Manual)

この IP アドレスは特定のクライアントのマシンに割り当てられます。クライアントが割り当てを解除することはできません。フラグが 2 に設定されている限り、その IP アドレスを再度割り当てることができるのは、管理者が手動で変更した場合だけです。

4 (Unusable)

この IP アドレスは使用できません。フラグを 4 に設定することにより、IP アドレスの割り当てを防止することができます。DHCP サーバーは、IP アドレスの配置を試行してそれがすでに使用中であることがわかった場合に、その IP アドレスを使用不可とマークします。DHCP サーバーは、IP アドレスを割り当てる前に、通常は ping コマンドを用いてすでに使用中であるかどうかを確認します。この設定は、dhcpconfig 内に構成可能です。

フラグが設定の結合であることがあります。たとえば、フラグが 3 に設定されている場合は、12 を結合したものです。つまり、この設定は永久かつ手動という設定であり、この IP アドレスのリースは永久リースで、かつ管理者が割り当てたリースになります。

BOOTP 中継エージェントの設定

最初に、組み込み中継エージェントがルーター (単数の場合も複数の場合もあります) にあるかどうかを判定します。組み込み中継エージェントがルーターにある場合は、マニュアルを読んで中継エージェントの使用法を理解してください。組み込み中継エージェントがルーターにない場合は、クライアントネットワーク上にある、中継エージェントとして機能させる Solaris マシンを選択します。マシンに SUNWdhcsrSUNWdhcsu をインストールしてから、dhcpconfig を実行して Configure BOOTP relay agent を選択します。

希望の BOOTP/DHCP 要求送信先の BOOTP/DHCP サーバーの IP アドレス、またはホスト名を入力します。

標準 DHCP オプション

Solaris DHCP サーバーでは、標準 DHCP オプションがすべて導入されます。これらのオプションには、以下のネットワーク情報が含まれています。

ベンダーオプション

ベンダーオプションは、DHCP クライアントソフトウェアのベンダーが定義する DHCP オプションです。クライアントは、構成を求める要求を送る際にベンダーのクライアントクラスを組み込みます。dhcptab データベース内にこのクライアントクラスと一致するクライアントクラスがある場合には、そのクラスに対して指定されているオプションとその他の構成オプションがクライアントに送信されます。Solaris DHCP サーバーを構成して、任意の DHCP クライアントベンダーのオプションをサポートすることができます。

ベンダーオプションとサイトオプションの追加

追加のベンダーオプションまたはサイトオプションを作成するには、以下を定義する必要があります。

サイトオプションはサイトに固有であるため、必要な任意のオプションを作成できますが、ベンダーオプションの場合は、特定のクライアントベンダーに対して必要なオプションだけ作成できます。オプションは定義済みのものもありますが、作成する必要があるものもあります。作成する場合には、特定のベンダーに適用するベンダーオプションのリストをサーバー上に作成することが必要な場合があります。リストの例はクライアントのベンダーが提供します。

マクロ定義の作成

dhcptab テーブルのマクロを作成する場合は、関連する標準オプション、ベンダーオプション、サイトオプションをすべて指定する必要があります。使用可能なオプションをすべて指定する必要はありません。指定する数は、ネットワークの構成に応じて異なります。

IP アドレスのリース

IP アドレスのリースは、デフォルトでは一時として割り当てられます。一時リースは、ユーザーとユーザーのマシンが頻繁にサブネットを変更する場合、またはシステムへの出入りが激しい場合に便利です。

サイトごとに、当該サイトでの一時リースを更新可能とするかどうかを指定することができます。このサイトのポリシーは、LeaseNeg シンボルを用いてプロパティテーブル内に設定することができます。このシンボルを省略した場合は、リースが期限切れとなった際にクライアントがリースについて再度ネゴシエーションを行うことはできません。IP アドレスが期限切れとなった際にクライアントがその IP アドレスを更新しない場合、その IP アドレスは再使用することができます。

カスタマイズ例

ネットワーク 126.147.100.0 の NIS サーバーの値を変更する場合は、以下のようにします。

  1. マクロ 129.147.100.0 を以下のように編集します。


    dhtadm -M -m 129.147.100.0 -e `NISserv = 129.147.100.1 129.147.100.2'
    

  2. 以下のように入力します。


    /etc/init.d/dhcp stop
    

  3. 以下のように入力します。


    /etc/init.d/dhcp start
    

    あるいは、23 の代わりに、in.dhcpd に対して -t オプションを使用します。

    10-15 のアドレスを 129.147.100.0 へ追加するには、以下のようにします。


    for addr in 10 11 12 13 14 15  
    do  
    	pntadm -A 129.147.100.$addr -m server -h hundred-$addr 129.147.100.0
    done

タイムゾーン SN_TZ のシンボル定義を追加するには、以下のようにします。

  1. 以下のように入力します。


    dhtadm -A -s SN_TZ -d  'Vendor="SUNW.PCW.LAN SUNW.Solaris", 13, ASCII, 1, 0'
    

  2. 以下のように入力します。


    dhtadm -M -m Locale -e `:SN_TZ = "EST5EDT4":'
    

  3. 以下のように入力します。


    /etc/init.d/dhcp stop
    

  4. 以下のように入力します。


    /etc/init.d/dhcp start
    
    あるいは、-t オプションを使用します。

jurassic マクロから Timeserv 値を削除するには、以下のようにします。

  1. 以下のように入力します。


    dhtadm -D -m jurassic -e `Timeserv=`
    

  2. 以下のように入力します。


    /etc/init.d/dhcp stop
    

  3. 以下のように入力します。


    /etc/init.d/dhcp start
    
    あるいは、-t オプションを使用します。

常にホスト名をサーバー jurassic のクライアントに戻すには、以下のようにします。

  1. 以下のように入力します。


    dhtadm -M -m jurassic -e `Hostname= _NULL_VALUE_'
    

  2. 以下のように入力します。


    /etc/initd/dhcp stop
    

  3. 以下のように入力します。


    /etc/init.d/dhcp start
    
    あるいは、-t オプションを使用します。

canoepoint という名前のホストと 1 つの IP アドレスとの間の、ホスト名 〜 IP アドレス間関連付けを維持することが重要な場合は、peds ネットワーク上の canoepoint エントリを MANUAL とマークします。

  1. 以下のように入力します。


    pntadm -M canoepoint -f MANUAL peds
    

    あるいは

  2. 以下のように入力します。


    pntadm -M canoepoint -f 02 peds
    

129.147.100.87 を BOOTP かつ永久とマークするには、以下のようにします。

  1. 以下のように入力します。


    pntadm -M 129.147.100.87  -f `BOOTP + PERMANENT' 129.147.100.0
    

    あるいは

  2. 以下のように入力します。


    pntadm -M 129.147.100.87 -f 09 129.147.100.0
    

保守

このシェルスクリプトは最初に、使用不可とマークされている IP アドレスをすべて検査して、使用されていないかどうかを確認します。使用されていない場合は、このスクリプトが IP アドレスを回収します。

#!/bin/ksh
# This shell script reclaims addresses which were marked as unusable, after
# first verifying that they're no longer in use.

if [ ${#} -eq 0 ]
then
     echo "reclaim <network> ..." >&2
     exit 1
fi

while [ ${#} -ne 0 ]
do
     pntadm -P ${1} | awk ' $2 == 04 { printf("%s %s¥n", $1, $3); }' |
     while read cid addr
     do
        if [ ${?} -ne 0 ]
        then
             pntadm -M ${addr} -i 00 -f DYNAMIC -e 0 ${1}
             if [ ${?} -eq 0 ]
             then
                 echo "${addr} has been reclaimed from client ${cid}."
             fi
             else
                 echo "${addr} is in use!" >&2
             fi
     done
     shift
done
exit 0

Solaris DHCP クライアントを有効にする方法

デフォルトでは、Solaris DHCP クライアントは無効にされています。有効にするには、DHCP を用いて構成したいと希望するネットワークインタフェースごとに、DHCP イネーブルファイルを 1 つ作成する必要があります。DHCP イネーブルファイルの書式は /etc/dhcp.interface_name であり、interface_name は DHCP によって構成したいと希望するネットワークインタフェースの名前です。

たとえば、DHCP を使用してネットワークインタフェース le1 を構成したい場合は、空ファイル /etc/dhcp.le1 を作成します。DHCP を使用して構成したいネットワークインタフェースが複数ある場合は、インタフェースごとに DHCP イネーブルファイルを 1 つ作成する必要があります。

ブートプロセスが一時停止する時間の増加

DHCP を使用してインタフェースを構成すると、ブート時間が増加することがあります。特に、クライアントの要求に応答する DHCP サーバーが存在しない場合には、インタフェースごとに約 30 秒の遅延が発生します。ネットワークインタフェースが構成されるまで、Solaris DHCP クライアントがブートプロセスを一時停止する (所要時間の長さにかかわらず) ことを希望する場合は、ネットワークインタフェースの DHCP イネーブルファイル (/etc/dhcp.interface_name) を編集して、wait forever というフレーズを追加します。

クライアントがブートプロセスを一時停止する時間をより短くしたいと希望する場合は、キーワード forever を使用する代わりに、待機する秒数を指定することができます。たとえば、DHCP がネットワークインタフェースを構成する時間として 1 時間待機してからブートプロセスを継続したいと希望する場合は、wait 3600 と指定します。


注 -

一時停止時間が経過した場合でも、Solaris DHCP クライアントは、ネットワークインタフェースの構成が正常終了するまで非同期的に構成を継続します。この継続を回避するために、ifconfig(1M) コマンドに drop オプションを指定することができます。たとえば、ifconfig le0 dhcp drop とします。これにより、指定されたインタフェース (この例では le0) が DHCP エージェントの制御から削除されて、非同期的なアドレス割り当て試行が終了します。


主ネットワークインタフェースとして指定する方法

大部分の DHCP 構成パラメータは 1 つのネットワークインタフェースに固有ではありません。パラメータには、より一般的な情報を指定します。この種の一般パラメータの例として、NIS サーバー、NIS ドメイン、DNS サーバー、DNS ドメインがあります。Solaris マシンに 1 つのネットワークインタフェースだけがある場合は、一般パラメータとインターフェースに固有なパラメータとを区別する必要はありません。

マシンに複数のネットワークインタフェースがあり (すなわち、複数のホームがあり)、DHCP が複数のインタフェースの構成を行う場合は、複数のセットの一般構成パラメータを受け取って、パラメータ同士が衝突する可能性があります。たとえば、DHCP を使用してインタフェース le0 を構成する際に受け取った DNS パラメータを使用すべきなのでしょうか、それとも le1 用に受け取った DNS パラメータを使用すべきなのでしょうか。

1 つのネットワークインタフェースを主ネットワークインタフェースとして指定すれば、Solaris DHCP クライアントはこの問題を解決することができます。インタフェースに固有なパラメータ (たとえば、サブネットマスク) は各インタフェースから取り出され、一般パラメータは、主インタフェースから受け取った DHCP 情報だけから取り出されます。

ネットワークインタフェースを主インタフェースとして指定するには、そのインタフェースの DHCP イネーブルファイルにキーワード primary を追加します。たとえば、qe2 を主インタフェースとして使用したいと希望する場合は、/etc/dhcp.qe2 を編集して、primary という語を追加します。

キーワード primary が追加されていない場合 (主インタフェースとして指定されているインタフェースがない場合)、Solaris マシンは、構成が最初に正常終了したインタフェースからパラメータを受け取ります。

DHCP/BOOTP の有効利用を制限するネットワークトポロジ

DHCP クライアントと BOOTP クライアントは最初、ローカル IP ネットワークについての情報を持っていません。したがって、自己の IP アドレスとして 0.0.0.0 (デフォルトのネットワークアドレス) を使用します。DHCP 要求または BOOTP 要求が、これらのクライアントから 255.255.255.255 IP アドレス (ブロードキャスト通信アドレス) へ送信され、ローカル IP ネットワークに接続されている全 IP デバイスが受信します。

DHCP サーバーと BOOTP サーバーは、以下の要素をベースにしてクライアントの IP ネットワークのアタッチメントを判定します。

  1. DHCP 要求または BOOTP 要求を受け取ったネットワークのハードウェアインタフェース

  2. 受け取った DHCP 要求または BOOTP 要求は、BOOTP 中継エージェントからのものであったかどうか

    BOOTP 中継エージェントは、DHCP クライアントまたは BOOTP クライアントと同じ IP ネットワークに接続されている、自己のネットワークのハードウェアインタフェースの IP アドレスを挿入します。この IP アドレスが欠落している場合は、クライアントが直接接続された IP ネットワーク上にある旨の信号がサーバーへ送信されます。この IP アドレスが存在する場合は、サーバーから離れたリモート IP ネットワークにクライアントが接続されていること、および BOOTP 中継エージェントの IP アドレスを使用してサーバーがクライアントへ応答を返信することを表しています。

  3. クライアントが接続されている IP ネットワークがサブネット化されているかどうか

    サーバーは、IP アドレスをキーとして使用して、netmasks テーブル (サブネットのマスク情報を格納しています) の内容を調べます。この場合に使用する IP アドレスは以下のうちのいずれかです。

    • クライアントが直接接続された IP ネットワーク上にある (パケットの中継アドレスフィールド内の 0.0.0.0 という IP アドレスによって示されます) 場合は、サーバーのネットワークのハードウェアインタフェースの IP アドレス

    • BOOTP 中継エージェントがクライアントの要求内に IP アドレスを指定していた場合は、その指定された IP アドレス

クライアントの IP ネットワークのアタッチメントを判定するこの手順が有効なのは、ネットワークのハードウェア媒体 (たとえば、イ−サネット) 上に存在する IP ネットワークが 1 つだけである場合のみです。複数のネットワークハードウェアインタフェースを使用するか、または複数の論理インタフェースを使用することによって、複数の IP ネットワークが同じネットワークハードウェア媒体を共有している IP ネットワーク環境では、DHCP は適切に動作しません。この場合には、DHCP クライアントの要求が全ネットワークハードウェアインタフェース上に表示され、「外観上は」そのクライアントがすべての IP ネットワークに同時に接続されているかのように見えます。DHCP サーバーは IP アドレスを動的に要求元のクライアントへ割り当てるため、そのクライアントへ割り当てるべき IP アドレスをサーバーが決定することはできません。それは、その時点でサーバーが保持している IP アドレスの妥当性検査を試行すると、DHCP クライアントは、割り当てられたネットワーク上だけではなく、すべての論理 IP ネットワーク上に存在するように見えるからです。

このようなネットワークトポロジは回避する必要があります。そのためには、より効率的なサブネット化を行い、可変長サブネットマスク (VLSM) を使用して IP ネットワーク間のハードウェア媒体のマップを一対一に保持するか、あるいは、ただ 1 つの論理 IP ネットワークがサービスの対象となるように DHCP または BOOTP のサービスを構成します。詳細は、netmasks(4) を参照してください。