ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
Oracle Solaris 11.1 での DHCP の作業 Oracle Solaris 11.1 Information Library (日本語) |
DHCP クライアントプロトコルはネットワーク構成情報をどのように管理するか
DHCPv4 クライアントはネットワーク構成情報をどのように管理するか
DHCPv6 クライアントはネットワーク構成情報をどのように管理するか
DHCP クライアントで使用される ipadm コマンドオプション
複数のネットワークインタフェースを備えた DHCP クライアントシステム
DHCPv4 クライアントが特定のホスト名を要求できるようにする方法
DHCP クライアントを適切に設定すれば、実行可能なプログラムやスクリプトを実行して、クライアントシステムに必要な任意のアクションを行うことができます。「イベントスクリプト」と呼ばれるこのプログラムやスクリプトは、一定の DHCP リースイベントが発生すると自動的に実行されます。イベントスクリプトを使用すれば、特定のリースイベントに応じてほかのコマンドやプログラム、スクリプトを実行できます。この機能を使用するためには、独自のイベントスクリプトを作成する必要があります。
dhcpagent では、DHCP リースイベントを表すために次のイベントキーワードが使用されます。
機能説明
インタフェースが DHCP 用に構成されました。クライアントは、DHCP サーバーから肯定応答メッセージ (DHCPv4 ACK) または (DHCPv6 Reply) を受け取り、IP アドレスに対するリース要求を認められます。このイベントスクリプトは、インタフェースの構成が正常に終わると直ちに呼び出されます。
クライアントによるリースの延長が成功しました。このイベントスクリプトは、クライアントが更新要求に対する肯定メッセージを DHCP サーバーから受け取ると直ちに呼び出されます。
リース時間が終了すると、リースが期限切れになります。DHCPv4 の場合、このイベントスクリプトは、リースされたアドレスがインタフェースから削除され、インタフェースが停止状態にされる直前に呼び出されます。DHCPv6 の場合、このイベントスクリプトは、最後に残っているリースされたアドレスがインタフェースから削除される直前に呼び出されます。
クライアントがインタフェースを DHCP 制御下から削除する目的でリースを中断しました。このイベントスクリプトは、インタフェースが DHCP 制御から削除される直前に呼び出されます。
クライアントが IP アドレスを解放します。このイベントスクリプトは、クライアントがインタフェース上のアドレスを解放し、DHCPv4 RELEASE または DHCPv6 Release パケットを DHCP サーバーに送信する直前に呼び出されます。
インタフェースは、DHCPv4 INFORM または DHCPv6 Information-Request メッセージを使用して、新しい構成情報または更新された構成情報を DHCP サーバーから取得します。これらのイベントは、DHCP クライアントがサーバーから構成パラメータだけを取得し、IP アドレスリースを取得しない場合に発生します。
リースが期限切れになったとき、有効なリースが 1 つ以上残っている場合は、期限切れのアドレスが削除される直前にこのイベントスクリプトが呼び出されます。削除されるものには IFF_DEPRECATED フラグのマークが付けられます。
これらのイベントが発生するたびに、dhcpagent は次のコマンドを呼び出します。
/etc/dhcp/eventhook interface event
ここで interface は DHCP を使用しているインタフェースを、event は前述のイベントキーワードの 1 つをそれぞれ表します。たとえば、最初にインタフェースを DHCP 用に構成するときに、dhcpagent は、イベントスクリプトを次のように呼び出します。
/etc/dhcp/eventhook net0 BOUND
イベントスクリプト機能を使用するためには、次のことを行う必要があります。
実行可能ファイルに /etc/dhcp/eventhook という名前を付けます。
ファイルの所有者を root にする。
アクセス権限を 755 (rwxr-xr-x) にします。
前述のイベントに応えて一連のアクションを行うスクリプトまたはプログラムを記述します。Sun は新しいイベントを追加する場合があるため、プログラムは、認識されないイベントや処理を必要としないイベントについては何もせずに無視する必要があります。たとえば、プログラムまたはスクリプトで、イベントが RELEASE の場合はログファイルに書き込み、それ以外のイベントは無視します。
スクリプトやプログラムを非対話型にします。イベントスクリプトが呼び出される前に、stdin、stdout、および stderr は /dev/null に接続されます。出力またはエラーを見るためには、ファイルにリダイレクトする必要があります。
イベントスクリプトは、そのプログラム環境を dhcpagent から継承し、root 特権で実行します。スクリプトでは必要に応じて dhcpinfo ユーティリティーを使用して、より詳しいインタフェースの情報を取得できます。詳細は、dhcpinfo(1) のマニュアルページを参照してください。
dhcpagent デーモンは、イベントスクリプトがすべてのイベントに対して終了するまで待ちます。55 秒たってもイベントスクリプトが終了しないと、dhcpagent は SIGTERM シグナルをスクリプトプロセスに送信します。さらに、追加の 3 秒が過ぎてもプロセスが終了しないと、デーモンは SIGKILL シグナルを送信してプロセスを強制的に終了させます。
dhcpagent(1M) のマニュアルページにイベントスクリプトの一例が示されています。