13.2. DHCP サーバーの設定

dhcp パッケージには ISC (Internet Systems Consortium) DHCP サーバーが含まれています。最初に、スーパーユーザーとしてパッケージをインストールします。
~]# yum install dhcp
dhcp パッケージをインストールすると、/etc/dhcp/dhcpd.conf ファイルが作成されます。これは単なる空の設定ファイルです。
~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
設定ファイルのサンプルは、/usr/share/doc/dhcp-<version>/dhcpd.conf.sample にあります。このファイルは、/etc/dhcp/dhcpd.conf を設定する場合に使用することをお勧めします。詳しくは以下で説明します。
また、DHCP は /var/lib/dhcpd/dhcpd.leases ファイルを使用してクライアントのリースデータベースを格納します。詳細は 「リースデータベース」 を参照して下さい。

13.2.1. 設定ファイル

DHCP サーバーを設定するには、最初にクライアントのネットワーク情報を格納する設定ファイルを作成します。このファイルを使用して、クライアントシステム用のオプション及びグローバルオプションを宣言します。
設定ファイルには追加のタブや空白行が含まれているため、簡単に書式を整えることができます。キーワードは大文字/小文字の区別がなく、行頭がハッシュ記号 (#) で始まる行はコメントとみなされます。
設定ファイルのステートメントには、次のような 2 つのタイプがあります。
  • パラメーター — タスクの実行方法、タスクを実行するかどうか、クライアントに送信するネットワーク設定のオプションを規定します。
  • 宣言 — ネットワークトポロジの記述、クライアントの記述、クライアントのアドレス指定、宣言グループへのパラメーターグループの適用を行います。
キーワードオプションから始まるパラメーターは、オプション と呼ばれます。オプションは、DHCP オプションを制御します。一方、パラメーターはオプションでない値の設定、DHCP サーバーの動作の制御を行います。
中括弧 ({ }) で囲まれたセクションの前に宣言されたパラメーター (オプションを含む) は、グローバルパラメーターとみなされます。グローバルパラメーターは、これ以降のすべてのセクションに適用します。

重要

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

注記

毎回 DHCP 設定ファイルを変更してサービスを再起動させる代わりに、omshell コマンドを使用すると、DHCP サーバーへの接続、クエリ、設定の変更をインタラクティブに行うことができます。omshell を使用すると、DHCP サーバーの実行中でも変更を行うことができます。omshell の詳細については、omshell の man ページを参照して下さい。
例13.1「subnet 宣言」 では、routerssubnet-maskdomain-searchdomain-name-servers 及び time-offset オプションは、subnet 宣言下で宣言されている host ステートメント用に使用されます。
機能するすべての subnet、DHCP サーバーの接続先となるすべての subnet に対して、subnet 宣言が 1 つ必要です。これは、アドレスがその subnet にあることを認識する方法を DHCP デーモンに伝えます。subnet に動的に割り当てるアドレスがない場合でも、各 subnet に対して subnet 宣言が 1 つ必要となります。
この例では、サブネット内のすべての DHCP クライアントに対するグローバルオプションがあり、range が宣言されています。クライアントに range 内の IP アドレスが割り当てられています。

例13.1 subnet 宣言

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-search              "example.com";
        option domain-name-servers       192.168.1.1;
        option time-offset              -18000;     # Eastern Standard Time
	range 192.168.1.10 192.168.1.100;
}
サブネット内でシステムに動的 IP アドレスをリースする DHCP サーバーを設定するには、例13.2「range パラメーター」 を使用する値に変更します。これにより、クライアント用のデフォルトのリース期間、最大リース期間、ネットワークの設定値を宣言します。この例では、192.168.1.10 から 192.168.1.100 の range の IP アドレスをクライアントシステムに割り当てます。

例13.2 range パラメーター

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-search "example.com";
subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
}
ネットワークインターフェースカードの MAC アドレスに基づいてクライアントに IP アドレスを割り当てるには、host 宣言内の hardware ethernet パラメーターを使用します。例13.3「DHCP を使用した静的 IP アドレス」 の例では、host apex 宣言は、MAC アドレス 00:A0:78:8E:9E:AA を持つネットワークインターフェースカードが常に IP アドレス 192.168.1.4 を受信するように指定します。
オプションのパラメーターである host-name を使用すると、クライアントにホスト名を割り当てることができる点にも注目して下さい。

例13.3 DHCP を使用した静的 IP アドレス

host apex {
   option host-name "apex.example.com";
   hardware ethernet 00:A0:78:8E:9E:AA;
   fixed-address 192.168.1.4;
}
同じ物理ネットワークを共有するすべてのサブネットは、例13.4「shared-network 宣言」 のとおり shared-network 宣言内で宣言する必要があります。shared-network 内だが囲まれた subnet 宣言の外にあるパラメーターは、グローバルパラメーターとみなされます。shared-network の名前は、そのネットワークを表す分かりやすいタイトルにします。例えば、テストラボ環境の全サブネットを表す「test-lab」というタイトルなどです。

例13.4 shared-network 宣言

shared-network name {
    option domain-search              "test.redhat.com";
    option domain-name-servers      ns1.redhat.com, ns2.redhat.com;
    option routers                  192.168.0.254;
    more parameters for EXAMPLE shared-network
    subnet 192.168.1.0 netmask 255.255.252.0 {
        parameters for subnet
        range 192.168.1.1 192.168.1.254;
    }
    subnet 192.168.2.0 netmask 255.255.252.0 {
        parameters for subnet
        range 192.168.2.1 192.168.2.254;
    }
}
例13.5「group 宣言」 のように group 宣言を使用すると、宣言グループにグローバルパラメーターを適用できます。例えば、共有ネットワーク、サブネット、ホストをグループ化できます。

例13.5 group 宣言

group {
   option routers                  192.168.1.254;
   option subnet-mask              255.255.255.0;
   option domain-search              "example.com";
   option domain-name-servers       192.168.1.1;
   option time-offset              -18000;     # 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;
   }
}

注記

提供されている設定ファイルのサンプルをベースとして使用し、カスタムの設定オプションを追加することができます。このファイルを適切な場所にコピーするには、以下のコマンドを使用します。
cp /usr/share/doc/dhcp-<version_number>/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
<version_number> は DHCP のバージョン番号です。
オプションステートメントとその機能の全一覧については、dhcp-options の man ページを参照して下さい。