Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
適用先 openSUSE Leap 15.7

20 DHCP Edit source

概要

Dynamic Host Configuration Protocol (DHCP) はそれぞれのコンピュータに対して個別の設定を行うことなく、ネットワークの設定を集中管理するための仕組みです。 DHCP を使用するように設定したコンピュータは、自分自身のアドレスを固定で持つことはなく、サーバからの指示に従って自動的に設定することができます。また、クライアント側で NetworkManager を使用している場合は、クライアント側の設定を行う必要はありません。この仕組みは、特に 1 つのインターフェイスで複数のネットワークに接続するような場合に有用です。なお、 DHCP サーバを動作させているマシンでは、 NetworkManager を使用してはなりません。

DHCP サーバを使用するもう 1 つの用途としては、ネットワークカードのハードウエアアドレス (通常は固定のアドレスが割り当てられています) を利用して各クライアントを識別し、常に同じアドレスを割り当てたり、動的にアドレスを割り当てたりすることがあげられます。動的にアドレスを割り当てる場合でも、 DHCP サーバ側では貸与期限を越えて同じアドレスを割り当てようとします。この方式は、クライアント数よりもアドレス数のほうが多い場合にのみ成立します。

DHCP はシステム管理者にとっても利点があります。アドレスやネットワークの設定変更は面倒な作業になりがちですが、サーバの設定ファイルだけで集中管理すれば、クライアント側の設定を一斉に変えることができますので、クライアントの台数が多くなればなるほどメリットとなります。また、新しいマシンのネットワークへの接続に際しても、プールから IP アドレスを取るだけの簡単な話になってしまいます。 DHCP サーバ側で適切な設定を提供することで、様々なネットワークに接続するラップトップに対しても、非常に便利な機能となります。

本章では、 DHCP サーバとクライアントは同じサブネット (192.168.2.0/24) 内で動作するものとし、ルータが 192.168.2.1 にあるものとします。また、 DHCP サーバの IP アドレスは 192.168.2.254 で、それぞれ 192.168.2.10 から 192.168.2.20 までと、 192.168.2.100 から 192.168.2.200 までのアドレス範囲を提供するものとします。

DHCP サーバは IP アドレスとネットマスクの情報を提供するだけではありません。ホスト名やドメイン名、デフォルトゲートウエイやネームサーバのアドレスなどをクライアントに提供して、設定させることができます。また、これに加えて、 DHCP サーバではクライアントが現在時刻を問い合わせるためのタイムサーバや、印刷サーバなどの情報を集中管理して提供することもできます。

20.1 YaST を利用した DHCP サーバの設定 Edit source

DHCP サーバをインストールするには、 YaST を起動して ソフトウエア › ソフトウエア管理 を選択します。その後 表示 › パターン を選択して DHCP および DNS サーバ を選択します。あとは 了解 を押して必要なパッケージをインストールします。

重要
重要: LDAP サポートについて

YaST DHCP モジュールでは、サーバの設定をローカル (DHCP サーバを動作させるマシン自身) に保存することができるほか、 LDAP サーバで設定データを管理させることもできます。 LDAP を使用するには、 DHCP サーバを設定する前に LDAP の環境を設定してください。

LDAP について、詳しくは 第5章 「389 Directory Server を利用した LDAP サービス をお読みください。

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

20.1.1 初期設定 (ウイザード) Edit source

このモジュールを初めて起動した場合は、ウイザードが表示されます。ここでは、サーバの管理に関わるいくつかの基本的な決定を行います。この初期設定を完了することで、サーバの基本設定を作成することができます。また、熟練者モードを使用することで、より高度な設定作業を行うこともできます。具体的には下記のように進めていきます:

  1. まずは DHCP サーバが待ち受けるべきネットワークインターフェイスを一覧から選択し、 次へ を押します。詳しくは 図20.1「DHCP サーバ: カードの選択」 をご覧ください。

    注記
    注記: DHCP と firewalld について

    openSUSE Leap 15.7 では、 ファイアウオールで選択したインターフェイスを開く のオプションが正しく動作しない問題が確認されています。手作業で DHCP のポートを開くには、下記のように実行します:

           > sudo firewall-cmd --zone=public --permanent --add-service=dhcp
           > sudo firewall-cmd --reload
    DHCP サーバ: カードの選択
    図 20.1: DHCP サーバ: カードの選択
  2. まずは LDAP サーバ内に DHCP の設定を保存するかどうかを、チェックボックスで選択します。テキストボックスは、 DHCP サーバが管理する全てのクライアントに対する情報を設定します。ドメイン名やタイムサーバのアドレス、プライマリおよびセカンダリのネームサーバ、印刷 (プリント) サーバや WINS サーバ (Windows と Linux のクライアントが共存している場合) やゲートウエイ、貸与時間を設定します。詳しくは 図20.2「DHCP サーバ: グローバル設定」 をご覧ください。

    DHCP サーバ: グローバル設定
    図 20.2: DHCP サーバ: グローバル設定
  3. ここでは、動的な IP アドレスをどのようにしてクライアントに配布するかを設定します。まずはサーバがクライアントに対して配布する IP アドレスの範囲を指定します。配布するアドレスは、同じネットマスク内のものに限られることに注意してください。また、クライアント側から再貸与を送信させるまでの貸与時間を設定することもできます。必要であれば、サーバ側で IP アドレスを予約しておく最大の貸与時間を設定することもできます。詳しくは 図20.3「DHCP サーバ: 動的 DHCP」 をご覧ください。

    DHCP サーバ: 動的 DHCP
    図 20.3: DHCP サーバ: 動的 DHCP
  4. ここでは DHCP サーバの開始方法を設定します。システムの起動時に DHCP サーバを自動的に開始するか、もしくは必要に応じて開始する (テスト用途など) かを選択することができます。サーバの設定が終わったら、 完了 を押してください。詳しくは 図20.4「DHCP サーバ: 起動」 をご覧ください。

    DHCP サーバ: 起動
    図 20.4: DHCP サーバ: 起動
  5. 上述の手順で動的なアドレス割り当てを設定するだけでなく、サーバに対してほぼ固定のアドレスを割り当てさせる方法があります。下半分に表示されたテキストボックスを利用して、固定のアドレスを割り当てるべきクライアントを指定していってください。具体的には、名前IP アドレス がクライアントに対して割り当てる名前とアドレスを、 ハードウエアアドレスネットワークの種類 (トークンリングもしくはイーサネット) がそのクライアントを識別するための情報になっています。上半分に表示されているクライアントの設定には、 追加 を押すことで追加することができます。追加済みの設定を編集したり削除したりするには、対象を上半分で選択して編集を行い、 変更 もしくは 一覧から削除 を押します。詳しくは 図20.5「DHCP サーバ: ホスト管理」 をご覧ください。

    DHCP サーバ: ホスト管理
    図 20.5: DHCP サーバ: ホスト管理

20.1.2 DHCP サーバ設定 (熟練者向け) Edit source

上記までの設定方法に加えて、 YaST ではより詳しい設定を行うことのできる熟練者モードが用意されています。熟練者モードを起動するには、 起動 ダイアログ内にある DHCP サーバ熟練者設定 ボタンを押してください (詳しくは 図20.4「DHCP サーバ: 起動」 をご覧ください) 。

chroot 環境と宣言

最初に表示されたダイアログでは、 今すぐ開始 を押すことで、既存の設定ファイルを編集できるようにすることができます。また、このモードではさらに詳しい設定である chroot 環境 (chroot jail とも呼びます) の使用可否を選択することができるようになっています。これは DHCP サーバのコンピュータを保護するための仕組みで、外部から DHCP サーバが脆弱性に対する攻撃を受けても、システム全体には被害が及ばないように緩和するためのものです。ダイアログの下半分には、宣言に関するツリービューが表示されています。それぞれ 追加 , 削除 , 編集 でツリーを操作することができます。詳しくは 図20.6「DHCP サーバ: chroot jail と宣言」 をご覧ください。なお、 追加 を押した場合は、追加する宣言の種類を選択することになります。また、 詳細 ボタンを押すと、サーバのログファイルを表示したり、 TSIG 鍵の管理を行ったり、 DHCP サーバの設定にあわせてファイアウオールの設定を調整したりすることもできます。

DHCP サーバ: chroot jail と宣言
図 20.6: DHCP サーバ: chroot jail と宣言
宣言の種類の選択

DHCP サーバの グローバルオプション には、いくつかの宣言を追加することができます。このダイアログでは、 サブネット , ホスト , 共有ネットワーク , グループ , グループ , アドレスのプール , クラス のいずれかを追加することができます。この例ではサブネットを選択しています (図20.7「DHCP サーバ: 宣言の種類の選択」 をご覧ください) 。

DHCP サーバ: 宣言の種類の選択
図 20.7: DHCP サーバ: 宣言の種類の選択
サブネットの設定

このダイアログでは、 IP アドレスとネットマスクからなる新しいサブネットを宣言することができます。ダイアログの中央部では、 追加 , 編集 , 削除 の各ボタンを利用して、サブネットに対するオプションを指定することができます。また、サブネットに対してダイナミック DNS を設定するには、 ダイナミック DNS を押します。

DHCP サーバ: サブネットの設定
図 20.8: DHCP サーバ: サブネットの設定
TSIG 鍵管理

以前のダイアログでダイナミック DNS を設定するように選択している場合は、ここでゾーン転送の機密を保持するための鍵を管理することができます。ここで OK を押すと次のダイアログが表示され、ダイナミック DNS を利用するインターフェイスを設定することができるようになります (詳しくは 図20.10「DHCP サーバ: ダイナミック DNS のためのインターフェイス設定」 をご覧ください) 。

DHCP サーバ: TSIG 設定
図 20.9: DHCP サーバ: TSIG 設定
ダイナミック DNS: インターフェイス設定

ここでは このサブネットのダイナミック DNS を有効にする を選択することで、動的な DNS の更新を行うことができるようになります。選択を行ったら、正引きと逆引きの各ゾーンに対して使用する TSIG 鍵をドロップダウンから選択します。なお、 DNS サーバと DHCP サーバとの間で、同じ鍵を設定しなければならないことに注意してください。また、 グローバルダイナミック DNS 設定の更新 を選択することで、ダイナミック DNS の環境に合わせて、グローバルな DHCP サーバの設定を自動調整することもできます。さらに、更新すべきダイナミック DNS の正引きおよび逆引きのゾーンを指定したあと、 OK を押してください。これにより、サブネットの設定ダイアログ (図20.8「DHCP サーバ: サブネットの設定」) に戻ることができます。再度 OK を押すと、熟練者向け設定ダイアログに戻ることができます。

DHCP サーバ: ダイナミック DNS のためのインターフェイス設定
図 20.10: DHCP サーバ: ダイナミック DNS のためのインターフェイス設定
注記
注記: ignore client-updates オプションについて

ゾーンに対してダイナミック DNS を有効化している場合、 YaST ではクライアントの互換性問題を改善するため、自動的に ignore client-updates オプションを設定します。このオプションは不要であれば無効化できます。

ネットワークインターフェイスの設定

DHCP サーバが待ち受けるべきネットワークインターフェイスの選択と、ファイアウオールの設定調整を行うには、熟練者向け設定ダイアログ内の カードの選択 で行います。表示されたインターフェイスの一覧から、 DHCP サービスへのアクセスを許可するインターフェイスを 1 つまたは複数選択します。全てのサブネット内のクライアントがサーバと通信できるようにするには、サーバ側のファイアウオールも調整する必要があります。

注記
注記: DHCP と firewalld について

openSUSE Leap 15.7 では、 ファイアウオールで選択したインターフェイスを開く のオプションが正しく動作しない問題が確認されています。手作業で DHCP のポートを開くには、下記のように実行します:

        > sudo firewall-cmd --zone=public --permanent --add-service=dhcp
        > sudo firewall-cmd --reload
DHCP サーバ: ネットワークインターフェイスとファイアウオール
図 20.11: DHCP サーバ: ネットワークインターフェイスとファイアウオール

全ての設定手順が完了したら、 OK を押してダイアログを閉じてください。新しい設定が書き込まれ、サーバが再起動されます。

20.2 DHCP ソフトウエアパッケージ Edit source

openSUSE Leap では、 DHCP サーバと DHCP クライアントの両方が提供されています。提供されている DHCP サーバは dhcpd (Internet Systems Consortium 提供) で、 DHCP クライアントは dhcp-client (こちらも Internet Systems Consortium 提供) というパッケージ名になっています。また、ネットワークを設定するためのツールとして wicked が用意されています。

既定では、 wicked ツールと wickedd-dhcp4 および wickedd-dhcp6 の各サービスがインストールされています。各システムでは、 DHCP サーバの監視を行う目的で、自動的にどのシステムでも動作するようになっています。これらのサービスを利用するにあたっては、ほとんどの環境で設定ファイルを用意する必要がなく、そのままの状態で問題なく動作するようになっています。より複雑な環境の場合は、 /etc/dhclient.conf/etc/dhclient6.conf などの設定ファイルで制御できる ISC dhcp-client をお使いください。

20.3 DHCP サーバ dhcpd Edit source

DHCP システムの中枢は Dynamic Host Configuration Protocol (DHCP) デーモンと呼ばれるものです。このサーバは設定ファイル /etc/dhcpd.conf の設定に従って、アドレスを 貸し出し たあと、それがどのように使用されているのかを監視します。このファイルのパラメータや値を変更することで、システム管理者が様々な方法でプログラムの動作を変更することができます。まずは 例20.1「設定ファイル /etc/dhcpd.conf」 にある /etc/dhcpd.conf の設定例をご覧ください。

例 20.1: 設定ファイル /etc/dhcpd.conf
default-lease-time 600;         # 10 分
max-lease-time 7200;            # 2  時間

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 サーバからネットワークに対して、 IP アドレスを割り当てるための必要十分な設定ファイルです。なお、各行の末尾にはセミコロンを忘れずに付けてください。正しく付けておかないと、 dhcpd が起動しなくなってしまいます。

このサンプルファイルは、大きく分けて 3 つのセクションに分割することができます。最初のセクションは、 IP アドレスを貸し出してから、クライアント側から更新要求を受け取るまでの既定の貸与時間を秒単位で指定しています ( default-lease-time ) 。また、このセクションでは、 DHCP サーバが更新を受け取るまでに IP アドレスを予約しておくべき最大の時間も指定しています ( max-lease-time ) 。

2 番目のセクションでは、グローバルな範囲でいくつかのネットワークパラメータを定義しています。

  • option domain-name の行では、ネットワーク内で使用すべき既定のドメイン名を指定しています。

  • option domain-name-servers の行では、最大 3 つまで、ホスト名から IP アドレスを、もしくは IP アドレスからホスト名を解決することのできる DNS サーバを指定することができます。実際には、お使いのマシンにあるネームサーバと DHCP を設定する前から使用していたネットワーク内の DNS サーバを指定するのが一般的です。またネームサーバは、ホスト名と動的なアドレスとの間での解決を行うこともできます。ネームサーバの構築について、詳しくは 第19章 「ドメインネームシステム をお読みください。

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

  • option routers の行では、設定された自分のアドレスとサブネットマスクと、宛先のアドレスとを比較した結果、ローカルネットワーク内に存在していない宛先にデータパケットを送信する際、経由すべきゲートウエイ (ルータ) を指定しています。小さなネットワーク環境の場合、このゲートウエイはインターネットに接続しているルータのアドレスになります。

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

ファイル内の最後のセクションはネットワークとサブネットマスクを定義しているものです。この定義の中には、 DHCP サーバがクライアントに対して割り当てるアドレスの範囲を指定する必要があります。 例20.1「設定ファイル /etc/dhcpd.conf」 の例では、192.168.2.10 から 192.168.2.20 まで、および 192.168.2.100 から 192.168.2.200 までが割り当ての範囲になっています。

必要に応じていくつかの行を変更したら、あとは systemctl start dhcpd コマンドを実行して DHCP デーモンを起動するだけです。このコマンドを実行すると、即時にサービスが開始されます。なお、 rcdhcpd   check-syntax を実行することで、簡単な文法チェックを行うこともできます。設定内に何らかの問題があって起動時にエラーメッセージが表示された場合は、 journalctl コマンドを利用することで、メインのシステムログを表示させて、原因を探ることができます (詳しくは 第11章 「journalctl : systemd ジャーナルへの問い合わせコマンド をお読みください) 。

なお、既定の openSUSE Leap システムでは、セキュリティ上の理由から、 DHCP デーモンが chroot 環境で実行されます。設定ファイルは、 chroot 環境から読み込むことができるようにするため、あらかじめコピーしておかなければなりません。ただし、通常は systemctl start dhcpd を実行することで、設定ファイルが自動的にコピーされますので、特に気にする必要はありません。

20.3.1 固定 IP アドレスのクライアント Edit source

DHCP では、特定のクライアントに対して固定のアドレスを定義して、割り当てることができます。ただし、アドレスはプール内で事前に明示的に割り当てておかなければなりません。動的なアドレスとは異なり、固定のアドレスでは有効期限が切れることはありません。

クライアントに対して固定のアドレスを割り当てるにあたって、クライアントの識別はハードウエアアドレスを使用します (ハードウエアアドレスはグローバルにユニークなアドレスで、 6 バイトの値から構成されています。たとえば 00:30:6E:08:EC:80 のように表記します) 。固定のアドレスを割り当てるには、 例20.2「設定ファイルへの追加」 のような内容を 例20.1「設定ファイル /etc/dhcpd.conf」 にある設定ファイルに追加する必要があります。 DHCP サーバ側では、このクライアントからアクセスがあると、常に同じデータを返すようになります。

例 20.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

上記の例では、 MAC アドレスが 00:30:6E:08:EC:80 のクライアントに対して、 IP アドレス 192.168.2.100 とホスト名 jupiter を自動的に割り当てる設定になります。なお、 hardware の後ろはほぼ全ての場合において ethernet になりますが、 IBM システムなどでは token-ring を指定する必要がある場合もあります。

20.3.2 openSUSE Leap 版について Edit source

セキュリティを向上させる理由から、 ISC 提供の DHCP サーバの openSUSE Leap 版では、 Ari Edelkind 氏による non-root/chroot (root 以外のユーザで動作させ、かつ chroot 環境を使用する) 修正が適用されています。これにより、 dhcpd は nobody というユーザ権限で、かつ chroot 環境内 ( /var/lib/dhcp ) で動作するように設定されています。また、この構成を利用するため、設定ファイルである dhcpd.conf は、 /var/lib/dhcp/etc 内に配置しなければならなくなっています。通常は、サービスの起動時にスクリプト側で自動的にコピーするように設計されているため、特に特殊な作業を行う必要はありません。

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

また、 chroot 環境下で dhcpd がホスト名を解決できるようにするため、下記の設定ファイルも chroot 環境内にコピーされるようになっています:

  • /etc/localtime

  • /etc/host.conf

  • /etc/hosts

  • /var/run/netconfig/resolv.conf

これらのファイルは、起動スクリプト内で /var/lib/dhcp/etc/ 内にコピーされるようになっています。 /etc/ppp/ip-up のようなスクリプトでこれらのファイルを動的に変更するような場合は、それらが反映されなくなってしまいますが、設定ファイル内では IP アドレスのみを指定していることから、ほとんど影響はありません。

また、 chroot 環境内にコピーすべき追加のファイルが存在する場合は、それらのファイルを /etc/sysconfig/dhcpd 内の DHCPD_CONF_INCLUDE_FILES 内で指定してください。また、 DHCP のログ機構に対して、 syslog デーモンの再起動後も正しく動作するようにするには、 /etc/sysconfig/syslog 内の SYSLOGD_ADDITIONAL_SOCKET_DHCP を設定してください。

20.4 さらなる情報 Edit source

DHCP に関する詳しい情報は、 Internet Systems Consortium ( https://www.isc.org/dhcp/ ) で提供されています。ここには dhcpd , dhcpd.conf , dhcpd.leases , dhcp-options の各マニュアルページも用意されています。

このページを印刷