dhclient.conf - DHCP クライアント設定ファイル |
dhclient.conf ファイルには Internet Systems Consortium の DHCP クライア ントである dhclient の設定情報が含まれます。 dhclient.conf は自由形式の ASCII テキストファイルです。このファイ ル は dhclient に組み込まれた再帰下降パーザに解析されます。ファイルには、整形 の目的でタブや改行を余分に含めることもできます。ファイル中のキーワー ド で は大文字小文字を区別しません。 (クォート内は除いて) ファイル中のどこ でもコメントを置くことができます。コメントは文字 # で始まり、行末で終わ ります。 dhclient.conf ファイルで、クライアントのさまざまな動作を設定できます。 それらには、プロトコルのタイミング、サーバに対して要求する情報、サー バ に 対 し て必須とされる情報、サーバが情報を提供しなかった場合に用いるデ フォルト、サーバから提供された情報を上書きする値、サーバから提供され た 情報に前置や後置する値などがあります。また、DHCP サーバを持たないネット ワークで使うアドレスであっても、あらかじめ設定ファイルで初期化するこ と もできます。 |
ク ライアントのタイミング動作は、ユーザが設定する必要はありません。ユー ザがタイミング設定を行わなければ、サーバに無秩序に負荷を与えたりせず 適 時 更新を行うような、充分に適切なタイミング動作がデフォルトで用いられま す。 しかし、必要に応じて、次の文を指定して DHCP クライアントのタイミング 動 作を調節できます: timeout 文 timeout time ; timeout 文は、クライアントがアドレスを決める試みを開始してから、サーバ にアクセスすることができないと判断するまでに経過すべき時間を決めま す。 デ フォルトではこのタイムアウト値は 60 秒です。このタイムアウト値が過ぎ た後は、もし静的なリースが設定ファイルに定義されているか、リースデー タ ベー スにまだ期限切れになっていないリースが残っていれば、クライアントは それらのリースをひとつずつ検証してみて、いずれかが有効なようであれば そ の リースのアドレスを使います。もし静的なリースも、リースデータベース内 の期限の切れていないリースで有効なものも存在しなければ、クライアント は 定義された retry 間隔の後でプロトコルを再開させます。 retry 文 retry time; retry 文 は、クライアントが DHCP サーバが存在しないと判断してから再び DHCP サーバにアクセスを試みるまでの間に、経過するべき時間を決めます。デ フォルトでは、これは 5 分です。 select-timeout 文 select-timeout time; あ るネットワーク上で、複数の DHCP サーバがサービスを提供することもでき ます (その方が望ましいという意見もあります)。その場合、最初のリース発見 メッセージ (lease discovery message) への応答として、クライアントが複数 のリース提供の申し出を受けることもあり得ます。それらのうち、ある提供 が 他 の提供よりも好ましいかもしれません (例えば、クライアントが以前使用し ていたアドレスがある提供に含まれているが、他の提供には含まれないなど)。 select-timeout はクライアントが最初のリース発見要求を送信して、少なくと も 1 つの提供申し出を受けた場合、サーバからの提供申し出待ちをやめるまで の 時間です。もし select-timeout が切れるまでにどこからも提供申し出を受 け取れなければ、クライアントはそのあと最初に到着する提供申し出を受け 入 れます。 デ フォルトでは、select-timeout 値は 0 秒です。つまりクライアントは最初 に受け取る提供申し出を受け入れます。 reboot 文 reboot time; クライアントは、再起動すると、最後に保持していたアドレスをまず取得し 直 そ うとします。これを INIT-REBOOT (初期リブート) 状態と呼びます。最後に 動作していたときと同じネットワークにクライアントがまだ接続していれ ば、 こ れが最も素早い起動法となります。 reboot 文は、クライアントが最初に古 いアドレスの再取得を試みてから、あきらめて新しいアドレスを発見しよう と するまでに、経過すべき時間を設定します。デフォルトでは、reboot タイムア ウト値は 10 秒です。 backoff-cutoff 文 backoff-cutoff time; クライアントは、指数的な一時退避 (backoff) アルゴリズムを、ある程度の乱 数 付きで使用します。これは、多くのクライアントが同時に自分を設定しよう としたときでも、リクエストがロックしてしまうことがないようにするため で す。 backoff-cutoff 文は、一時退避に許された最大時間を決定します。デ フォルト値は 2 分です。 initial-interval 文 initial-interval time; initial-interval 文は、サーバへの最初のアクセスの試みから次の試みまでの 間の時間を設定します。メッセージの間隔は、メッセージを 1 回送信するたび に、現在の間隔に 0 から 1 の間の乱数値を乗じたものの 2 倍を、現在の間隔 に 加えたものになります。この値が backoff-cutoff 値より大きくなると、こ の時間が設定されます。デフォルト値は 10 秒です。 |
DHCP プロトコルでは、クライアントからサーバに対し、特定の情報を送るよう 要 求したり、受け入れ準備のできていない他の情報は送らないように要求した りできます。また、サーバからの提供申し出にクライアントの必要とする情 報 が 含まれない場合や、提供された情報が充分でない場合、クライアントが提供 申し出を拒否することもできます。 DHCP サーバが DHCP クライアントに送る提供申し出に含まれるデータには、さ まざまなものがあります。特に要求できるデータは DHCP オプション と呼ばれ るものです。 DHCP オプションは dhcp-options(5) に定義されています。 request 文 request [ option ] [, ... option ]; request 文を指定することで、クライアントは、サーバに対し、そのクライ ア ン トに応答するならば、指定したオプションの値を送るよう要求するようにな ります。 request 文にはオプション名だけを指定し、オプションパラメータは 指 定 し ま せ ん。 デ フォ ル ト では DHCP クライアントは subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, host-name オプションを要求します。 場 合によっては要求リストを全く送らないことが望ましいこともあります。そ うするためには、単純にパラメータを指定しない request 文を書いて下さい: |
request; |
require 文 require [ option ] [, ... option ]; require 文には、ある提供申し出をクライアントが受け入れるためにサーバ が 送 るべきオプションを列挙します。列挙されたオプションすべてを含まない提 供申し出は無視されます。 send 文 send { [ option declaration ] [, ... option declaration ]} send 文を指定することで、クライアントは、指定したオプションを指定した値 で サー バ に 送 信 す るようになります。ここで指定できるオプションは、 dhcp-options(5) で説明されているオプション宣言すべてです。 DHCP プロ ト コ ルで常に送られるオプションはここに指定するべきではありません。但し、 requested-lease-time オプションをデフォルトのリース時間 (2 時間) 以外の 値 で指定することはできます。この文を使う他の場合として明らかなものは、 自分と別の種類のクライアントとを区別できるような情報を、サーバに対し 送 信する場合です。 |
現 在、 リースが獲得された際に DNS の更新を行うための、非常に限定的なサ ポートがクライアントにあります。これはプロトタイプ的なものであり、お そ ら くあなたが思っているようには動きません。もし、あなたが偶然にも自分の ところの DNS サーバの管理者であるというなら、その場合に限っては動 き ま す。とてもありそうにないことですが。 これを動作させるためには、DHCP サーバの中で鍵とゾーンを宣言する必要があ ります (詳細は dhcpd.conf(5) を参照)。また、次のようにクライア ン ト で fqdn オプションを設定する必要があります: send fqdn.fqdn "grosse.fugue.com."; send fqdn.encoded on; send fqdn.server-update off; fqdn.fqdn オプションは 必ず 完全なドメイン名でなければなりません。更新 するゾーンに対するゾーン文を 必ず 定 義 し な け れ ば な り ま せ ん。 fqdn.encoded オプションは、使用している DHCP サーバによっては、 on か off に設定する必要があるかもしれません。 do-forward-updates 文 do-forward-updates [ flag ] ; DHCP クライアントが直接 DNS の更新を行うよりも、 DHCP クライアントス ク リ プト (dhclient-script(8) 参照) の中で DNS の更新を行いたい場合 (例え ば、DHCP クライアントが直接サポートしていない SIG(0) 認証を使用したい場 合) には、do-forward-updates 文を使って、更新を行うようにクライアントに 教えることができます。 DHCP クライアントが更新することを望む場合は flag を true にし、更新することを望まない場合は flag を false にすることにな ります。デフォルトでは DHCP クライアントは DNS の更新を行います。 |
そのクライアントにとって実際には適切でないオプションデータを受け取っ た り、 必要な情報を受け取らなかったりする場合で、かつ、それらの情報に利用 可能なデフォルトの値がクライアント側に存在する場合があります。また、 利 用 可能ではあるがローカルの情報で補う必要のある情報をクライアントが受け とる場合もあります。こういう場合を扱うために、いくつかのオプション修 飾 子が利用できます。 default 文 default [ option declaration ] ; あ るオプションについて、サーバから提供される値をクライアントが使わなけ ればならないが、もしサーバから値が提供されなければ何らかのデフォルト 値 を使う必要がある場合、それらの値を default 文で定義することができます。 supersede 文 supersede [ option declaration ] ; あるオプションについて、どのような値がサーバから提供されても、常に ロー カルで設定された値を使わなければならない場合、それらの値を supersede 文 で定義することができます。 prepend 文 prepend [ option declaration ] ; あるオプションの集合について、まずユーザが提供する値を使い、そ の 次 に サーバから提供された値があればそれを使う場合、それらの値を prepend 文で 定義することができます。 prepend 文は複数の値を取ることのできるオプショ ン に の み用いることができます。この制約は強制されるものではありません が、これを無視した場合、どのような挙動になるかは予想できません。 append 文 append [ option declaration ] ; あるオプションの集合について、まずサーバから提供された値を使い、その 次 に ユーザが提供する値があればそれも使う場合、それらの値を append 文で定 義することができます。 append 文は複数の値を取ることのできるオプショ ン に のみ用いることができます。この制約は強制されるものではありませんが、 もし違反すると予期できない結果となります。 |
lease 宣言 lease { lease-declaration [ ... lease-declaration ] } ある時間 (プロトコルのタイミング 参照) の後、DHCP クライアントはサー バ へ のアクセスに成功しそうにないと判断する場合があります。その時点で、ク ライアントは自分が持っている、古いリースのデータベースを見て、時間切 れ に なっていないリースを順に調べ、そこに挙がっているルータに ping を行っ て、それが利用可能なリースかどうかを調べます。 DHCP サービ ス や BOOTP サービスが存在しないネットワークのために、 1 つ以上の 固定 リースをクラ イアント設定ファイルに定義しておいて、クライアントがアドレスを自動的 に 設定できるようにすることもできます。これは lease 文で行います。 注 意: lease 文は、DHCP サーバから受け取ったリースを記録するために、 dhclient.leases ファイルでも使われます。以下に説明するリース用 の シ ン タックスには dhclient.leases ファイルでのみ必要なものもあります。説明を 完全なものにするため、そのようなシンタックスもここで記述します。 lease 文は、リースキーワード、左中括弧、1 つ以上のリース宣言文、右中 括 弧が続いたもので構成されます。リース宣言として、次のものが可能です: bootp; bootp 文は、リースが DHCP プロトコルではなく、 BOOTP プロトコルを用いて 取得されたことを示します。この文をクライアント設定ファイルに指定する 必 要 は全くありません。クライアントはこの構文をリースデータベースファイル 内で使います。 interface "string"; interface リース文は、そのリースを有効とするインタフェースを示しま す。 こ れが設定されている場合、このリースは、指定されたインタフェース上での み使用されます。サーバからリースを受け取ったとき、クライアントは常に そ のリースを受け取ったインタフェース番号を記録します。 dhclient.conf ファ イルで事前にリースを定義している場合、要求されてないのですが、その リー スでインタフェースもあわせて指定しなければなりません。 fixed-address ip-address; fixed-address 文は特定のリースの IP アドレスを指定する際に使います。こ れはすべての lease 文に必要です。 IP アドレスは (12.34.56.78 のよう に) ドット付き 4 つ組形式で指定しなければなりません。 filename "string"; filename 文は使用するブートファイル名を指定します。これは標準的なクライ アント設定スクリプトでは使われませんが、説明の完全を期すためにここに 含 めてあります。 server-name "string"; server-name 文は使用するブートサーバ名を指定します。これも標準的なクラ イアント設定スクリプトでは使われません。 option option-declaration; option 文は、サーバから提供されるオプションの値を指定するのに使います。 あ るいは、dhclient.conf で事前定義リースが宣言されている場合には、その 事前定義リースが使われる際にクライアント設定スクリプトで使用して欲し い 値を指定します。 script "script-name"; script 文は dhcp クライアント設定スクリプトのパス名を指定するのに使いま す。このスクリプトは、アドレスを要求したり、以前に提供されたアドレス を 試 したり、リースを取得してからインタフェースの最終設定を行ったりする前 に、 dhcp クライアントが各インタフェースの初期設定を行うのに使いま す。 リー スが取得できなかった場合には、事前定義リースが存在する場合、それら を試すためにこのスクリプトが使われます。また、有効なリースがひとつも 得 られなかった場合でも、このスクリプトは、 1 回は呼び出されます。より詳し くは、 dhclient-script(8) を参照してください。 vendor option space "name"; vendor option space 文は、vendor-encapsulate-options オプションを受信し た 場合、復号化にどのオプション空間を使用するべきかを指定するために使用 されます。サーバからのベンダオプションの特定のクラスを要求するため に、 dhcp-vendor-identifier を使用することができます。詳細は dhcp-options(5) を参照してください。 medium "media setup"; medium 文は、接続されているネットワークのタイプをネットワー ク イ ン タ フェー スが自動的に判断できないようなシステムで使うことができます。文字 列 media setup はシステム依存のパラメータで、インタフェース初期化の際に dhcp クライアント設定スクリプトに渡されます。 Unix および Unix 風のシス テムでは、この引数はインタフェースを設定するときに ifconfig コマンド ラ インに渡されます。 リー ス を得るためにインタフェースを設定する際に、dhcp クライアントがメ ディアタイプ ( media 文を参照) を使用する場合、dhcp クライアントは、 こ の パラメータを自動的に宣言します。ネットワークインタフェースがメディア タイプの設定を必要とする場合は (する場合に限り)、この文を事前定義リース で使用しなければなりません。 renew date; rebind date; expire date; renew 文は、現在使用中のリースを更新 (renew) するために、 dhcp クライア ントが使用中のリースを提供してくれたサーバへのアクセスの試みを開始し な け れ ば な ら な い日時を定義します。rebind 文は、リースを更新するため に、dhcp クライアントが いずれかの dhcp サーバへのアクセスの試みを開 始 し なければならない日時を定義します。 expire 文は、リースの更新のために サーバにアクセスできなかった場合、 dhcp クライアントがそのリースの使 用 を停止しなければならない日時を定義します。 こ れ らの宣言は、DHCP クライアントが得たリース中では自動的に設定されま す。事前定義リースのうち、DHCP クライアントに有効期限が過ぎたものを使用 して欲しくないものの中では、これらの宣言を設定しておく必要があります。 date は以下のように指定します。 <weekday> <year>/<month>/<day> <hour>:<minute>:<second> weekday は、人間が見てリース期限をわかりやすくするために存在します。こ れは、0 から 6 までの数字で指定します。0 は日曜日です。year は世紀込 み で指定します。ですから、本当に長いリースを別にすると、必ず 4 桁になるは ずです。month は 1 (1 月を表します) から始まる数字で指定します。 day は 同 様 に 1 から始まる (月における) 日として指定します。hour は、 0 から 23 の間の数字です。minute と second はともに 0 から 59 の間の数字を指定 します。 |
alias { declarations ... } DHCP クライアントが TCP/IP ローミング (roaming) プロトコルを実行してい る場合、DHCP を用いて得られるリースだけでなく、事前に定義された IP エイ リ アスも、自分が使用するインタフェースに設定する必要がある場合がありま す。Internet Systems Consortium 版 DHCP クライアントは、固定アドレス 直 接 指 定 のローミングをサポートしていませんが、その種の実験ができるよう に、この dhcp クライアントは、 alias 宣言を使って IP エイリアスを設定す る準備はできています。 alias 宣言は lease 宣言に似ています。但し、標準のクライアント設定スクリ プトでは、subnet-mask オプション以外のオプション と、 各 種 有 効 期 限 (expiry times) が 無 視される点が異なります。普通の alias 宣言では、 interface 宣言、IP エイリアスのための固定アドレス宣言、subnet-mask オプ ショ ン を 含みます。alias 宣言には medium 文は決して含まれてはなりませ ん。 |
reject ip-address; reject 文により、DHCP クライアントは指定したアドレスをサーバ識別子と し て 使用するサーバからの提供申し出を拒否するようになります。標準に準拠し ない dhcp サーバや設定を間違えている dhcp サーバによってクライアント が 設 定されないようにするために、この文を使用することができます。しかしな がら、これは最後の武器とするべきです。これに先立ち、腐った DHCP サー バ を追いかけてそれを直す方がよいです。 interface "name" { declarations ... } 複数のネットワークインタフェースを持つクライアントの場合、DHCP で設定さ れるインタフェースによって異なる動作をさせる必要がある場 合 が あ り ま す。lease 宣 言 と alias 宣言を除くすべてのタイミングパラメータと宣言 を、interface 宣言で囲むことができます。その場合、囲まれたパラメータ は 指定した名前に合致するインタフェースにのみ適用されます。 interface 宣言 を持たないインタフェースは、すべての interface 宣言の外側で宣言されたパ ラメータ、もしくはデフォルトの設定が適用されます。 pseudo "name" "real-name" { declarations ... } 状 況によっては仮想インタフェースを宣言し、 DHCP クライアントがこのイン タフェースのための設定を取得するようにすると便利になり得ます。通常 DHCP ク ライアントがサポートしている各インタフェースは、そのリースを獲得し管 理するために、 DHCP クライアントの状態機械を実行しています。仮想イン タ フェー スは、real-name と名付けられたインタフェース上で稼働している、ま さしくもう一つの状態機械です。この機能を使用する場合、仮想インタ フェー ス と実際のインタフェースの両方に対してクライアント識別子を提供しなけれ ばなりません。また、使用したい IP アドレスに対する仮想インタフェース 用 に 分離されたクライアントスクリプトを提供しなければなりません。例えば次 のようになります: |
interface "ep0" { |
|||
send dhcp-client-identifier "my-client-ep0"; |
|||
} |
|||
pseudo "secondary" "ep0" { |
|||
send dhcp-client-identifier "my-client-ep0-secondary"; |
|||
script "/etc/dhclient-secondary"; |
|||
} |
仮想インタフェースのためのクライアントスクリプトはインタフェースを有 効 に したり無効にしたりする設定をするべきではありません。特に、リースの獲 得や更新の状態、そしてリースの期限切れの状態を取り扱うためには、その こ とが必要です。詳細は dhclient-script(8) を参照して下さい。 media "media setup" [ , "media setup", ... ]; media 文は、IP アドレス取得中に使用が試みられる、メディア設定パラメータ を 1 つ以上定義します。dhcp クライアントは、リスト中の各 media setup 文 字 列を順次使用し、あるインタフェースをそれで設定し、ブートを試みます。 駄目ならば次の media setup 文字列を使用します。この文は、メディアタイプ を 検 出 する能力を持たないネットワークインタフェースに対して利用できま す。サーバへのリクエストができ応答が得られるものならば、どのよ う な メ ディアタイプでもたぶん正当です (保証はしませんが)。 media setup は ア ド レス取得の初期フェーズ (DHCPDISCOVER パケットと DHCPOFFER パケット)でのみ使用されます。ひとたびアドレスが取得されると、 dhcp クライアントはそのアドレスをリースデータベースに記録し、そのアドレ スを得る際に用いたメディアタイプを記録します。クライアントがリースを 更 新 しようとする際には常に、それと同じメディアタイプを使用します。リース を期限切れにしてはじめて、クライアントはメディアタイプを順に試す状態 に 戻ります。 |
以下の設定ファイルは、NetBSD 1.3 を実行するあるラップトップマシンで使用 されているものです。このマシンは、IP エイリアスとして 192.5.5.213、イン タ フェー ス ep0 (3Com 3C589C) をひとつ持っています。このクライアント は、DHCP 活動がほとんどないネットワークで時間の大部分を消費することがわ かっ て い るので、ブート間隔はデフォルト値からいくぶん小さくしてありま す。このマシンは複数ネットワーク間でローミング (移動) します。 timeout 60; retry 60; reboot 10; select-timeout 5; initial-interval 2; reject 192.33.137.209; interface "ep0" { send host-name "andare.fugue.com"; send dhcp-client-identifier 1:0:a0:24:ab:fb:9c; send dhcp-lease-time 3600; supersede domain-name "fugue.com rc.vix.com home.vix.com"; prepend domain-name-servers 127.0.0.1; request subnet-mask, broadcast-address, time-offset, routers, |
domain-name, domain-name-servers, host-name; |
require subnet-mask, domain-name-servers; alias { |
dhcp-options(5), dhclient.leases(5), dhclient(8), RFC2132, RFC2131 |
dhclient(8) は Vixie Labs との契約のもとで Ted Lemon が書きました。本プ ロジェクトの資金は Internet Systems Consortium が 提 供 し ま し た。 Internet Systems Consortium に関する情報は、 http://www.isc.org にあり ます。 |