この章では、DHCP を管理する方法、すなわち DHCP を実行するネットワークを設定する方法、リース時間ポリシーを決定する方法、BOOTP 中継エージェントを追加する方法について説明します。また、DHCP が使用するデータベースの種類と、特定のデータベース内でマクロを作成する方法についても説明します。さらに、DHCP に実装されたオプション、DHCP に追加可能なオプションについても説明します。
DHCP を実行するネットワークを設定する場合は、まず既存のネットワークについての情報を収集する必要があります。必要な情報は、ネットワークトポロジについての情報 (ルーター、スイッチ、その他のネットワークなど) とサービスについての情報 (ネームサービス、ファイルおよび出力サービスなど) です。
リモートネットワーク上のクライアント (すなわち、DHCP サービスを配置する予定のネットワークとは別のネットワーク上のクライアント) をサポートすることを予定している場合は、リモートネットワークのサブネットマスクも収集する必要があります (ただし、リモートネットワークがサブネット化されている場合)。DHCP サービスが使用する netmasks テーブルが、この情報を用いて変更済みであることを確認してください。さらに、リモートネットワーク上のルーターの IP アドレスを収集するか、またはルーター検出機能を使用するようにリモートネットワーク上のクライアントを構成する必要があります。
必要な情報をすべて取得したら、ネットワーク内を移動するデータを NIS+ とファイルのどちらに格納するかを決める必要があります。複数サービス環境または事業用の場合は、NIS+ が適しています。単一サーバーまたは小規模な環境の場合は、ファイルが適しています。情報の収集が終了したら、dhcpconfig(1M) を実行してリモートネットワークを構成します。
DHCP ネームサービスの設定では、テーブルを格納する際とホスト情報にアクセスする際に DHCP サーバーが使用するデータストア資源を決定します。dhcpconfig スクリプトは、/etc/default/dhcp ファイル内に DHCP サービスを設定します。実行時デーモンと管理ユーティリティはこのファイルを使用して、処理の際の問い合わせ先のネームサービスを決定します。
まず最初に、dhcpconfig コマンドにより、サーバーが現在使用しているのが NIS+ とファイルのどちらであるのかを判定します。システムが NIS+ を使用中である場合は、nisplus が Enter data store プロンプトにおけるデフォルト値です。システムがファイルを使用中である場合は files がデフォルト値です。
NIS+ を選択して、サーバーが NIS + を実行していない場合は、警告メッセージと NIS+ の設定方法が表示されます。dhcpconfig スクリプトの処理が継続します (ただし、次に DHCP テーブルを作成する際におそらくエラーが発生します)。
複数のサーバーを持つ環境、または事業用の環境の場合は、NIS+ を使用する必要があります。NIS+ を使用すれば、データをサーバー間で共有することができます。単一サーバーのみの場合は、NFS を使用してデータの共有を行う場合を除いて、ファイルを使用することができます。
dhcpconfig スクリプトにより、表 16-1 に示すように、選択したデータストア内に以下の空 DHCP テーブルを作成します。
表 16-1 dhcpconfig スクリプトにより作成するテーブル
DHCP 構成情報テーブル |
|
DHCP クライアントのマップテーブル、DHCP サーバーのあるネットワークごとに 1 つ |
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
この節では、dhcpconfig を使用し、各サブネットについての以下の 3 つの質問に対する答えをもとにして、サブネットを構成する方法について説明します。
使用されていない IP アドレスを割り当てる場合に、検索を希望する IP アドレスの範囲はどこか。
特定のサブネットに対する要求に DHCP デーモンが応答することを希望するか。
dhcpconfig スクリプトにより、サーバーシステム上に構成するサブネットごとに、dhcp_network テーブルと呼ばれるテーブルを作成します。テーブル名は IP アドレスと同じですが、小数点は下線に置換されます。たとえば、サブネット 129.148.5.0 の dhcp_network テーブルは、DHCP が使用しているネームサービス内では 129_148_5_0 です。これは、NIS+ の場合は org_dir オブジェクト内のテーブルであり、ファイルの場合は /var/dhcp ディレクトリ内のファイルです。
DHCP が管理しているクライアントシステムごとに、dhcp_network テーブル (クライアントマシンが接続されているサブネットに対応するテーブル) 内にエントリが 1 つあります。エントリが永久である場合もありますが、この場合は IP アドレスが永久的にマシンに割り当てられています。あるいはエントリが動的である場合もありますが、この場合はクライアントが最初に構成される際に DHCP サーバーが IP アドレスを割り当てて、さらに IP アドレスを使用できる時間の長さを指定したリースを与えます。この段階で設定するのは、これらの動的クライアントです。永久クライアントは、DHCP の環境をすべて構成した後で、pntadm を用いて設定することができます。
この節では、dhcpconfig スクリプトが実行する、以下の 3 つの機能について説明します。
DHCP デーモンプロセスの start/stop スクリプトを、/etc/init.d ディレクトリへインストールする
このスクリプトへのリンクを、/etc/rc{0,3}.d ディレクトリ内に設定する
デーモンプロセスを開始する
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 と同様に、LeaseNeg を dhcptab の各種マクロ内で使用することができます。詳細は、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 アドレスを割り当てる条件を表します。フラグの設定は、以下を結合したものになります。
IP アドレスのこのリースには有効期限があります。リースが期限切れとなった場合は、更新が可能である旨がサイトのポリシーに指示してあれば更新することができます。現在のクライアントがリースを更新しない場合、その IP アドレスは別のクライアントに割り当てることができます。フラグが 0 に設定されている場合は、リース時間を変更することができます。
この IP アドレスのリースは永久的に割り当てられており、クライアントがリース時間を変更することはできません。ただし、IP アドレスを使用しているクライアントがその IP アドレスの割り当てを解除することは可能です。割り当て解除された IP アドレスは、別のクライアントに割り当てることができます。
この IP アドレスは特定のクライアントのマシンに割り当てられます。クライアントが割り当てを解除することはできません。フラグが 2 に設定されている限り、その IP アドレスを再度割り当てることができるのは、管理者が手動で変更した場合だけです。
この IP アドレスは使用できません。フラグを 4 に設定することにより、IP アドレスの割り当てを防止することができます。DHCP サーバーは、IP アドレスの配置を試行してそれがすでに使用中であることがわかった場合に、その IP アドレスを使用不可とマークします。DHCP サーバーは、IP アドレスを割り当てる前に、通常は ping コマンドを用いてすでに使用中であるかどうかを確認します。この設定は、dhcpconfig 内に構成可能です。
フラグが設定の結合であることがあります。たとえば、フラグが 3 に設定されている場合は、1 と 2 を結合したものです。つまり、この設定は永久かつ手動という設定であり、この IP アドレスのリースは永久リースで、かつ管理者が割り当てたリースになります。
最初に、組み込み中継エージェントがルーター (単数の場合も複数の場合もあります) にあるかどうかを判定します。組み込み中継エージェントがルーターにある場合は、マニュアルを読んで中継エージェントの使用法を理解してください。組み込み中継エージェントがルーターにない場合は、クライアントネットワーク上にある、中継エージェントとして機能させる Solaris マシンを選択します。マシンに SUNWdhcsr と SUNWdhcsu をインストールしてから、dhcpconfig を実行して Configure BOOTP relay agent を選択します。
希望の BOOTP/DHCP 要求送信先の BOOTP/DHCP サーバーの IP アドレス、またはホスト名を入力します。
Solaris DHCP サーバーでは、標準 DHCP オプションがすべて導入されます。これらのオプションには、以下のネットワーク情報が含まれています。
サーバー名
ルーターのアドレス
DNS ドメイン名
TCP 生存時間
接続オプション
サーバーオプション
IP 層オプション
時間オプション
ベンダーオプションは、DHCP クライアントソフトウェアのベンダーが定義する DHCP オプションです。クライアントは、構成を求める要求を送る際にベンダーのクライアントクラスを組み込みます。dhcptab データベース内にこのクライアントクラスと一致するクライアントクラスがある場合には、そのクラスに対して指定されているオプションとその他の構成オプションがクライアントに送信されます。Solaris DHCP サーバーを構成して、任意の DHCP クライアントベンダーのオプションをサポートすることができます。
追加のベンダーオプションまたはサイトオプションを作成するには、以下を定義する必要があります。
ベンダークラス。これは、ベンダーによってクライアントを識別するのに使用する名前です。クラス名は ASCII 文字列です。サイトオプションを定義する場合は指定しません。
値の型。これは、当該オプションに格納されるデータの型を指定します。サポートされているデータ型は以下のとおりです。
ASCII テキスト
オクテット。2 進データの ASCII 表現
IP。インターネットアドレスのドット区切り 10 進表現
数値。8 ビット、16 ビット、32 ビット、または 64 ビットの数
オプションコード。これは、新規オプションに割り当てる DHCP オプション番号です。ベンダーコードは 1 と 254 の間、サイトコードは 128 と 254 の間が可能です。
粒度。これは、当該オプションの単一インスタンスを構成する、当該値型であるオブジェクトの数を指定します。たとえば、静的送信経路シンボルは送信経路のリストですが、各送信経路は 2 つの IP アドレスから構成されるので、値の型は IP と定義し、粒度は 2 と定義します。
長さ。これは、当該オプションにおける最小許容粒度を指定します。たとえば、サブネットマスクは 1 つの IP アドレスだけでもかまわないので、サブネットマスクのオプションの長さは 1 となります。0 という値は、項目の数が可変である (最大 16) ことが許容されることを表します。
サイトオプションはサイトに固有であるため、必要な任意のオプションを作成できますが、ベンダーオプションの場合は、特定のクライアントベンダーに対して必要なオプションだけ作成できます。オプションは定義済みのものもありますが、作成する必要があるものもあります。作成する場合には、特定のベンダーに適用するベンダーオプションのリストをサーバー上に作成することが必要な場合があります。リストの例はクライアントのベンダーが提供します。
dhcptab テーブルのマクロを作成する場合は、関連する標準オプション、ベンダーオプション、サイトオプションをすべて指定する必要があります。使用可能なオプションをすべて指定する必要はありません。指定する数は、ネットワークの構成に応じて異なります。
IP アドレスのリースは、デフォルトでは一時として割り当てられます。一時リースは、ユーザーとユーザーのマシンが頻繁にサブネットを変更する場合、またはシステムへの出入りが激しい場合に便利です。
サイトごとに、当該サイトでの一時リースを更新可能とするかどうかを指定することができます。このサイトのポリシーは、LeaseNeg シンボルを用いてプロパティテーブル内に設定することができます。このシンボルを省略した場合は、リースが期限切れとなった際にクライアントがリースについて再度ネゴシエーションを行うことはできません。IP アドレスが期限切れとなった際にクライアントがその IP アドレスを更新しない場合、その IP アドレスは再使用することができます。
ネットワーク 126.147.100.0 の NIS サーバーの値を変更する場合は、以下のようにします。
マクロ 129.147.100.0 を以下のように編集します。
dhtadm -M -m 129.147.100.0 -e `NISserv = 129.147.100.1 129.147.100.2' |
以下のように入力します。
/etc/init.d/dhcp stop |
以下のように入力します。
/etc/init.d/dhcp start |
あるいは、2 と 3 の代わりに、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 のシンボル定義を追加するには、以下のようにします。
以下のように入力します。
dhtadm -A -s SN_TZ -d 'Vendor="SUNW.PCW.LAN SUNW.Solaris", 13, ASCII, 1, 0' |
以下のように入力します。
dhtadm -M -m Locale -e `:SN_TZ = "EST5EDT4":' |
以下のように入力します。
/etc/init.d/dhcp stop |
以下のように入力します。
/etc/init.d/dhcp start |
jurassic マクロから Timeserv 値を削除するには、以下のようにします。
以下のように入力します。
dhtadm -D -m jurassic -e `Timeserv=` |
以下のように入力します。
/etc/init.d/dhcp stop |
以下のように入力します。
/etc/init.d/dhcp start |
常にホスト名をサーバー jurassic のクライアントに戻すには、以下のようにします。
以下のように入力します。
dhtadm -M -m jurassic -e `Hostname= _NULL_VALUE_' |
以下のように入力します。
/etc/initd/dhcp stop |
以下のように入力します。
/etc/init.d/dhcp start |
canoepoint という名前のホストと 1 つの IP アドレスとの間の、ホスト名 〜 IP アドレス間関連付けを維持することが重要な場合は、peds ネットワーク上の canoepoint エントリを MANUAL とマークします。
129.147.100.87 を BOOTP かつ永久とマークするには、以下のようにします。
以下のように入力します。
pntadm -M 129.147.100.87 -f `BOOTP + PERMANENT' 129.147.100.0 |
あるいは
以下のように入力します。
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 クライアントは無効にされています。有効にするには、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 クライアントは最初、ローカル IP ネットワークについての情報を持っていません。したがって、自己の IP アドレスとして 0.0.0.0 (デフォルトのネットワークアドレス) を使用します。DHCP 要求または BOOTP 要求が、これらのクライアントから 255.255.255.255 IP アドレス (ブロードキャスト通信アドレス) へ送信され、ローカル IP ネットワークに接続されている全 IP デバイスが受信します。
DHCP サーバーと BOOTP サーバーは、以下の要素をベースにしてクライアントの IP ネットワークのアタッチメントを判定します。
DHCP 要求または BOOTP 要求を受け取ったネットワークのハードウェアインタフェース
受け取った DHCP 要求または BOOTP 要求は、BOOTP 中継エージェントからのものであったかどうか
BOOTP 中継エージェントは、DHCP クライアントまたは BOOTP クライアントと同じ IP ネットワークに接続されている、自己のネットワークのハードウェアインタフェースの IP アドレスを挿入します。この IP アドレスが欠落している場合は、クライアントが直接接続された IP ネットワーク上にある旨の信号がサーバーへ送信されます。この IP アドレスが存在する場合は、サーバーから離れたリモート IP ネットワークにクライアントが接続されていること、および BOOTP 中継エージェントの IP アドレスを使用してサーバーがクライアントへ応答を返信することを表しています。
クライアントが接続されている 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) を参照してください。