第16章 DHCP

目次

16.1. YaST での DHCP サーバ設定
16.2. DHCP ソフトウエアパッケージ
16.3. DHCP サーバ dhcpd
16.4. さらなる情報

概要

Dynamic Host Configuration Protocol (DHCP) の目的は、 それぞれのワークステーションで別々の設定を行なうのではなく、中央でネットワーク 設定を管理して (サーバから) 設定を割り当てることにあります。 DHCP を使用する よう設定したホストには、固定で設定するようなアドレスはありません。サーバからの 指示に従って自動的に設定を行なうことができます。クライアント側で NetworkManager を使用 している場合は、クライアント側で設定すべきことは何もありません。これは、 1 つのネットワークインターフェイスを利用して複数のネットワーク環境を 切り替えるマシンで、便利な設定です。ただし、 DHCP サーバの動作するマシンでは NetworkManager を動作させてはなりません。

DHCP サーバを設定するための 1 つの方法として、ネットワークカードのハードウエア アドレスを利用して各クライアントを識別する方法があります (多くの場合、 ハードウエアアドレスは固定で割り当てられています) 。この方法では、クライアントが サーバに接続するごとに同じ設定を割り当てます。もう 1 つの方法として、この目的用に 確保したアドレス帯域を設定し、クライアントに対して動的な割り当てを行なうことも できます。後者の場合でも、 DHCP サーバはクライアントから要求が届くごとに同じ アドレスを割り当てようとします。それはたとえ期限を超過した場合でも同じです。 ただし、この方法はアドレスの全体数よりもクライアント数のほうが少ない場合にのみ 動作します。

DHCP はシステム管理者の手間を省きます。アドレスやネットワークの設定など、大きな 設定変更が起こった場合でも、サーバ側の設定ファイルを編集するだけで作業が完了します。 これは、多数のワークステーションの設定を変更しなければならないような場合よりは ずっと手間を省くことができます。特に新しいマシンをネットワークに接続するような 場合には、アドレス帯域から IP アドレスを自動で割り当てることになるため、とても 作業が簡単になります。 DHCP サーバから取得した適切なネットワーク設定を受け取る 仕組みであるため、異なるネットワークで使用するようなラップトップでは便利に使う ことができます。

この章では、 DHCP サーバをワークステーションと同じサブネット 192.168.2.0/24 で動作させる場合を想定しています。ゲートウエイは 192.168.2.1 で、 DHCP サーバのアドレスは 192.168.2.254 、割り当てるアドレス帯域は 192.168.2.10 から 192.168.2.20 までと、 192.168.2.100 から 192.168.2.200 までを設定する ものとします。

DHCP サーバは IP アドレスとネットマスクを提供するだけではなく、各クライアント が利用するホスト名やドメイン名、ゲートウエイやネームサーバの設定も提供します。 またこれら以外にも、現在時刻を問い合わせるための時刻サーバや印刷サーバなど、 様々な情報を中央から配布することができます。

16.1. YaST での DHCP サーバ設定

DHCP サーバをインストールするには、 YaST を起動して ソフトウエア+ソフトウエア管理 を選択します。続いて フィルタ+パターン を選択し、 DHCP および DNS サーバ を選択します。あとはインストール処理を完了し、依存関係の パッケージをインストールする確認に答えてください。

[Important]LDAP 対応

YaST の DHCP モジュールの設定を ローカル (DHCP サーバ自身) に保存することができるほか、 LDAP サーバに 保存することもできます。 LDAP を利用して設定を保存したい場合は、 DHCP サーバを設定する前に LDAP サーバを設定してください。

LDAP について、詳しくは 第4章 ディレクトリサービス LDAP (↑セキュリティガイド) をお読みください。

YaST DHCP モジュール (yast2-dhcp-server) では、 ローカルネットワーク用の DHCP サーバを設定することができます。 また、このモジュールはウイザードモードと熟練者向け設定モードのいずれかで 動作させることができます。

16.1.1. 初期設定 (ウイザード)

最初にモジュールを起動したときにはウイザードが起動し、サーバを起動するにあたって いくつか決めておかなければならない基本設定について質問が行なわれます。 この初期設定作業はサーバを機能させるためのごく基本的な設定だけです。 高度な設定作業については、熟練者モードをご利用いただくことができます。

カードの選択

最初の手順では、 YaST はお使いのシステム内で利用可能なネットワーク インターフェイスに確認し、一覧を表示します。一覧から DHCP サーバのサービス を提供したいインターフェイスを選択し、 選択 を押して ください。選択のあとは、このインターフェイスに対してファイアウオールを 開くため、 ファイアウオールで選択したインターフェイスを開く を選択してから 次へ を押してください。 詳しくは 図16.1「DHCP サーバ: カードの選択」 をご覧ください。

図16.1 DHCP サーバ: カードの選択

DHCP サーバ: カードの選択

グローバル設定

まずは DHCP の設定を LDAP サーバ内に保存するかどうか、チェックボックスで 選択します。またそれぞれの入力フィールドに対して、 DHCP サーバが管理 すべき全クライアント用のネットワーク設定を指定してください。ドメイン名や タイムサーバ、プライマリまたはセカンダリのネームサーバ、印刷サーバや WINS サーバ (Windows と Linux のクライアントが混在する環境の場合)、 ゲートウエイアドレスや貸与時間をそれぞれ設定します。 詳しくは 図16.2「DHCP サーバ: グローバル設定」 をご覧ください。

図16.2 DHCP サーバ: グローバル設定

DHCP サーバ: グローバル設定

ダイナミック DHCP

この段階では、どのようにして動的な IP アドレスの配布を行なうのかについて 設定を行ないます。まずは DHCP クライアントに対してサーバから配布する IP アドレスの範囲を設定します。これらのアドレスは同じネットワーク内を 示すものでなければなりません。また、クライアントが期限の延長を申請する ことなく IP アドレスを使い続けることのできる、既定の貸与時間も設定します。 また、最大の貸与時間も設定することができます。これはサーバが特定の クライアントに対する IP アドレスを予約しておく時間の意味です。 詳しくは 図16.3「DHCP サーバ: ダイナミック DHCP」 をご覧ください。

図16.3 DHCP サーバ: ダイナミック DHCP

DHCP サーバ: ダイナミック DHCP

設定の完了と開始モードの設定

3 段階目の設定ウイザードを完了すると、 DHCP サーバをどのようにして起動する のかを設定する最後のダイアログが表示されます。ここでは DHCP サーバをシステム 起動時に自動で起動するか、もしくは必要に応じて手動で起動するか (たとえば テスト用に起動する場合など) を選択することができます。設定を完了したら、 完了 を押してください。詳しくは 図16.4「DHCP サーバ: 起動」 をご覧ください。

図16.4 DHCP サーバ: 起動

DHCP サーバ: 起動

16.2. DHCP ソフトウエアパッケージ

openSUSE では、 DHCP サーバと DHCP クライアントの両方が提供されて います。 DHCP サーバとしては dhcpd (Internet Systems Consortium 提供) が公開されていますが、 DHCP クライアントとしては 2 種類のクライアントが 公開されています: dhcp-client (上記と同様に ISC 提供のもの) と dhcpcd パッケージがあります。

openSUSE では既定で dhcpcd がインストールされています。このプログラムは とても扱いやすく、それぞれのシステム起動時に DHCP サーバのチェックを行なうため に自動で起動するようになっています。 dhcpcd はその処理を行なうにあたって設定 ファイルを必要とせず、多くの標準的なセットアップ環境でうまく動作するように なっています。より複雑な環境の場合は ISC の dhcp-client をお使いいただき、 設定ファイル /etc/dhclient.conf で細かい制御を行なって ください。 

16.3. DHCP サーバ dhcpd

DHCP システムの中枢は、 dynamic host configuration protocol (DHCP) の デーモンです。このサーバは設定ファイル /etc/dhcpd.conf での設定に基づき、アドレスを 貸与 し、それらが どのように使用されているかを監視します。このファイルのパラメータや値を変更する ことで、システムの管理者は様々な方法でプログラムの動きを制御することができます。 まずは 例16.1「設定ファイル /etc/dhcpd.conf」 にある基本設定例 /etc/dhcpd.conf をお読みください。

例16.1 設定ファイル /etc/dhcpd.conf

default-lease-time 600;         # 10 minutes
max-lease-time 7200;            # 2  hours

option domain-name "example.com";
option domain-name-servers 192.168.1.116;
option broadcast-address 192.168.2.255;
option routers 192.168.2.1;
option subnet-mask 255.255.255.0;

subnet 192.168.2.0 netmask 255.255.255.0
 {
  range 192.168.2.10 192.168.2.20;
  range 192.168.2.100 192.168.2.200;
 }

このようなシンプルな設定ファイルだけで、 DHCP サーバに対してネットワーク内の アドレス割り当てを実施させることができます。なお、各行の末尾にはセミコロンが きちんと付けられていることを確認してください。そうでないと dhcpd を起動する ことができません。

このサンプルファイルは 3 つのセクションから構成されています。 1 つめのセクション には、クライアントからアドレスを要求されたときに、既定でどれだけの期間更新無しで 貸し出すのか (default-lease-time) を設定しています。 このセクションでは、 DHCP サーバが IP アドレスを貸与したあと、更新無しでどれだけ の期間アドレスを保持しておくか (max-lease-time) も設定して います。

2 つめのセクションには、グローバルな範囲でいくつかの基本的なネットワーク パラメータを指定しています:

  • option domain-name の行では、お使いのネットワーク における既定のドメインを設定しています。

  • option domain-name-servers を設定すると、ホスト名から IP アドレス、またはその逆の変換のため、最大で 3 つまでの DNS サーバを指定する ことができます。理想的にはお使いのマシン上で動作しているネームサーバや、 お使いのネットワーク内のどこかにあるネームサーバを設定します。なお、これらの ネームサーバでは、それぞれ動的に割り当てられるアドレスに対して、ホスト名を 定義しておくべきものです。ネームサーバの設定方法について、詳しくは 第15章 ドメインネームシステム をお読みください。

  • option broadcast-address の行では、クライアントが 使用すべきブロードキャストアドレスを指定しています。

  • option routers では、ローカルネットワークだけでは到達 できないホストとの通信を行なう際、データパケットを送信する宛先を指定します (発信元と送信先のアドレス、およびサブネットマスクから判断します) 。 多くの場合、特に小さなネットワークの場合は、ルータとインターネット ゲートウエイは同じものです。

  • option subnet-mask では、クライアントに割り当てる サブネットマスクを指定します。

設定ファイルの最後の部分では、サブネットマスクを含むネットワークを定義して います。また括弧内では、 DHCP デーモンがクライアントに対して割り当てるべき アドレス範囲を指定しています。 例16.1「設定ファイル /etc/dhcpd.conf」 の例では、 192.168.2.10 から 192.168.2.20 までの範囲と、 192.168.2.100 から 192.168.2.200 までの範囲でそれぞれ割り当てを行ないます。

これらのうちいくつかを環境に応じて変更したら、あとは rcdhcpd start コマンドで DHCP サーバを起動することができます。これですぐにサービスを利用できるようになります。 また、設定ファイルについて大まかな文法チェックを行ないたい場合は、 rcdhcpd check-syntax コマンドを 入力してください。設定について予期しない問題に直面した場合 (サーバがエラー終了 するか、起動時に done が表示されない場合) は、メインの システムログである /var/log/messages を利用して何が 間違っているのかを確認することができるほか、コンソール 10 でエラー出力を 確認することもできます (Ctrl+Alt+F10 を押してください) 。

既定の openSUSE システムでは、 DHCP はセキュリティ上の理由から、 chroot 環境で起動されます。設定ファイルはデーモンから読み取ることができるよう、 chroot の環境下にコピーしなければなりません。通常は rcdhcpd  start コマンドで自動的にファイルをコピーするため、これらの ことについて心配する必要はありません。

16.3.1. 固定 IP アドレスのクライアント

DHCP では、特定のクライアントに対して固定のアドレスを事前に定義し、割り当てる こともできます。明示的に指定したアドレスは、帯域からの動的な割り当てよりも 常に優先して動作します。また固定のアドレスは動的なアドレスと異なり、 クライアントに配布するアドレスよりも利用可能なアドレスが少ない場合に発生する ような、有効期限の問題もありません。

固定のアドレスを各クライアントに割り当てるにあたり、 DHCP ではハードウエア アドレス (たとえば 00:30:6E:08:EC:80) 利用して、ネットワーク デバイスを識別します (世界中で唯一の番号が割り振られるもので、 6 バイトから 構成される数値コードです) 。具体的には 例16.2「設定ファイルへの追記」 に示すような設定を 例16.1「設定ファイル /etc/dhcpd.conf」 に追加することで、 特定のクライアントに対して同じデータを割り当てるようになります。

例16.2 設定ファイルへの追記

host jupiter {
hardware ethernet 00:30:6E:08:EC:80;
fixed-address 192.168.2.100;
}

各クライアントの名前 (host ホスト名 の部分、ここでは jupiter) が最初の行に記述され、 2 行目に MAC アドレスが記述されています。 Linux ホストでは、 MAC アドレスは ip link show コマンドで表示させる ことができます。このコマンドの後ろにネットワークデバイス (たとえば eth0) を指定してください。出力には下記のような行がある はずです。

link/ether 00:30:6E:08:EC:80

上記の例では、 00:30:6E:08:EC:80 という MAC アドレスが設定されている クライアントに対して、 192.168.2.100 というアドレスと jupiter というホスト名を自動的に割り当てる 動作になります。ほとんどの場合、ハードウエアの種類 (hardware) には ethernet を指定しますが、 IBM システムなどでは token-ring である場合もあります。 DHCP ではどちらにも対応して います。

16.3.2. openSUSE バージョン

セキュリティをよりよくするため、 ISC 提供の DHCP サーバの openSUSE 版 では、 Ari Edelkind 氏が開発した non-root/chroot パッチを適用した状態で 公開しています。これにより、 dhcpd をユーザ ID nobody で実行し、 chroot 環境 (/var/lib/dhcp) で動作させることができるようになっています。また、この機能を実現するため、 設定ファイル dhcpd.conf/var/lib/dhcp/etc に配置しなければなりません。起動時の 起動スクリプトでこのディレクトリへの設定ファイルコピーを行なっています。

この機能に関するサーバの動作を制御するには、 /etc/sysconfig/dhcpd ファイルを編集してください。 dhcpd を chroot 環境で動作させないようにするには、 /etc/sysconfig/dhcpd ファイル内の DHCPD_RUN_CHROOTED 変数に、 no を設定してください。

dhcpd に対し、 chroot 環境下からでもホスト名を解決できるようにするには、 いくつかの設定ファイルについてもコピーしておかなければなりません:

  • /etc/localtime

  • /etc/host.conf

  • /etc/hosts

  • /etc/resolv.conf

これらのファイルは、起動時に初期化スクリプトが /var/lib/dhcp/etc/ にコピーします。これらのコピーは /etc/ppp/ip-up のようなスクリプトから動的に更新される 場合に必要となります。しかしながら、この設定ファイルは IP アドレスだけ (ホスト名ではなく) を指定する仕組みであるため、特に心配する必要はありません。

また、お使いの設定ファイルから外部のファイルを参照するように設定している場合は、 それらを chroot 環境にコピーする必要があります。このような外部ファイルに ついては、 /etc/sysconfig/dhcpd ファイル内の DHCPD_CONF_INCLUDE_FILES 変数に設定を行なって ください。また、 syslog-ng が再起動しても DHCP のログ機能が正しく動作する ようにするため、 /etc/sysconfig/syslog 内に SYSLOGD_ADDITIONAL_SOCKET_DHCP という設定を 用意しています。

16.4. さらなる情報

DHCP に関する詳しい情報は、 Internet Systems Consortium の Web サイト (http://www.isc.org/products/DHCP/) (英語) をお読みください。 dhcpd, dhcpd.conf, dhcpd.leases, dhcp-options についての各マニュアルページも提供されています。


openSUSE リファレンス 13.1