18.2. DHCPサーバーの設定

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

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

18.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デーモンを再起動するまでは変更内容は反映されません。

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

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

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

subnet192.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;       #EasternStandardTime

    range  192.168.1.10 192.168.1.100;
}

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

同じ物理ネットワークを共有するすべてのサブネットは、例18-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.11 92.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;
   }
}

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

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

例 18-3. グループ宣言

サブネット内のシステムに動的IPアドレスをリースするDHCPサーバーを設定するには、例18-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;
} 

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

ネットワークインターフェイスカードのMACアドレスを基にしてクライアントにIPアドレス を割り当てるには、ホスト宣言内のハードウェア イーサネットパラメータを使用します。例18-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;
}

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

ティップヒント
 

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

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

18.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に変更して、デーモンを起動してください。

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

誓要項目重要
 

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

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

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

# Command line options here
DHCPDARGS=eth0

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

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

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

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

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

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

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