DHCPサーバーを設定するには、設定ファイル/etc/dhcpd.confを変更します。
また、DHCPはファイル/var/lib/dhcp/dhcpd.leasesを使用してクライアントのリースデータベースを保存します。詳細については項25.2.2を参照してください。
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-mask、 domain-name、 domain-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アドレス
![]() | ヒント | |
---|---|---|
製品パッケージに含まれているサンプル設定ファイルから始めることができます。 カスタム設定オプションをそれに追加できます。次のコマンドでサンプルファイルを適当な場所にコピーします。
|
オプションのステートメントの全一覧とその機能については、dhcp-options のmanページを参照してください。
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に変更して、デーモンを起動してください。
![]() | 重要 |
---|---|
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で指定できるその他のコマンドラインオプションには次のようなものがあります:
-p <portnum> — dhcpd が監視するudpポート番号を指定します。 デフォルトはポート67です。DHCPサーバーは、指定されたupdポートよりも1つ大きな 番号のポートにあるDHCPクライアントに応答を送信します。たとえば、 デフォルトポート67をそのまま使用する場合、サーバーはポート67に来る要求を監視し、 ポート68にあるクライアントに応答します。ここでポートが指定され、 DHCPリレーエージェントが使用された場合、DHCPリレーエージェントが監視すべきポート と同じポートが指定されなければなりません。 詳細については項25.2.4を参照してください。
-f — フォアグラウンドプロセスとしてデーモンを実行します。これはおもにデバッグに使用されます。
-d — 標準エラー記述子にDCHPサーバーデーモンをログします。これはおもにデバッグに使用されます。このオプションを指定しなかった場合、ログは/var/log/messagesに書きこまれます。
-cf <filename> — 設定ファイルの場所を指定します。デフォルトの場所は/etc/dhcpd.confです。
-lf <filename> — リースデータベースファイルの場所を指定します。リースデータベースファイルがすでに存在する場合、DHCPサーバーを起動するたびに、同じファイルが使用されるようにすることが非常に重要です。このオプションは、実稼働環境にないマシンで、デバッグのためだけに使用することを強くお勧めします。デフォルトの場所は/var/lib/dhcp/dhcpd.leasesです。
-q — デーモンを開始するときに、著作権に関するメッセージを表示しません。
DHCPリレーエージェント(dhcrelay)により、DHCPやBOOTPの要求を、DHCPサーバーを持たないサブネットからほかのサブネットのDHCPサーバーへと中継することが可能になります。
DHCPクライアントが情報を要求すると、DHCPリレーエージェントは自身の起動時に指定された一覧に含まれるDHCPサーバーに要求を転送します。DHCPサーバーのいずれかから応答が返されると、その応答はオリジナルの要求を送信したネットワークにブロードキャストされたりユニキャストされたりします。
INTERFACESの指示文(directive)で/etc/sysconfig/dhcrelay内に インターフェースが指定されている場合を除き、DHCPリレーエージェントは全てのインターフェース上でDHCP要求を監視します。
DHCPリレーエージェントを開始するには、service dhcrelay startコマンドを使用します。