EN JA
DHCLIENT.CONF(5)
DHCLIENT.CONF(5) FreeBSD File Formats Manual DHCLIENT.CONF(5)

名称

dhclient.confDHCP クライアント設定ファイル

解説

dhclient.conf ファイルには Internet Software Consortium DHCP クライアントである dhclient(8) のための設定情報が含まれます。

dhclient.conf ファイルは自由形式の ASCII テキストファイルです。それは dhclient(8) に組み込まれた再帰下降パーサによって解析されます。ファイルは書式設定の目的のために余分なタブや改行を含めることもできます。ファイル中のキーワードは大文字と小文字を区別しません。 (クォート内を除いて) コメントはファイル中のどこでも置くことができます。コメントは‘ #’文字で始まり、行の終りで終ります。

dhclient.conf ファイルは、さまざまな方法でクライアントの振る舞いを設定するために使用することができます: プロトコルのタイミング、サーバから要求される情報、サーバに要求される情報、サーバが特定の情報を提供しないなら使用するデフォルト、サーバによって提供された情報を上書きする値、または、サーバによって提供された情報の先頭または後に追加される値。また、設定ファイルは、DHCP サーバがないネットワークで使用するアドレスで前もって初期化することもできます。

プロトコルのタイミング

クライアントのタイミングの振る舞いは、ユーザによって設定される必要はありません。タイミング設定がユーザによって提供されないなら、かなり合理的なタイミングの振る舞いがデフォルトで使用されます - それは、サーバでの過度の負荷なしでかなりタイムリな更新をもたらします。

しかしながら、必要なら、次の文は、DHCP クライアントのタイミングの振る舞いを調整するために使用することができます:

timeout time;
timeout 文は、クライアントがアドレスを決定しようと試み始める時間と、サーバに接続することができないことを確信する時間の間で経過しなければならない時間を決定します。デフォルトでは、このタイムアウトは 60 秒です。タイムアウトが経過した後に、静的なリース (アドレスの貸与) が設定ファイルに定義されているか、まだ期限が切れていないリースデータベースにリースが残っているなら、クライアントはこれらのリースの最初から最後まで、それらの検証する試みを繰り返します、そして有効なものが見つかるなら、そのリースのアドレスを使用します。有効な静的なリースも、リースデータベースに期限の切れていないリースもなければ、クライアントは定義された retry (再試行) 間隔の後にプロトコルを再開します。
retry time;
retry 文は、クライアントが、DHCP サーバに再び接続しようとする前に、 DHCP サーバが存在しないと判断した後に、経過しなければならない時間を決定します。デフォルトでは、これは 5 分です。
select-timeout time;
任意の与えられたネットワークでサービスする 2 つ以上の DHCP サーバもあり得ます (その方が望ましいという人もいます)。この場合、初期のリース発見メッセージ (lease discovery message) への応答として 2 つ以上の申し出をクライアントに送信することもあり得ます。訳注: ここで「申し出」はアドレス貸与の申し出。たぶん、これらの申し出の 1 つはもう片方より望ましいかもしれません (例えば、1 つの申し出はクライアントが以前に使用したアドレスがあり、もう片方にはないないかもしれません)。

select-timeout は、クライアントが、最初のリース発見要求を送信した後に、少なくとも 1 つのそのような申し出を受信したと仮定して、サーバからの申し出を待つことを止める時間です。 select-timeout が期限が切れる時間までに申し出を受信していないなら、クライアントは到着する最初の申し出を受け付けます。

デフォルトでは、 select-timeout は 0 秒です - すなわち、クライアントは最初に会う申し出を取ります。

reboot time;
クライアントが再起動されるとき、最初に、最後のアドレスの再獲得を試みます。これは INIT-REBOOT (初期リブート) 状態と呼ばれます。最後に実行されていたときにアタッチされていた同じネットワークにまだアタッチされているなら、これは起動する最も迅速な方法です。 reboot 文は、クライアントがあきらめて新しいアドレスを検索することを試みる前に、最初に古いアドレスを再獲得することを試みた後に経過しなければならない時間を設定ます。デフォルトでは、リブートタイムアウトは 10 秒です。
backoff-cutoff time;
クライアントは、多くのクライアントが同時にそれら自体を設定しようとするなら、融通の利かないそれらの要求を行わないようにするために、ある乱数つきの指数関数型の backoff アルゴリズムを使用します。 backoff-cutoff 文は、クライアントが back off する (引き返す) ことができる最大の時間を決定します。デフォルトは 2 分です。
initial-interval time;
initial-interval 文は、サーバに到達する最初の試みとサーバに到達する 2 番目の試みの間の時間を設定します。メッセージが送信されるたびに、メッセージの間隔は 0 と 1 の間の乱数を乗じた現在の間隔の 2 倍に増加されます。それが backoff-cutoff の量より大きいなら、その量に設定されます。デフォルトは 10 秒です。

リース要求と要求

DHCP プロトコルによって、クライアントは、サーバが特有の情報を送信して、受け付ける準備されていない他の情報は送信しないように要求できます。また、プロトコルによって、クライアントが必要とする情報を含んでいないか、または提供された情報が満足できないなら、クライアントはサーバからの申し出を拒否できます。

DHCP サーバが DHCP クライアントに送信する申し出に含まれるさまざまなデータがあります。明確に要求することができるデータは DHCP オプション と呼ばれるものです。 DHCP オプションは dhcp-options(5) に定義されています。

request [ option][ , ... option];
request 文によって、クライアントは、クライアントに応答する任意のサーバが、指定されたオプションのためにその値をクライアントに送信することを要求します。 request 文にはオプション名だけを指定すべきです - オプションパラメータは指定すべきではありません。
require [ option][ , ... option];
require 文では、受け付けられる申し出のために送信されなければならないオプションをリストします。すべてのリストされたオプションを含まない申し出は、無視さます。
send { [ option declaration][ , ... option declaration] }
send 文によって、クライアントは、指定されたオプションを指定された値でサーバに送信します。これらは dhcp-options(5) で説明されているような完全なオプション宣言です。 DHCP プロトコルで常に送信されるオプションは、クライアントが、デフォルトのリース時間 (2 時間) 以外の dhcp-lease-time オプションを指定きることを除いて、ここで指定されるべきではありません。この文の他の明白な使用法は、このクライアントと他のクライアントか、またはクライアントの種類を区別することができる情報をサーバに送信することです。

オプション修飾子

ある場合には、クライアントは、そのクライアントのための実際に適切でないサーバからオプションデータを受信したり、または必要な役に立つデフォルト値が存在する情報を受信しないかもしれません。また、役に立つ情報を受信するかもしれませんが、ローカル情報で補われる必要があります。これらの必要なものを取り扱うために、いくつかのオプション修飾子が利用可能です。
default { [ option declaration][ , ... option declaration] }
いくつかの組のオプションのために、クライアントが、サーバによって供給された値を使用するべきですが、サーバによって供給された値がなくて何らかのデフォルト値を使用する必要があるなら、これらの値は、 default 文で定義することができます。
supersede { [ option declaration][ , ... option declaration] }
いくつかの組のオプションのために、クライアントが、サーバによって供給されたなんらかの値よりもむしろ、常にそれ自体の値を使用するべきであるなら、これらの値は、 supersede 文で定義することができます。
prepend { [ option declaration][ , ... option declaration] }
いくつかの組のオプションのために、クライアントは、利用者が供給する値を使用するべきで、次にサーバによって供給された値があり、それを使用するなら、これらの値は、 prepend 文で定義することができます。 prepend 文は、1 つ以上の値を受け取ることを許されているオプションでのみ使用することができます。この制限は強制されませんが - 違反するなら結果は予測できません。
append { [ option declaration][ , ... option declaration] }
いくつかの組のオプションのために、クライアントは、もしあるなら、サーバによって供給された値を最初に使用するべきで、次に利用者が供給する値を使用するなら、これらの値は、 append 文で定義することができます。 append 文は、1 つ以上の値を受け取ることを許されているオプションでのみ使用することができます。この制限は強制されませんが - 利用者がそれを無視するなら、その振る舞いは予測できません。

リース宣言

リース宣言:

lease { lease-declaration [ ... lease-declaration] }

DHCP クライアントは、いくらかの時間 ( プロトコルのタイミング を参照) の後にサーバに接続することに成功しないだろうと決断します。その時、それ自体の古いリースのデータベースを調べて、そのリースが動作できるかどうか確認するためにそのリースのためにリストされたルータを ping することによって、まだタイムアウトしていないかそれぞれのリースをテストします。クライアントがまだそのアドレスを自動的に設定することができるように、 DHCP か BOOTP サービスがないネットワークのために、クライアント設定ファイルで 1 つ以上の 固定 リースを定義することは可能です、これは lease 文で行われます。

注: また、lease 文は、DHCP サーバから受信されたリースを記録するために dhclient.leases ファイルでも使用されます。以下に説明されているようにリースのための構文のいくつかは、 dhclient.leases ファイルでのみ必要とされます。そのような構文は、ここで完全に文書化されています。

lease 文は、 lease キーワード、左中括弧、1 つ以上のリース宣言文、右中括弧が続くものから成ります。次リース宣言が、利用可能です:

bootp;
bootp 文は、リースが DHCP プロトコルよりむしろ BOOTP プロトコルを使用して獲得されたことを示すために使用されます。クライアント設定ファイルでこれを指定することは全く必要ありません。クライアントはリースデータベースファイルでこの構文を使用します。
interfacestring”;
interface リース文は、リースが有効なインタフェースを示すために使用されます。設定されているなら、このリースは特定のインタフェースでのみ試みられます。クライアントがサーバからリースを受信するとき、常にそのリースを受信したインタフェース番号を記録します。事前に定義されるリースが dhclient.conf ファイルで指定されているなら、インタフェースも指定されるべきですが、これは必要とされていません。
fixed-address ip-address;
fixed-address 文は、特定のリースの IP アドレスを設定するために使用されます。これはすべての lease 文に必要です。 IP アドレスは、ドット付き 4 つ組として指定されなければなりません (例えば、 12.34.56.78)。
filenamestring”;
filename 文は使用するブートファイル名を指定します。これは、標準のクライアント設定スクリプトでは使用されませんが、完全を期すために含まれています。
server-namestring”;
server-name 文は使用するブートサーバ名を指定します。これもまた標準のクライアント設定スクリプトでは使用されません。
option option-declaration;
option 文は、サーバによって供給されたオプションの値を、または、 dhclient.conf で宣言された事前に定義されたリースの場合には、事前に定義されたリースが使用されているなら、ユーザがクライアント設定スクリプトで使用したい値を指定するために使用されます。
scriptscript-name”;
script 文は、DHCP クライアント設定スクリプトのパス名を指定するために使用されます。このスクリプトは、アドレスを要求する前に各インタフェースの初期の設定を行い、いったん提供されているとアドレスをテストして、いったんリースが獲得されるとインタフェースの最後の設定を行うために、 DHCP クライアントによって使用されます。リリースが獲得されないなら、スクリプトは、事前に定義されたリースがあるならテストするために使用され、また有効なリースを識別することができないなら、一度呼び出されます。詳細については、 dhclient.leases(5) を参照してください。
mediummedia setup”;
medium 文は、ネットワークインタフェースが接続されているネットワークのタイプを自動的に決定することができないシステムで使用することができます。 media setup 文字列は、インタフェースを初期化するときに DHCP クライアント設定スクリプトに渡されるシステム依存のパラメータです。 UNIXUNIX ライクシステムでは、この引数は、インタフェースを設定するとき、 ifconfig(8) のコマンドラインで渡されます。

DHCP クライアントは、リースを取得するためにインタフェースを設定するとき、メディアタイプ ( media 文を参照) を使用するなら、自動的にこのパラメータを宣言します。この文は、ネットワークインタフェースがメディアタイプの設定を必要とする場合にだけ、事前に定義されたリースで使用されるべきです。

renew date;
rebind date;
expire date;
renew 文は、DHCP クライアントが、使用しているリースを更新 (renew) するためにサーバへの接続を試み始めるべきである時間を定義します。 rebind 文は、DHCP クライアントが、リースを更新するために 任意の DHCP サーバへの接続を試み始めるべきである時間を定義します。 expire 文は、DHCP クライアントが、リースを更新するためにサーバへの接続することができなかったなら、リースを使用することを停止しなければならない時間を定義します。

これらの宣言は、DHCP クライアントによって獲得されたリースで自動的に設定されますが、また、事前に定義されたリースで構成されなければなりません - 有効期限の時間が過ぎた事前に定義されたリースは DHCP クライアントによって使用されません。

日付は次のように指定されます:

<weekday> <year>/ <month>/ <day> <hour>: <minute>: <second>

weekday は、いつリースの有効期限が切れるかを知らせために、人間にとって簡単に行うために存在しています - それは 0 から 6 までの数字で指定され、0 は日曜日です。事前に定義されたリースを宣言するとき、それは常に 0 として指定することができます。 year は世紀付きで指定されるので、本当に長いリースを除いて、一般的に、4 桁となるはずです。 month は 1 月が 1 から始まる数字として指定されます。訳注: 英語では 1 月は January であるので、このような表現となっています。ひと月の day は同様に 1 から始まるように指定されます。 hour (時) は、0 から 23 の数字で、minute (分) は 0 から 59 の数字で、 second (秒) も 0 から 59 の数字です。

エイリアス宣言

alias { declarations ... }

TCP/IP ローミング (roaming) プロトコルを実行するいくつかの DHCP クライアントは、それらが DHCP を通して獲得するリースに加えることを必要とします。また、DHCP のインタフェースは、ローミングしている間でも不変の IP アドレスを持つことができるように、事前に定義された IP エイリアスで設定されます。 Internet Software Consortium DHCP クライアントは、直接固定のアドレスでのローミングをサポートしませんが、そのような実験を容易にするために、DHCP クライアントは、 alias 宣言を使用して IP エイリアスの設定を行うことができます。

alias 宣言は、subnet-mask オプション以外のオプションが標準のクライアント設定スクリプトによって無視され、有効期限の時間が無視されることを除いて、 lease 宣言に類似しています、典型的な alias 宣言は、interface 宣言、IP エイリアスアドレスのための固定アドレス宣言と subnet-mask オプション宣言を含んでいます。 medium 文は、alias 宣言に決して含まれるべきではありません。

その他の宣言

reject ip-address;
reject 文によって、DHCP クライアントは、サーバ識別子として指定されたアドレスを使用するサーバからの申し出を拒否します。これは、悪党 (rogue) か設定ミスした DHCP サーバによって設定されることを避けるために使用することができますが、それは最後の手段であるべきです - 悪い DHCP サーバを見つけ出して修理するほうが良いでしょう。
interfacename” { declarations ... }
1 つ以上のネットワークインタフェースをもっているクライアントは、どのインタフェースが設定されているかによって異なった振る舞いを必要とするかもしれません。すべてのタイミングパラメータと lease と alias 宣言以外の宣言は、 interface 宣言で囲むことができ、次に、それらのパラメータは、指定された名前に適合するインタフェースだけに使用されます。 interface 宣言がないインタフェースは、任意の interface 宣言の外側で宣言されたパラメータか、またはデフォルト設定を使用します。
mediamedia setup”[ , “ media setup”, ...];
media 文は、IP アドレスを獲得しようとする間に試みられるかもしれない 1 つ以上のメディア設定パラメータを定義します。 DHCP クライアントは、リスト上の各 media setup 文字列ごとに、そのセットアップを使用してインタフェースを設定してブートを試み、そして次のものを試みることを、繰り返します。これは、助けを受けないメディアタイプを検出することができないネットワークインタフェースのために使用することができます - サーバへの要求を行い応答を得ることができるどのメディアタイプも、 (保証がありませんが) たぶん正当です。

media setup は、アドレス獲得の初期フェーズ (DHCPDISCOVER と DHCPOFFER パケット) でのみ使用されます。いったんアドレスが獲得されると、DHCP クライアントは、それをリースデータベースに記録して、アドレスを獲得するために使用されたメディアタイプを記録します。クライアントがリースを更新しようとするときはいつも、それと同じメディアタイプを使用します。クライアントがメディアタイプを繰り返して戻る前に、リースは期限が切れなければなりません。

使用例

次の設定ファイルは、 192.5.5.213 の IP エイリアスがあり、1 つのインタフェース 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; 
    script "/etc/dhclient-script"; 
    media "media 10baseT/UTP", "media 10base2/BNC"; 
} 
 
alias { 
  interface "ep0"; 
  fixed-address 192.5.5.213; 
  option subnet-mask 255.255.255.255; 
}

これは非常に複雑な dhclient.conf ファイルです - 一般的に、利用者のものはより簡単なはずです。多くの場合、空の dhclient.conf ファイルを作成するだけで十分です - 通常、デフォルトは結構良くできています。

作者

dhclient(8) ユーティリティは、Vixie Labs との契約に基づき Ted Lemon <mellon@vix.com>によって書かれました。

現在の実装は、 Henning Brauer <henning@openbsd.org>によって書き直されました。

January 1, 1997 FreeBSD