dhclient - 動的ホスト設定プロトコルのクライアント |
dhclient [ -p port ] [ -D ] [ -d ] [ -q ] [ -v ] [ -1 ] [ -r ] [ -lf lease-file ] [ -pf pid-file ] [ -cf config-file ] [ -sf script-file ] [ -s server ] [ -g relay ] [ -i interval ] [ -n ] [ -nw ] [ -w ] [ if0 [ ...ifN ] ] |
Internet Systems Consortium の DHCP クライアントである dhclient は動 的 ホスト設定プロトコル (DHCP: Dynamic Host Configuration Protocol) または BOOTP プロトコルを用いて、あるいはこれらのプロトコルが失敗した場合に は アドレスを静的に割り当てて、 1 つ以上のネットワークインタフェースを設定 する方法を提供します。 |
DHCP プロトコルでは、1 つ以上のサブネットに割り当てることのできる IP ア ド レ スのリストを管理する中央サーバに、ホストがアクセスできます。 DHCP クライアントはこのリストからアドレスを要求して、それをネットワーク通 信 の 一時的な土台に用いることができます。また DHCP プロトコルは、デフォル トルータの場所やネームサーバの場所など、クライアントが接続している ネッ ト ワークに関する重要な情報をクライアントに詳細に知らせる機構も提供しま す。 起動時に dhclient は dhclient.conf から設定指示を読み取ります。それから 現 在のシステムに組み込まれているすべてのネットワークインタフェースのリ ストを取得します。各インタフェースに対し dhclient は DHCP プロトコル を 用いて設定を試みます。 シ ス テムリブートやサーバ再起動の際にリースを失わないように、 dhclient は割り当てられたリースのリストを dhclient.leases(5) ファイルに保存し ま す。 起 動 時、dhclient.conf ファ イ ル を 読み取った後、 dhclient は dhclient.leases ファイルを読み込んで、割り当てられたリースに関するメ モ リを更新します。 新 しいリースを取得すると、dhclient.leases ファイルの末尾に付け加えられ ます。ファイルが極端に大きくなるのを防ぐために、 dhclient は時おりコ ア 内 部 のリースデータベースから新規に dhclient.leases ファイルを作成しま す。古い dhclient.leases ファイルは、 dhclient が次にデータベースを作り 替えるまで、 dhclient.leases~ という名前で保存されます。 dhclient が最初に起動されたとき (一般的にはシステムブート初期過程の間) に DHCP サーバが利用できなければ、古いリースは残 さ れ ま す。 そ の 場 合、dhclient.leases ファイルからまだ期限の切れていない古いリースを検査 し、有効であると判断されれば、それらの期限が切れるかまたは DHCP サー バ が利用できるようになるまで、そのリースを使います。 DHCP サーバが存在しないネットワークに時おりアクセスする必要があるような 移動ホストは、そのネットワーク上の固定アドレスのリースをあらかじめ読 み 込 んでおくことができます。 DHCP サーバへのアクセスがどれも成功しなかっ た場合、 dhclient はその静的なリースが有効であるか検証し、有効であれ ば 次に再起動されるまでそのリースを使います。 ま た移動ホストは、DHCP は利用できないが BOOTP なら利用できるようなネッ トワークへ移動することもあるでしょう。そのような場合は、古いリースを 順 次試すよりも、そのネットワークの管理者と相談して BOOTP データベースにエ ントリを作成してもらい、そのネットワーク上で素早くブートできるように す るとよいでしょう。 |
dhclient が設定しようとするネットワークインタフェースの名前をコマンドラ インで指定できます。コマンドラインでインタフェース名が指定され な け れ ば、 dhclient はすべてのネットワークインタフェースを識別し、可能なら非 ブロードキャストインタフェースは除いて、それぞれのインタフェースを設 定 しようとします。 dhclient.conf(5) ファイル中の名前でインタフェースを指定することも可能で す。この方法でインタフェースを指定した場合、クライアントは、設定ファ イ ル 中で指定したインタフェースもしくはコマンド行で指定したインタフェース のどちらかだけを設定するでしょう。 -D フラグを指定すると、 dhclient が dhclient-script と組み合わせて使 用 するために作成したスクリプトを、 /tmp に保存させます。 DHCP クライアントが標準ポート (ポート番号 68) 以外のポートで待機および 送信する必要がある場合には -p フラグが使えます。こ の フ ラ グ に 続 け て、dhclient が使う udp ポート番号を指定します。これは主としてデバッグ 目的では有用です。クライアントが待機および送信するために使用するポー ト にデフォルトとは違うポートを指定する場合、クライアントはもう 1 つ別の送 信先ポートも使用します。その送信先ポートは、指定した送信先ポートより も 大きな番号を持ったものです。 DHCP クライアントは、通常 IP アドレスを獲得していない間任意のプロトコル メッセージをリミテッドブロードキャストアドレスである 255.255.255.255 へ と 送信します。デバッグ目的で、サーバがこれらのメッセージをどこか別のア ドレスへ送信した方が便利なことがあります。 -s フラグの後に送信先 の IP アドレスもしくはドメイン名をつけて指定できます。 テスト目的で、DHCP クライアントが送信する全てのパケットの giaddr フィー ルドを -g フラグに送信先の IP アドレスを続けた形を使用することで設定 す る ことができます。これはテスト目的の時のみ有用なものであり、堅実さや使 いやすさを求める状況で動作することを想定してはいけません。 FreeBSD では、自動的にネットワークのリンク状態を扱うため に、 dhclient を有効化できます。通常、ポーリングは 5 秒ごとに実施されます。ポーリング 間隔は -i フラグに続いて秒数を指定することで設定可能です。最小値は 1 秒 です。 DHCP クライアントは、通常インタフェースを設定するまではフォアグラウンド で動作し、その後バックグラウンドで動作するようになります。dhclient を常 に フォアグラウンドのプロセスとして動作させるためには、 -d フラグを指定 する必要があります。これは、DHCP クライアントがデバッガのもとで動作して い る場合や、System V システムの inittab の外側で動作している場合には有 効なものです。 このクライアントは、通常は起動メッセージを表示し、アドレスを獲得する ま で 標準エラー出力にプロトコルシーケンスを書き出します。アドレスを獲得し た後は syslog (3) ファシリティを使用してメッセージのログを取るだけに な り ます。 -q フラグを使用すると、エラー以外のメッセージを標準エラー出力 に書き出さないようになります。 -v フラグは全メッセージを有効にしま す。 -q の逆です。 クライアントは、DHCP プロトコルで義務づけられていないため、通常は現在取 得しているリースを解放することはありません。ただ、ケーブル ISP のなかに は、クライアントが割り当てられたIP アドレスを解放したい場合には、サーバ に通知するように義務づけているところもあります。 -r フラグを用いる と、 明 示的に現在のリースを解放し、いったんリースを解放するとクライアントは 終了します。 -1 フラグを指定すると、 dhclient はひとつのリースに対し 1 度だけしか 取 得を試みません。もし取得に失敗すれば dhclient は終了コード 2 で終了しま す。 DHCP クライアントは、通常は設定情報を /etc/dhclient.conf から、 リー ス データベースを /var/db/dhclient.leases から取得し、自分のプロセス ID を /var/run/dhclient.pid という名前のファイルに保存し、そしてネットワー ク イ ン タフェースを /sbin/dhclient-script を使用して設定します。これらの ファイルに別の名前を指定したり、別の場所を指定したりするには、それぞ れ -cf, -lf, -pf および -sf フラグを、後ろにファイル名を続ける形で使用して ください。この方法は、例えば DHCP クライアントが起動したときに /var/db も しくは /var/run がまだマウントされていない場合には特に有用なものにな り得ます。 DHCP クライアントは、設定すべきネットワークインタフェースを同定できない 場 合、通常は終了します。ラップトップコンピュータやホットスワップ可能な I/O バスを持ったコンピュータでは、ブロードキャストインタフェースがシ ス テ ム起動後に追加されることがあり得ます。 -w フラグを用いると、そのよう なインタフェースが 1 つも見つからないときにもクライアントが終了しないよ うにできます。後で omshell (8) プログラムを使用して、ネットワークインタ フェースが追加されたり削除されたりしたことをクライアントに通知するこ と が でき、これによってクライアントがこのインタフェース上の IP アドレスを 設定するよう試みることができます。 -n フラグを用いることで、どのインタフェースも設定しようとしないよ う に DHCP クライアントを指示することができます。このフラグは、きっと -w フラ グと共に使用すると有用でしょう。 IP アドレスを獲得するまで待つのではなく、即座にデーモンとなるようにクラ イアントを指示することもできます。 -nw フラグを与えると可能です。 |
dhclient.conf(5) ファイルの書式は別に解説されています。 |
こ の DHCP クライアントは、動作中にその動作を停止させることなく自分自身 を制御できるようにするための機能を提供しています。この機能は、リモー ト オ ブジェクト操作 API である OMAPI を用いて提供されています。OMAPI クラ イアントは、TCP/IP を使用してこの DHCP クライアントに接続します。 そ し て、 DHCP クライアントの現在の状態を検査でき、その状態を変更することが できます。 ユーザプログラムでは、基礎にある OMAPI プロトコルを直接実装するのではな く、dhcpctl API も し く は OMAPI そのものを使用すべきです。 dhcpctl は、OMAPI が自動で行ってはくれない雑事のい く つ か を 扱 う ラッ パ で す。dhcpctl および OMAPI については dhcpctl(3) および omapi(3) に記述さ れています。クライアントを用いてやりたいことのほとんどは、特別なプロ グ ラ ム を 書かなくとも omshell(1) コマンドを使用して直接実現できるもので す。 |
制御オブジェクトを使用すると、DHCP クライアントを終了させ、保持している リースをすべて解放し、クライアントが追加した DNS レコードをすべて消去す ることができるようになります。また、クライアントを一時停止させ、クラ イ ア ントが使用しているインタフェースの設定を除くことができるようにもなり ます。その後で、DHCP クライアントを再起動させることができ、インタフェー ス を 再 設定することができます。通常、ハイバネーションに入る前やラップ トップコンピュータではスリープする前に DHCP クライアントを一時停止さ せ る でしょう。そして、電源が戻ってきた後で DHCP クライアントを回復させる でしょう。こうすることで、コンピュータがハイバネーションやスリープ中 に は PC カードを停止させておき、コンピュータがハイバネーションやスリープ から復帰したら以前の状態に再度初期化することができるようになるのです。 制御オブジェクトには属性が 1 つあります。それは状態属性です。クライアン トを終了させるには、クライアントの状態属性を 2 に設定します。クライアン トは自動的に DHCPRELEASE を行うでしょう。クライアントを一時停止させるに は、クライアントの状態属性を 3 に設定します。クライアントを復帰させるに は、クライアントの状態属性を 4 に設定します。 |
/sbin/dhclient-script, /etc/dhclient.conf, /var/db/dhclient.leases, /var/run/dhclient.pid, /var/db/dhclient.leases~ |
dhclient(8) は Ted Lemon が Vixie Enterprises と協力して Internet Systems Consortium のために書きました。 Internet Systems Consortium に つ い て よ り 詳 し く は、 http://www.isc.org をご覧ください。 Vixie Enterprises についてより詳しくは、 http://www.vix.com をご覧ください。 本クライアントは、Elliot Poger が Stanford 大学の MosquitoNet プロ ジェ クトに参加している間に、 Linux での利用に際し大幅に修正、改良を行いまし た。 現在のバージョンは、Elliot による Linux での改良に負うところが大きい で すが、 Internet Systems Consortium の DHCP サーバが使うものと同じネット ワーキングフレームワークを用いるように、Ted Lemon が大幅な再編成や部 分 的 な書き換えを行いました。システム特有の設定コードの大部分はシェルスク リプトに移されたので、より多くのオペレーティングシステムのサポートが 加 え られるにつれ、システム特有の設定コードをそのオペレーティングシステム に移植したり管理したりする必要はなくなるでしょう。代わりに、シェルス ク リプトが環境に合ったツールを呼び出してその目的を果たしてくれます。 |