DHCPサーバーの設定

DHCPサーバーを設定するには、設定ファイル/etc/dhcpd.confを使 用します。

また、DHCPはファイル/var/lib/dhcp/dhcpd.leasesを使用してク ライアントのリースデータベースを保存します。詳しくはリースデータベースを参照してください。

設定ファイル

DHCPサーバーを設定するには、まずクライアントのネットワーク情報を保存する設定ファ イルを作成します。すべてのクライアントに対するグローバルオプションを宣言すること も、クライアントシステムごとにオプションを宣言することもできます。

設定ファイルには、任意のタブや空白行を使用して書式をわかりやすく整えることができ ます。キーワードには大文字小文字の区別があり、先頭がシャープ記号(#)の行はコメン トとみなされます。

設定ファイルのステートメントには次の2種類があります。

一部のパラメータは、optionキーワードで開始する必要があります。 optionは、DHCPオプションを設定するものです。一方、パラメータは、オプションでない 値を設定したり、DHCPサーバーの動作を制御したりするものです。

重要項目重要
 

設定ファイルを変更した場合、service dhcpd restartコマンドで DHCPデーモンを再起動するまでは変更内容は反映されません。

中かっこ({ })で囲まれたセクションの前に宣言されたパラメータとオプションは、グロー バルパラメータとみなされます。グローバルパラメータは、以降のすべてのセクションに 適用されます。

図12-1では、routerssubnet-maskdomain-namedomain-name-serverstime-offsetオプシ ョンは、apexとraleighの両方のhostステートメントに使用され ます。

図12-1に示すように、subnetの宣言が可能です。 subnet宣言は、ネットワークのすべてのサブネットに対して記述す る必要があります。宣言されていない場合、DHCPサーバーは起動できません。

この例では、サブネット内のすべてのDHCPクライアントに対するグローバルオプションが 存在し、rangeが宣言されています。クライアントには、 rangeの範囲内のIPアドレスが割り当てられます。

subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers                  192.168.1.254;
        option subnet-mask              255.255.255.0;

        option domain-name              "example.com";
        option domain-name-servers       192.168.1.1;

        option time-offset              -5;     # Eastern Standard Time

	range 192.168.1.10 192.168.1.100;
}

図 12-1. subnet宣言の例

同じ物理ネットワークを共有するすべてのサブネットは、図12-2に示すようにshared-network内に宣言 する必要があります。shared-network内のパラメータで、 subnet宣言の外にあるものは、グローバルパラメータとみなされま す。shared-networkの名前は、たとえばテストラボ環境のすべての サブネットを記述するtest-labのように、ネットワークの記述名とします。

shared-network name {
    option domain-name              "test.redhat.com";
    option domain-name-servers      ns1.redhat.com, ns2.redhat.com;
    option routers                  192.168.1.254;
    more parameters for EXAMPLE shared-network
    subnet 192.168.1.0 netmask 255.255.255.0 {
        parameters for subnet
        range 192.168.1.1 192.168.1.31;
    }
    subnet 192.168.1.32 netmask 255.255.255.0 {
        parameters for subnet
        range 192.168.1.33 192.168.1.63;
    }
}

図 12-2. shared-network宣言の例

図12-3に示すように、group宣言を使用して宣言 のグループにグローバルパラメータを適用できます。共有ネットワーク、サブネット、ホ ストやその他のグループをグループ化することができます。

group {
   option routers                  192.168.1.254;
   option subnet-mask              255.255.255.0;

   option domain-name              "example.com";
   option domain-name-servers       192.168.1.1;

   option time-offset              -5;     # Eastern Standard Time

   host apex {
      option host-name "apex.example.com";
      hardware ethernet 00:A0:78:8E:9E:AA; 
      fixed-address 192.168.1.4;
   }

   host raleigh {
      option host-name "raleigh.example.com";
      hardware ethernet 00:A1:DD:74:C3:F2;
      fixed-address 192.168.1.6;
   }
}

図 12-3. group宣言の例

サブネット内のシステムに動的IPアドレスをリースするDHCPサーバーを設定するには、 図12-4を修正し、実際に使用する値を記述します。これにより、ク ライアントのデフォルトのリース期間、最大リース期間、ネットワークの設定値を宣言し ます。この例では、クライアントシステムにrange 192.168.1.10 〜192.168.1.100の範囲内のIPアドレスが割り当てられます。

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "example.com";

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
}

図 12-4. rangeパラメータの例

ネットワークインターフェイスカードのMACアドレスに応じてクライアントにIPアドレス を割り当てるには、host宣言内のhardware ethernetパラメータを使用します。図12-5host apex宣言では、MACアドレスが00:A0:78:8E:9E:AAのネット ワークインターフェイスカードには常にIPアドレス192.168.1.4がリースされるよう指定 しています。

オプションパラメータhost-nameを使用してクライアントにホスト 名を割り当てることも可能です。

host apex {
   option host-name "apex.example.com";
   hardware ethernet 00:A0:78:8E:9E:AA; 
   fixed-address 192.168.1.4;
}

図 12-5. DHCPを使用した静的IPアドレスの例

ティップヒント
 

Red Hat Linux 7.2のサンプル設定ファイルを使用して、自らのカスタム設定オプションを追 加することができます。次のコマンドを使用してサンプルファイルを適当な場所にコピー します。
cp /usr/share/doc/dhcp-<version-number>/dhcpd.conf.sample /etc/dhcpd.conf
<version-number>は使用するDHCPのバージョン)

オプションのステートメントの一覧とその機能については、dhcp-optionsのmanページを 参照してください。

リースデータベース

DHCPサーバーでは、ファイル/var/lib/dhcp/dhcpd.leasesを使用 してクライアントのリースデータベースを保存します。このファイルは、手動で変更する ことはできません。リースデータベースには、最近割り当てられた各IPアドレスのDHCP リース情報が自動的に保存されます。この情報には、リース期間、IPアドレスの割り当て 先、リースの開始/終了日、リースの取得に使用されたネットワークインターフェイスカー ドのMACアドレスが含まれます。

リースデータベースにおける時刻はすべてローカル時でなくグリニッジ標準時(GMT)を使 用します。

DHCPサービスを初めて起動するとき、リースデータベースが存在しなければDHCPサービ スは起動できません。サーバーを初めて起動する前に、touch /var/lib/dhcpd.leasesコマンドを使用してこのファイルを作成してください。 ファイルを作成してサーバーを起動した後は、新しいリースデータベースを作成しないで ください。

リースデータベースは、サイズが大きくなり過ぎるのを避けるため、適宜再作成されます。 最初に、すべての既知のリースが一時リースデータベースに保存されます。 dhcpd.leasesファイルの名前が dhcpd.leases~に変更され、一時リースデータベースが dhcpd.leasesに書き込まれます。

リースデータベースの名前がバックアップファイルの名前に変更され、新規ファイルが書 き込まれる前に、DHCPデーモンがkillされたりシステムがクラッシュしたりすることも 考えられます。この場合、サービスの起動に必要なdhcpd.leases ファイルは存在しません。その際に新しいリースファイルを作成しないでください。新し いファイルを作成すると、それまでのリースはすべて失われ、問題が発生します。これを 解決するには、dhcpd.leases~バックアップファイルの名前を dhcpd.leasesに変更して、デーモンを起動してください。

サーバーの起動と停止

重要項目重要
 

DHCPサーバーを初めて起動するとき、dhcpd.leasesファイルがな ければサーバーは起動できません。サービスを起動する前に(初めての場合のみ)、 touch /var/lib/dhcp/dhcpd.leasesコマンドを使用してこのファイ ルを作成してください。ファイルを作成した後は、このステップを再度行う必要はありま せん。

DHCPサービスを起動するには、/sbin/service dhcpd startコマンド を使用します。DHCPサーバーを停止するには、/sbin/service dhcpd stopコマンドを使用します。ブート時にデーモンを自動的に起動する必要があ る場合は、第8章で、サービスの管理方法に関する情報を参 照してください。

システムに複数のネットワークインターフェイスを組み込む場合、そのうちの1つのイン ターフェイスにおいてのみDHCPサーバーを起動するには、そのデバイスにおいてのみサー ビスを起動するようinitスクリプトを修正します。 /etc/rc.d/init.d/dhcpdにあるinitスクリプトの中には、サービ スを起動するときの動作を宣言する次のセクションがあります。

start() {
        # Start daemons.
        echo -n "Starting dhcpd: "
        daemon /usr/sbin/dhcpd
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dhcpd
        return $RETVAL
}

デーモンを起動する行を修正して、DHCPサーバーを実行するイーサネットデバイスを指定 します。

daemon /usr/sbin/dhcpd eth0

これは、ファイアウォールマシンにネットワークカードが2つある場合に便利な機能です。 一方のネットワークカードをDHCPクライアントとして設定し、インターネット用のIPア ドレスを取得します。もう一方のネットワークカードを、ファイアウォール内の内部ネッ トワーク用のDHCPサーバーとして使用できます。

DHCPリレーエージェント

DHCPリレーエージェント(dhcrelay)により、DHCPやBOOTPの要求 を、DHCPサーバーを持たないサブネットから他のサブネットのDHCPサーバーへと中継す ることができます。

DHCPクライアントが情報を要求すると、DHCPリレーエージェントは自身の起動時に指定さ れた一覧に含まれるDHCPサーバーに要求を転送します。DHCPサーバーのいずれかから 応答が返されると、その応答はオリジナルの要求を送信したネットワークにブロードキャ ストまたはユニキャストされます。

DHCPリレーエージェントを起動するには、dhcrelayコマンドを使用 します。起動には次のオプションを使用できます。

表 12-1. グラフィカルアップデートエージェントのオプション

引数説明
-i設定するネ ットワークインターフェイスの名前。インターフェイスを指定しないと、すべてのネット ワークインターフェイスが設定され、可能であれば非ブロードキャストインターフェイス は除外されます。
-pdhcrelayが監視するポート。DHCPリレーエージェントは、こ のポートでサーバーへの要求を転送し、このポートより1つ番号の大きいポートでクライ アントへの応答を転送します。
-ddhcrelayを常にフォアグラウンドで実行するよう強制します。
-q起動時のdhcrelay のネットワーク設定の印刷を無効にします。