総合手引 | セクション 8 | English | オプション |
本スクリプトは、エンドユーザにカスタマイズされることを意図していません。 ローカルなカスタマイズが必要な場合、 これは入 (enter) と出 (exit) というフックを使用することで可能となります (詳細はフック参照)。 これらのフックは、 /etc/resolv.conf 作成時に、 クライアントのデフォルト動作をユーザがオーバライドできるようにします。
特定のオペレーティングシステムでは、 クライアントの実体は動作するとしても、 標準のスクリプトが動作しないかもしれません。 先駆的なユーザが新規スクリプトを作成したり既存のものを修正したりする必要がある ことはもっともなことです。 一般的には、それぞれのコンピュータに固有のカスタマイズは /etc/dhclient.conf スクリプトで行うべきです。 /etc/dhclient.conf のカスタマイズ無しにできないカスタマイズや、 入と出のフックの使用ではできないカスタマイズに気づいた場合には、 バグレポートを送ってください。
make_resolv_conf 関数の定義の後、クライアントスクリプトは 実行可能な /etc/dhclient-enter-hooks スクリプトの存在を検査し、 存在する場合には Bourne シェルの '.' コマンドを使用して 本スクリプトをインラインで起動します。 操作で記述されているすべての環境が本スクリプトで使用可能であり、 スクリプトの動作の変更が必要な場合には環境の修正が許されています。 スクリプト実行中にエラーが発生した場合、 exit_status 変数を非 0 値に設定することが可能であり、 クライアントスクリプト終了直後に /sbin/dhclient-script はそのエラーコードで終了します。
すべての処理の完了後に、 /sbin/dhclient-script は実行可能な /etc/dhclient-exit-hooks スクリプトの存在を検査し、存在する場合には '.' コマンドでこれを起動します。 dhclient-script の 終了状態は dhclient-exit-hooks の exit_status シェル変数に渡され、 起動された仕事にスクリプトが成功した場合には値は常に 0 になります。 dhclient-enter-hooks の項で前述したその他の環境も引き継がれます。 /etc/dhclient-exit-hooks は exit_status に手を加えて dhclient-script の戻り値を変更できます。
IP エイリアスが dhclient.conf で宣言されている場合、 このアドレスが $alias_ip_address で渡されます。 本 IP アドレスへの経路とともに、 本 IP アドレスを対象インタフェースから削除する必要があります。
アドレスを実際に設定する前に、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) と 同じ場合、これを使用してはならないことに注意してください。 なぜなら、この場合には他のエイリアスのパラメータが正しくない可能性がある からです。
リースを検査する通常の方法は、REBIND と同様にネットワークを設定して (複数のリースを検査するために呼ばれることがあるからです)、 $routers で定義される最初のルータに ping することです。 応答を受信した場合、 インタフェースが現在接続されているネットワークに対して、リースが有効です。 $new_static_routers に加えて $new_routers に列挙されている全ルータに ping を試すようになれば、 完全性が増すでしょう。しかし、現在のスクリプトはそうなっていません。
dhclient-script (8) |
総合手引 | セクション 8 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | What is this horrible fascination with Unix? The operating system of the 1960s, still gaining in popularity in the 1990s. | ” |
— Donald A. Norman |