25.2. DHCPサーバーの設定

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

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

25.2.1. 設定ファイル

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

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

現在、2つのDNS更新スキームが実装されています。— ad-hoc DNS更新モードと interim DHCP-DNSインタラクションドラフト更新(interaction draft update)モードです。これらの2つが IETF標準プロセスの一部として受理された場合、将来3番目のモード — 標準DNS更新モードが 出来るでしょう。DHCPサーバは現在の2つのスキームの内の1つを使用するように設定する必要があります。バージョン3.0b2pl11及び以前のバージョンはad-hocモードを使用していましたが、現在は古いため使用されません。 同じような動作を維持するには、設定ファイルの先頭に次の行を追加します。

ddns-update-style ad-hoc;

推奨されるモードを使用するには、設定ファイルの上に次の行を追加します:

ddns-update-style interim;

これらのモード別の詳細については、dhcpd.confの man ページを参照してください。

設定ファイルのステートメントには、次の2タイプがあります:

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

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

誓要項目重要
 

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

例25-1では、 routers, subnet-maskdomain-namedomain-name-servers、及び time-offsetオプションは、その下で宣言される hostステートメント用に使用されます。

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

この例では、サブネット内のすべてのDHCPクライアントに対するグローバルオプションが存在し、範囲が宣言されています。クライアントには、範囲内の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              -18000;     # Eastern Standard Time

	range 192.168.1.10 192.168.1.100;
}

例 25-1. サブネット宣言

同じ物理ネットワークを共有するすべてのサブネットは、例25-2に示すように共有ネットワーク内で宣言する必要があります。共有ネットワーク内のパラメータでサブネット宣言の外にあるものは、グローバルパラメータとみなされます。共有ネットワークの名前は、たとえばテストラボ環境のすべてのサブネットを記述する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;
    }
}

例 25-2. 共有ネットワーク宣言

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

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              -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;
   }
}

例 25-3. グループ宣言

サブネット内のシステムに動的IPアドレスをリースするDHCPサーバーを設定するには、例25-4を修正し、実際に使用する値を記述します。これにより、クライアントのデフォルトのリース期間、最大リース期間、ネットワークの設定値を宣言します。この例では、範囲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;
}

例 25-4. 範囲パラメータ

ネットワークインターフェースカードのMACアドレスを基にしてクライアントにIPアドレス を割り当てるには、ホスト宣言内のハードウェア イーサネットパラメータを使用します。例25-5の参考例では、ホストアペックス宣言は、MACアドレス 00:A0:78:8E:9E:AAのネットワークインターフェースカードが常にIPアドレス192.168.1.4を受け取るように指定 しています。

クライアントにホスト名を割り当てるためにオプションパラメータホスト名 を使用することができます。

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

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

ティップヒント
 

製品パッケージに含まれているサンプル設定ファイルから始めることができます。 カスタム設定オプションをそれに追加できます。次のコマンドでサンプルファイルを適当な場所にコピーします。
 cp /usr/share/doc/dhcp-<version-number>/dhcpd.conf.sample /etc/dhcpd.conf
<version-number>にはDHCPのバージョンを入れます)

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

25.2.2. リースデータベース

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

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

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

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

25.2.3. サーバーの起動と停止

誓要項目重要
 

DHCPサーバーを初めて起動するとき、dhcpd.leasesファイルがなければサーバーは起動できません。このファイルが存在しない場合は、コマンドtouch /var/lib/dhcp/dhcpd.leasesを使用して作成してください。

DHCPサービスを起動するには、/sbin/service dhcpd startコマンドを使用します。DHCPサーバーを停止するには、/sbin/service dhcpd stopコマンドを使用します。ブート時にデーモンを自動的に起動するよう設定するには、 サービスの管理方法に関する説明を第21章を参照してください。

システムに複数のネットワークインターフェースを組み込むが、そのうちの1つのインターフェースだけでDHCPサーバーを起動する必要がある場合には、そのデバイスだけでサービスを起動するようにDHCPサーバーを設定します。/etc/sysconfig/dhcpdにあるDHCPDARGSのリストにインターフェース名を追加します。

# Command line options here
DHCPDARGS=eth0

これは、ネットワークカードが2つあるファイアウォールマシンに便利な機能です。一方のネットワークカードをDHCPクライアントとして設定してインターネット用のIPアドレスを取得します。もう一方のネットワークカードは、ファイアウォール内の内部ネットワーク用のDHCPサーバーとして使用できます。内部ネットワークに接続されたネットワークカードだけを指定することにより、ユーザーがインターネット経由でデーモンに接続できなくなるので、システムがより安全になります。

/etc/sysconfig/dhcpdで指定できるその他のコマンドラインオプションには次のようなものがあります:

25.2.4. DHCPリレーエージェント

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

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

INTERFACESの指示文(directive)で/etc/sysconfig/dhcrelay内に インターフェースが指定されている場合を除き、DHCPリレーエージェントは全てのインターフェース上でDHCP要求を監視します。

DHCPリレーエージェントを開始するには、service dhcrelay startコマンドを使用します。