JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris の管理: IP サービス     Oracle Solaris 10 1/13 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I システム管理の概要: IP サービス

1.  Oracle Solaris TCP/IP プロトコル群 (概要)

パート II TCP/IP の管理

2.  TCP/IP ネットワークの計画 (手順)

3.  IPv6 の紹介 (概要)

4.  IPv6 ネットワークの計画 (手順)

5.  TCP/IP ネットワークサービスと IPv4 アドレス指定の構成 (作業)

6.  ネットワークインタフェースの管理 (作業)

7.  IPv6 ネットワークの構成 (手順)

8.  TCP/IP ネットワークの管理 (手順)

9.  ネットワークの問題の障害追跡 (手順)

10.  TCP/IP と IPv4 の詳細 (リファレンス)

11.  IPv6 の詳細 (リファレンス)

パート III DHCP

12.  DHCP について (概要)

13.  DHCP サービスの使用計画 (手順)

14.  DHCP サービスの構成 (手順)

15.  DHCP の管理 (タスク)

16.  DHCP クライアントの構成と管理

DHCP クライアントについて

DHCPv6 サーバー

DHCPv4 と DHCPv6 の相違点

DHCP 管理モデル

MAC アドレスとクライアント ID

プロトコルの詳細

論理インタフェース

オプションのネゴシエーション

構成の構文

DHCP クライアントの起動

DHCPv6 通信

DHCP クライアントプロトコルはネットワーク構成情報をどのように管理するか

DHCPv4 クライアントはネットワーク構成情報をどのように管理するか

DHCPv6 クライアントはネットワーク構成情報をどのように管理するか

DHCP クライアントのシャットダウン

DHCP クライアントを使用可能または使用不可にする

DHCP クライアントを有効にする方法

DHCP クライアントを無効にする方法

DHCP クライアントの管理

DHCP クライアントで使用する ifconfig コマンドオプション

DHCP クライアント構成パラメータの設定

DHCPv4 の場合

DHCPv4 および DHCPv6 の場合

複数のネットワークインタフェースを備えた DHCP クライアントシステム

DHCPv4 クライアントのホスト名

DHCPv4 クライアントが特定のホスト名を要求できるようにする方法

DHCP クライアントシステムとネームサービス

NIS+ クライアントとしての DHCP クライアントの設定

DHCP クライアントを NIS+ クライアントとして設定する方法

DHCP クライアントのイベントスクリプト

17.  DHCP のトラブルシューティング (リファレンス)

18.  DHCP コマンドと DHCP ファイル (リファレンス)

パート IV IP セキュリティー

19.  IP セキュリティーアーキテクチャー (概要)

20.  IPsec の構成 (タスク)

21.  IP セキュリティーアーキテクチャー (リファレンス)

22.  インターネット鍵交換 (概要)

23.  IKE の構成 (タスク)

24.  インターネット鍵交換 (リファレンス)

25.  Oracle Solaris の IP フィルタ (概要)

26.  IP フィルタ (タスク)

パート V IPMP

27.  IPMP の紹介 (概要)

28.  IPMP の管理 (タスク)

パート VI IP サービス品質 (IPQoS)

29.  IPQoS の紹介 (概要)

30.  IPQoS 対応ネットワークの計画 (タスク)

31.  IPQoS 構成ファイルの作成 (手順)

32.  IPQoS の起動と保守(手順)

33.  フローアカウンティングの使用と統計情報の収集 (タスク)

34.  IPQoS の詳細 (リファレンス)

用語集

索引

DHCP クライアントのイベントスクリプト

DHCP クライアントを適切に設定すれば、実行可能なプログラムやスクリプトを実行して、クライアントシステムに必要な任意のアクションを行うことができます。「イベントスクリプト」と呼ばれるこのプログラムやスクリプトは、一定の DHCP リースイベントが発生すると自動的に実行されます。イベントスクリプトを使用すれば、特定のリースイベントに応じてほかのコマンドやプログラム、スクリプトを実行できます。この機能を使用するためには、独自のイベントスクリプトを作成する必要があります。

dhcpagent では、DHCP リースイベントを表すために次のイベントキーワードが使用されます。

イベントキーワード

機能説明

BOUNDBOUND6

インタフェースが DHCP 用に構成されました。クライアントは、DHCP サーバーから肯定メッセージ (DHCPv4 ACK) または (DHCPv6 Reply) を受け取り、IP アドレスに対するリース要求を認められます。このイベントスクリプトは、インタフェースの構成が正常に終わると直ちに呼び出されます。

EXTENDEXTEND6

クライアントによるリースの延長が成功しました。このイベントスクリプトは、クライアントが更新要求に対する肯定メッセージを DHCP サーバーから受け取ると直ちに呼び出されます。

EXPIREEXPIRE6

リース時間が終了すると、リースが期限切れになります。DHCPv4 の場合、このイベントスクリプトは、リースされたアドレスがインタフェースから削除され、インタフェースが停止状態にされる直前に呼び出されます。DHCPv6 の場合、このイベントスクリプトは、最後に残っているリースされたアドレスがインタフェースから削除される直前に呼び出されます。

DROPDROP6

クライアントがインタフェースを DHCP 制御下から削除する目的でリースを中断しました。このイベントスクリプトは、インタフェースが DHCP 制御から削除される直前に呼び出されます。

RELEASERELEASE6

クライアントが IP アドレスを解放します。このイベントスクリプトは、クライアントがインタフェース上のアドレスを解放し、DHCPv4 RELEASE または DHCPv6 Release パケットを DHCP サーバーに送信する直前に呼び出されます。

INFORM INFORM6

インタフェースは、DHCPv4 INFORM または DHCPv6 Information-Request メッセージを使用して、新しい構成情報または更新された構成情報を DHCP サーバーから取得します。これらのイベントは、DHCP クライアントがサーバーから構成パラメータだけを取得し、IP アドレスリースを取得しない場合に発生します。

LOSS6

リースが期限切れになったとき、有効なリースが 1 つ以上残っている場合は、期限切れのアドレスが削除される直前にこのイベントスクリプトが呼び出されます。削除されるアドレスは IFF_DEPRECATED フラグでマークされます。

これらのイベントが発生するたびに、dhcpagent は次のコマンドを呼び出します。

/etc/dhcp/eventhook interface event

ここで interface は DHCP を使用しているインタフェースを、event は前述のイベントキーワードの 1 つをそれぞれ表します。たとえば、最初に ce0 インタフェースを DHCP 用に構成すると、dhcpagent は、イベントスクリプトを次のように呼び出します。

/etc/dhcp/eventhook net0 BOUND

イベントスクリプト機能を使用するためには、次のことを行う必要があります。

イベントスクリプトは、そのプログラム環境を dhcpagent から継承し、root 特権で実行します。スクリプトでは、必要に応じて、dhcpinfo ユーティリティーを使ってより詳しいインタフェースの情報を取得できます。詳細は、dhcpinfo(1) のマニュアルページを参照してください。

dhcpagent デーモンは、イベントスクリプトがすべてのイベントに対して終了するまで待ちます。55 秒経ってもイベントスクリプトが終了しないと、dhcpagentSIGTERM シグナルをスクリプトプロセスに送信します。さらに、追加の 3 秒が過ぎてもプロセスが終了しないと、デーモンは SIGKILL シグナルを送信してプロセスを強制的に終了させます。

dhcpagent(1M) のマニュアルページにイベントスクリプトの一例が示されています。

例 16-3 は、DHCP イベントスクリプトを使って /etc/resolv.conf ファイルの内容を最新の状態に保つ方法を示しています。BOUNDEXTEND イベントが発生すると、スクリプトは、ドメインサーバーとネームサーバーの名前を変更します。EXPIREDROPRELEASE イベントが発生すると、スクリプトは、ドメインサーバーとネームサーバーの名前をファイルから削除します。


注 - このスクリプト例では、DHCP が、ドメインサーバー名およびネームサーバー名の正式な情報源であることを想定しています。さらに、DHCP 制御下のすべてのインタフェースが、一貫性のある最新の情報を返すことを想定しています。これらの前提は、実際のシステムの条件と一致しない場合があります。


例 16-3 /etc/resolv.conf ファイルを更新するイベントスクリプト

#!/bin/ksh -p

PATH=/bin:/sbin export PATH
umask 0222

# Refresh the domain and name servers on /etc/resolv.conf

insert ()
{
    dnsservers=`dhcpinfo -i $1 DNSserv`
    if [ -n "$dnsservers" ]; then
        # remove the old domain and name servers
        if [ -f /etc/resolv.conf ]; then
            rm -f /tmp/resolv.conf.$$
            sed -e '/^domain/d' -e '/^nameserver/d' \
                /etc/resolv.conf > /tmp/resolv.conf.$$
        fi

        # add the new domain
        dnsdomain=`dhcpinfo -i $1 DNSdmain`
        if [ -n "$dnsdomain" ]; then
            echo "domain $dnsdomain" >> /tmp/resolv.conf.$$
        fi

        # add new name servers
        for name in $dnsservers; do
            echo nameserver $name >> /tmp/resolv.conf.$$
        done
        mv -f /tmp/resolv.conf.$$ /etc/resolv.conf
    fi
}

# Remove the domain and name servers from /etc/resolv.conf

remove ()
{
    if [ -f /etc/resolv.conf ]; then
        rm -f /tmp/resolv.conf.$$
        sed -e '/^domain/d' -e '/^nameserver/d' \
            /etc/resolv.conf > /tmp/resolv.conf.$$
        mv -f /tmp/resolv.conf.$$ /etc/resolv.conf
    fi
}

case $2 in
BOUND | EXTEND)
    insert $1
    exit 0
    ;;
EXPIRE | DROP | RELEASE)
    remove
    exit 0
    ;;
*)
    exit 0
    ;;
esac