Provided by: isc-dhcp-common_4.2.4-7ubuntu12.13_amd64 bug

名称

       dhclient-script - DHCP クライアントのネットワーク設定スクリプト

解説

       DHCP  クライアントのネットワーク設定スクリプトは、  時あるごとに  dhclient(8) が呼び出しま
       す。 DHCP クライアントは、本スクリプトを使用することにより、  アドレス要求に先立つ各インタ
       フェースの初期設定と、 付与されたアドレスの検査と、 リース獲得時のインタフェースの最終設定
       を行います。 リースが獲得されなかった場合、 定義済みのリースが存在するならばこれを検査する
       ために本スクリプトは使用され、 有効なリースが判明しなかった場合にももう 1 回このスクリプト
       が呼ばれます。

       本スクリプトは、エンドユーザにカスタマイズされることを意図していません。  ローカルなカスタ
       マイズが必要な場合、 これは入 (enter) と出 (exit) というフックを使用することで可能となりま
       す (詳細はフック参照)。 これらのフックは、  /etc/resolv.conf  作成時に、  クライアントのデ
       フォルト動作をユーザがオーバライドできるようにします。

       特定のオペレーティングシステムでは、 クライアントの実体は動作するとしても、 標準のスクリプ
       トが動作しないかもしれません。  先駆的なユーザが新規スクリプトを作成したり既存のものを修正
       したりする必要がある ことはもっともなことです。 一般的には、それぞれのコンピュータに固有の
       カスタマイズは ETCDIR/dhclient.conf スクリプトで行うべきです。 ETCDIR/dhclient.conf のカス
       タマイズ無しにできないカスタマイズや、  入と出のフックの使用ではできないカスタマイズに気づ
       いた場合には、 バグレポートを送ってください。

フック

       開始時に、クライアントスクリプトはまずシェル関数を定義します。その関数は  make_resolv_conf
       であり、後に  /etc/resolv.conf ファイルを作成するために使用されます。 デフォルト動作をオー
       バライドするには、 この関数を入のフックスクリプトで再定義してください。

       make_resolv_conf  関数の定義の後、クライアントスクリプトは   実行可能な   ETCDIR/dhclient-
       enter-hooks スクリプトの存在を検査し、 存在する場合には Bourne シェルの '.' コマンドを使用
       して 本スクリプトをインラインで起動します。 操作で記述されているすべての環境が本スクリプト
       で使用可能であり、 スクリプトの動作の変更が必要な場合には環境の修正が許されています。 スク
       リプト実行中にエラーが発生した場合、 exit_status 変数を非 0 値に設定することが可能であり、
       クライアントスクリプト終了直後に CLIENTBINDIR/dhclient-script はそのエラーコードで終了しま
       す。

       すべての処理の完了後に、 CLIENTBINDIR/dhclient-script  は実行可能な  ETCDIR/dhclient-exit-
       hooks    スクリプトの存在を検査し、存在する場合には    '.'    コマンドでこれを起動します。
       dhclient-script の 終了状態は dhclient-exit-hooks の exit_status シェル変数に渡され、 起動
       された仕事にスクリプトが成功した場合には値は常に  0 になります。 dhclient-enter-hooks の項
       で前述したその他の環境も引き継がれます。 ETCDIR/dhclient-exit-hooks は exit_status  に手を
       加えて dhclient-script の戻り値を変更できます。

操作

       dhclient がクライアント設定スクリプトを起動する必要があるとき、 様々な変数を環境に定義して
       から CLIENTBINDIR/dhclient-script を起動します。 すべての場合において、$reason  にはスクリ
       プトが起動される理由名が設定されます。  次の理由が現在定義されています:  MEDIUM,  PREINIT,
       BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL, TIMEOUT。

MEDIUM

       DHCP クライアントは、インタフェースのメディアタイプの設定を求めています。 インタフェース名
       は $interface で渡され、メディアタイプは $medium で渡されます。

PREINIT

       DHCP  クライアントは、 実際のアドレスを受け取る前にパケットを送信する目的で、 要求通りにイ
       ンタフェースが設定されることを求めています。 BSD  のソケットライブラリを使用するクライアン
       トでは、  IP  アドレス  0.0.0.0  かつブロードキャストアドレス  255.255.255.255 で、 インタ
       フェースを設定することを意味します。 他のクライアントでは、 実際に IP アドレスを与えること
       なく単にインタフェースを設定することで  実現されるでしょう。 インタフェース名は $interface
       で渡され、メディアタイプは $medium で渡されます。

       IP エイリアスが dhclient.conf で宣言されている場合、 このアドレスが $alias_ip_address で渡
       されます。 本 IP アドレスへの経路とともに、 本 IP アドレスを対象インタフェースから削除する
       必要があります。

BOUND

       DHCP   クライアントは、新アドレスへの初期の結合を完了しました。   新しい   IP   アドレスは
       $new_ip_address  で渡され、  インタフェース名は $interface で渡されます。 メディアタイプは
       $medium で渡されます。 サーバから獲得したオプションは、dhcp-options で宣言されている  オプ
       ション名で渡されます。 例外として、 有効なシェル変数とするために ダッシュ ('-') はアンダス
       コア('_')で置き換えられ、 変数名は  new_  で開始します。  例えば、新しいサブネットマスクは
       $new_subnet_mask で渡されます。

       アドレスを実際に設定する前に、dhclient-script は何らかの方法で そのアドレスに対して ARP を
       行い、返事を受け取った場合には非   0    の値で    終了するべきです。この場合クライアントは
       DHCPDECLINE   メッセージをサーバ  に送信し、違うアドレスを取得します。  この作業は  RENEW,
       REBIND, REBOOT 状態でも同様に行いますが、 必ずしも必要ではなく、実際好ましくないでしょう。

       結合が完了すると、      ネットワークに関する多くのパラメータを設定する必要があるでしょう。
       $new_domain_name および $new_domain_name_servers (これには複数のサーバを空白で区切って列挙
       してあるかもしれません) を使用して、 新しい /etc/resolv.conf を作成する必要があります。 デ
       フォルト経路は、$new_routers          を使用して設定する必要があります。          静的経路
       は、$new_static_routes を使用して設定する必要があるかもしれません。

       IP エイリアスが宣言されている場合、ここで設定する必要があります。 エイリアスの IP アドレス
       は   $alias_ip_address として記述され、 エイリアス用に設定される他の DHCP オプション (例え
       ばサブネットマスク) は 前述のように変数で渡されますが、 $new_ で開始するのではなく $alias_
       で開始します。  エイリアスの IP アドレスが結合された IP アドレス ($new_ip_address) と 同じ
       場合、これを使用してはならないことに注意してください。  なぜなら、この場合には他のエイリア
       スのパラメータが正しくない可能性がある からです。

RENEW

       結合が更新されると、スクリプトは BOUND と同様に呼ばれますが、 $new_ で開始する全変数に加え
       て $old で開始する別の変数の組があるという 例外があります。 変更された可能性がある永続的な
       設定は、削除する必要があります。  例えば、結合されたアドレスに対するローカル経路が設定され
       た場合、 古いローカル経路を削除する必要があります。 デフォルト経路が変更された場合、古いデ
       フォルト経路を削除する必要があります。  静的経路が変更された場合、古いものを削除する必要が
       あります。 その他については、BOUND と同様に処理可能です。

REBIND

       DHCP クライアントが、新規 DHCP サーバに再結合されました。  これは  RENEW  と同様に扱えます
       が、IP アドレスが変わった場合には、 ARP 表をクリアする必要があります。

REBOOT

       DHCP クライアントは、リブート後に元のアドレスを再獲得することに成功しました。 これは BOUND
       と同様に処理可能です。

EXPIRE

       DHCP クライアントはリース更新と新規リース獲得に失敗し、 リースの期限が切れました。 対象 IP
       アドレスを解放する必要があり、  RENEW および REBIND と同様に、関連するパラメータを削除する
       必要があります。

FAIL

       DHCP クライアントは DHCP サーバに接続できず、 また検査した IP アドレスには有効なものはあり
       ませんでした。    最後に検査したリースのパラメータは、設定解除する必要があります。    これ
       は、EXPIRE と同様に扱えます。

TIMEOUT

       DHCP クライアントはどの DHCP サーバにも接続できませんでした。 しかしながら、古いリースが識
       別され、 BOUND と同様に、この古いリースのパラメータが渡されました。 クライアントの設定スク
       リプトは、このパラメータを検査し、 これが有効であると信じる理由があるならば、値 0 で終了す
       べきです。 そうでないならば、非 0 の値で終了すべきです。

       リースを検査する通常の方法は、REBIND  と同様にネットワークを設定して (複数のリースを検査す
       るために呼ばれることがあるからです)、 $routers で定義される最初のルータに ping  することで
       す。 応答を受信した場合、 インタフェースが現在接続されているネットワークに対して、リースが
       有効です。 $new_static_routers に加えて $new_routers に列挙されている全ルータに ping  を試
       すようになれば、 完全性が増すでしょう。しかし、現在のスクリプトはそうなっていません。

関連ファイル

       類似したオペレーティングシステムに対するスクリプトファイルは  似ていたり全く同じかもしれま
       せんが、一般には、  各オペレーティングシステム用に各々のスクリプトファイルがあるべきです。
       Internet Systems Consortium の DHCP 配布に含まれるスクリプトファイルは、 client/scripts 以
       下の配布ツリーにあり、 動作対象オペレーティングシステム名になっています。

バグ

       複数インタフェースを使用する場合、 サーバが提供する設定パラメータ同士が 衝突しないようにす
       る明確な方法はありません。  例えば、 標準の dhclient-script は /etc/resolv.conf を再度書き
       換えてしまいます。 すなわち、複数のインタフェースが設定されている場合、 あるサーバから提供
       される値に  /etc/resolv.conf が初期化された後に、 別のサーバから提供される値に初期化される
       という動作を繰り返します。 どちらのサーバから提供される情報も有効である場合には、 実際上問
       題とはならないものの、混乱のもとになりえます。

関連項目

       dhclient.conf(5), dhclient.leases(5), dhclient(8)

作者

       dhclient-script(8)   は  Ted  Lemon  が  Vixie  Enterprises  と協力して  Internet  Systems
       Consortium  のために  書きました。  Internet  Systems  Consortium   についてより詳しくは、
       https://www.isc.org     をご覧ください。    Vixie    Enterprises    についてより詳しくは、
       http://www.vix.com をご覧ください。

                                                                               dhclient-script(8)