DHCP は、2 種類のデータベース、すなわちネットワークテーブルと dhcptab 構成マクロテーブルとを使用します。これらのデータベースは、NIS+ を使用している場合は NIS+ テーブルであり、NIS+ を使用していない場合はファイルです。
DHCP ネットワークテーブルは、IP アドレスの割り当てに関連する情報を格納しています。ネットワークごとに別個のネットワークテーブルがあります。DHCP において dhcp_network テーブルと呼ばれるテーブルの名前は、サービスを提供しているネットワークの IP アドレスから派生しています。たとえば、ネットワーク 120.146.5.0 のネットワークテーブルは、IP アドレス指定の中のピリオドを下線に置換して 120_146_5_0 となります。
DHCP 内の各サブネットには、サブネット内のクライアントのエントリを格納している dhcp_network テーブルがあります。ブートしたクライアントからのパラメータを求める要求に DHCP サーバーが応答すると、そのクライアントの dhcp_network エントリとして情報が記録されます。このテーブルには、クライアントの IP アドレスと、dhcptab テーブルへのポインタとが含まれています。
ネットワークテーブルは、以下の固有情報を格納しています。
IP アドレス。割り当て済みと未割り当ての両方。
クライアント識別子 (割り当て済みレコードに対してのみ)
リースの有効期限
リースの種類 (動的、永久、手動、使用不可、BOOTP のみのいずれか) を表すフラグ
IP アドレスごとの dhcptab 構成マクロの名前
オリジナルのクライアント IP アドレスを所有するサーバーの IP アドレス
ネットワークテーブルは、特定のネットワークに対して 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-1 に pntadm の出力例を示します。
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 テーブルは、クライアントの構成に関連する情報を格納しています。このテーブルは、ネットワーククライアントを構成するのに必要な全情報を格納する、一連のマクロ定義として編成されます。クライアントは、ネットワークテーブルから IP アドレスを割り当てられる際に構成を取得します。IP アドレスに関連付けられたマクロ名は、dhcptab テーブル内のマクロ名に対応します。クライアントは、ネットワークテーブルから IP アドレスを取得した後に、dhcptab テーブルからネットワーク構成を取得します。
DHCP サーバーの初期構成の際に、構成済みネットワークごとに dhcptab テーブルとマクロが作成されます。各マクロには、ネットワークに固有の情報、すなわちサブネットマスク、ネットワークブロードキャスト通信アドレス、IP パケット生存時間、データグラムの最大サイズ、デフォルトのルーター、静的送信経路、DNS ドメイン、NIS ドメイン、DNS サーバー、NIS サーバーのうち、サーバーの構成時に使用可能なものが格納されます。
マクロ内に格納されている情報を変更することによって、クライアントマシンがネットワークを利用する方法を制御することができます。たとえば、特定のクライアントマシンが使用するマクロの名前を変更すると、そのマシンのネットワーク構成が変更されます。別の例としては、あるマクロ内の 1 つのオプションを変更することにより、そのマクロセットを使用する全マシンの動作が変更されます。IP アドレスを管理する能力は、DHCP の主要機能の 1 つです。dhtadm コマンドにより、dhcptab サーバー構成テーブルを管理します。例 16-2 にdhtadm の出力例を示します。
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