Menu Close

ネットワークインフラストラクチャーサービスの管理

Red Hat Enterprise Linux 9

Red Hat Enterprise Linux 9 におけるネットワークインフラストラクチャーサービスの管理ガイド

概要

本書は、Red Hat Enterprise Linux 9 で DNS や DHCP などのネットワークコアインフラストラクチャーサービスを設定し、管理する方法を説明します。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。これは大規模な取り組みであるため、これらの変更は今後の複数のリリースで段階的に実施されます。詳細は、弊社の CTO、Chris Wright のメッセージ を参照してください。

Red Hat ドキュメントへのフィードバックの提供

ご意見ご要望をお聞かせください。ドキュメントの改善点はございませんか。

  • 特定の部分についての簡単なコメントをお寄せいただく場合は、以下をご確認ください。

    1. ドキュメントの表示が Multi-page HTML 形式になっていていることを確認してください。ドキュメントの右上隅に Feedback ボタンがあることを確認してください。
    2. マウスカーソルで、コメントを追加する部分を強調表示します。
    3. そのテキストの下に表示される Add Feedback ポップアップをクリックします。
    4. 表示される手順に従ってください。
  • Bugzilla を介してフィードバックを送信するには、新しいチケットを作成します。

    1. Bugzilla の Web サイトに移動します。
    2. Component で Documentation を選択します。
    3. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも記入してください。
    4. Submit Bug をクリックします。

第1章 BIND DNS サーバーの設定および管理

DNS (Domain Name System) は、ホスト名を各 IP アドレスに関連付ける分散データベースシステムです。BIND (Berkeley Internet Name Domain) は、DNS 関連のプログラムで構成されます。これには、named と呼ばれるネームサーバーが含まれます。/etc/named.conf は、BIND 設定の主な設定ファイルです。ここでは、DNS サーバーへの BIND のインストール、設定、および管理を中心に説明します。

1.1. BIND のインストール

bind-utils をインストールすることで、BIND ユーティリティーがシステムで利用できるようになります。

手順

  1. BIND をインストールします。

    # dnf install bind bind-utils
  2. named サービスを有効にして起動します。

    # systemctl enable --now named

検証手順

  • named サービスの状態を確認します。

    # systemctl status named

1.2. BIND をキャッシュネームサーバーとして設定

以下の手順では、BIND をキャッシュネームサーバーとして設定する方法を説明します。

前提条件

  • bind がインストールされている。

手順

  1. 元の設定ファイルのバックアップを取得していることを確認してください。

    # cp /etc/named.conf /etc/named.conf.orig
  2. 以下の変更を加えて、/etc/named.conf ファイルーを編集します。

    • options セクションで、listen-on パラメーター、listen-on-v6 パラメーター、および directory パラメーターのコメントを解除します。

      acl clients {192.0.2.0/24;};
      
      options {
              listen-on port 53 { any; };
      
              listen-on-v6 port 53 { any; };
      
              directory       "/var/named";
    • allow-query パラメーターをネットワークアドレスに設定します。ローカルネットワークのホストのみが、DNS サーバーをクエリーできます。

          allow-query     { localhost; clients; };
          allow-recursion { localhost; clients; };
          recursion yes;
          allow-update { none; };
          allow-transfer { localhost; };
      };
      
      logging {
              channel default_debug {
                      file "data/named.run";
                      severity dynamic;
              };
      };
    • パッケージの同梱ファイルを以下のように使用します。

      include "/etc/named.rfc1912.zones";
    • カスタムゾーン設定に追加のインクルードを作成します。

      include "/etc/named/example.zones";
  3. /etc/named/example.zones を作成し、以下のゾーン設定を追加します。

    //forward zone
    zone "example.com" IN {
            type master;
            file "example.com.zone";
    
    };
    
    //backward zone
    zone "2.0.192.in-addr.arpa" IN {
            type master;
            file "example.com.rzone";
    
    };
    • type: サーバーのゾーンのロールを定義します。
    • master: 権威サーバーで、ゾーンデータのマスターコピーを維持します。
    • file: ゾーンのデータベースファイルを指定します。
  4. DNS データディレクトリーの/var/named/ に移動します。

    # cd /var/named/
    # ls
    
    data    dynamic  named.ca  named.empty    named.localhost    named.loopback  slaves
  5. 正引きゾーンパラメーターを使用して /var/named/example.com.zone ファイルを作成します。

    $TTL    86400
    @	IN	SOA	example.com.	root (
    		42         ; serial
    		3H         ; refresh
    		15M        ; retry
    		1W         ; expiry
    		1D )       ; minimum
    
    	IN	NS	ns.example.com.
    
    ns              IN A            192.0.2.1
    station1        IN A            192.0.2.101
    station2        IN A            192.0.2.102
    station3        IN A            192.0.2.103
  6. 逆引きゾーンパラメーターを使用して /var/named/example.com.rzone ファイルを作成します。

    $TTL    86400
    @	IN	SOA	example.com.	root.example.com. (
    		1997022700 ; serial
    		28800      ; refresh
    		14400      ; retry
    		3600000    ; expire
    		86400 )    ; minimum
    
    	IN	NS	ns.example.com.
    
    101     IN      PTR     station1.example.com.
    102     IN      PTR     station2.example.com.
    103     IN      PTR     station3.example.com.
  7. ゾーンファイルにセキュアなパーミッションを設定します。

    # chown root:named /var/named/example.com.zone /var/named/example.com.rzone
    # chmod 640 /var/named/example.com.zone /var/named/example.com.rzone
  8. BIND を再起動します。

    # systemctl restart named

検証手順

  • フォワードゾーンファイルを確認します。

    # named-checkzone example.com /var/named/example.com.zone
    
    zone example.com/IN: loaded serial xxxxxxx
    OK
  • リバースゾーンファイルを確認します。

    # named-checkzone 2.0.192.in-addr.arpa /var/named/example.com.rzone
    
    zone 2.0.192.in-addr.arpa/IN: loaded serial xxxxxxx
    OK
  • 設定を確認します。

    # named-checkconf /etc/named.conf

    設定が正しい場合、このコマンドは出力を返しません。

第2章 バインドされていない DNS サーバーの設定

バインドされていない DNS サーバーは、DNS リゾルバーの検証、再帰、およびキャッシュです。さらに、unless セキュリティーに重点を置いており、たとえば、DNSSEC(Domain Name System Security Extensions)がデフォルトで有効になっています。

2.1. キャッシュ DNS サーバーとしてのバインド解除の設定

デフォルトでは、バインドされていない DNS サービスは正常に解決し、検索に失敗してキャッシュします。その後、サービスはキャッシュから同じレコードにリクエストに応答します。

手順

  1. unbound パッケージをインストールします。

    # dnf install unbound
  2. /etc/unbound/unbound.conf ファイルを編集し、server 句に以下の変更を加えます。

    1. インターフェース パラメーターを追加して、バインドされていない サービスがクエリーをリッスンする IP アドレスを設定します。以下に例を示します。

      interface: 127.0.0.1
      interface: 192.0.2.1
      interface: 2001:db8:1::1

      この設定では、バインド されていないファイルは、指定した IPv4 アドレスおよび IPv6 アドレスでのみリッスンします。

      インターフェースを必要なものに制限すると、クライアントがインターネットなどの未承認のネットワークからこの DNS サーバーにクエリーを送信できなくなります。

    2. アクセス制御 パラメーターを追加して、クライアントが DNS サービスにクエリーできるサブネットを設定します。以下に例を示します。

      access-control: 127.0.0.0/8 allow
      access-control: 192.0.2.0/24 allow
      access-control: 2001:db8:1::/64 allow
  3. バインドされていない サービスをリモートで管理するための秘密鍵と証明書を作成します。

    # systemctl restart unbound-keygen

    この手順を省略すると、次の手順で設定を確認すると、不足しているファイルが報告されます。ただし、バインド されていないサービスはファイルが見つからない場合は、自動的に作成します。

  4. 設定ファイルを確認します。

    # unbound-checkconf
    unbound-checkconf: no errors in /etc/unbound/unbound.conf
  5. firewalld ルールを更新して、着信 DNS トラフィックを許可します。

    # firewall-cmd --permanent --add-service=dns
    # firewall-cmd --reload
  6. unbound サービスを有効にして起動します。

    # systemctl enable --now unbound

検証

  1. localhost インターフェースをリッスンしている バインドされていない DNS サーバーにクエリーを行い、ドメインを解決します。

    # dig @localhost www.example.com
    ...
    www.example.com.    86400    IN    A    198.51.100.34
    
    ;; Query time: 330 msec
    ...

    レコードを初めてクエリーした後に、バインド 解除によりエントリーをキャッシュに追加します。

  2. 前のクエリーを繰り返します。

    # dig @localhost www.example.com
    ...
    www.example.com.    85332    IN    A    198.51.100.34
    
    ;; Query time: 1 msec
    ...

    キャッシュされたエントリーにより、同じレコードへのさらなる要求は、エントリーが期限切れになるまで大幅に速くなります。

次のステップ

  • この DNS サーバーを使用するように、ネットワーク内のクライアントを設定します。たとえば、nmcli ユーティリティーを使用して、NetworkManager 接続プロファイルに DNS サーバーの IP を設定します。

    # nmcli connection modify Example_Connection ipv4.dns 192.0.2.1
    # nmcli connection modify Example_Connection ipv6.dns 2001:db8:1::1

関連情報

  • unbound.conf(5) man page

第3章 DHCP サービスの提供

DHCP (Dynamic Host Configuration Protocol) は、クライアントに IP 情報を自動的に割り当てるネットワークプロトコルです。

本セクションでは、dhcpd サービスに関する一般情報と、DHCP サーバーおよび DHCP リレーの設定方法を説明します。

DHCP を提供する手順が、IPv4 および IPv6 のネットワークで異なる場合は、本章のセクションで、両方のプロトコルの手順を紹介します。

3.1. 静的 IP アドレスと動的 IP アドレス設定の違い

静的な IP アドレス指定

静的 IP アドレスをデバイスに割り当てると、そのアドレスは手動で変更しない限り、時間が経過しても変わることはありません。必要に応じて静的 IP アドレスを使用します。

  • DNS などのサーバーや認証サーバーのネットワークアドレスの整合性を確保する。
  • 他のネットワークインフラストラクチャーから独立して動作する、帯域外管理デバイスを使用する。
動的な IP アドレス指定

動的 IP アドレスを使用するようにデバイスを設定すると、アドレスは時間の経過とともに変わる可能性があります。このため、ホストの再起動後に IP アドレスが異なる可能性があるため、通常は動的アドレスがネットワークに接続されるデバイスに使用されます。

動的 IP アドレスは、より柔軟で、設定と管理が簡単です。Dynamic Host Control Protocol (DHCP) は、ネットワーク設定をホストに動的に割り当てる従来の方法です。

注記

静的 IP アドレスまたは動的 IP アドレスをどのような場合に使用するかを定義する厳密な規則はありません。ユーザーのニーズ、設定、およびネットワーク環境によって異なります。

3.2. DHCP トランザクションフェーズ

DHCP は、Discovery、Offer、Request、Acknowledgement の 4 つのフェーズで機能します。DHCP はこのプロセスを使用してクライアントに IP アドレスを提供します。

Discovery
DHCP クライアントがメッセージを送信して、ネットワーク上にある DHCP サーバーを検出します。このメッセージは、ネットワークおよびデータリンク層でブロードキャストされます。
Offer
DHCP サーバーはクライアントからメッセージを受け取り、DHCP クライアントに IP アドレスを提供します。このメッセージはデータリンク層でのユニキャストですが、ネットワーク層でブロードキャストします。
Request
DHCP クライアントは、提供される IP アドレスを DHCP サーバーに要求します。このメッセージはデータリンク層でのユニキャストですが、ネットワーク層でブロードキャストします。
Acknowledgment
DHCP サーバーは、DHCP クライアントに確認応答を送信します。このメッセージはデータリンク層でのユニキャストですが、ネットワーク層でブロードキャストします。これは、DHCP DORA プロセスの最後のメッセージです。

3.3. DHCPv4 および DHCPv6 で dhcpd を使用する場合の相違点

dhcpd サービスは、1 台のサーバーで DHCPv4 と DHCPv6 の両方を提供できます。ただし、各プロトコルに DHCP を提供するには、別に設定ファイルを使用する dhcpd のインスタンスがそれぞれ必要です。

DHCPv4
  • 設定ファイル -/etc/dhcp/dhcpd.conf
  • systemd サービス名 - dhcpd
DHCPv6
  • 設定ファイル - /etc/dhcp/dhcpd6.conf
  • systemd サービス名 - dhcpd6

3.4. dhcpd サービスのリースデータベース

DHCP リースは、dhcpd サービスがネットワークアドレスをクライアントに割り当てる期間です。dhcpd サービスは、DHCP リースを以下のデータベースに保存します。

  • DHCPv4 の場合 - /var/lib/dhcpd/dhcpd.leases
  • DHCPv6 の場合 - /var/lib/dhcpd/dhcpd6.leases
警告

データベースファイルを手動で更新すると、データベースが破損する可能性があります。

リースデータベースには、メディアアクセス制御 (MAC) アドレスに割り当てられた IP アドレス、リースが期限切れになる際のタイムスタンプなど、割り当てられたリースに関する情報が含まれます。リースデータベースのタイムスタンプはすべて、協定世界時 (UTC) であることに注意してください。

dhcpd サービスは、定期的にデータベースを再作成します。

  1. サービスは、既存のファイルの名前を変更します。

    • /var/lib/dhcpd/dhcpd.leases から /var/lib/dhcpd/dhcpd.leases~
    • /var/lib/dhcpd/dhcpd6.leases から /var/lib/dhcpd/dhcpd6.leases~
  2. このサービスは、新たに作成された /var/lib/dhcpd/dhcpd.leases ファイルおよび /var/lib/dhcpd/dhcpd6.leases ファイルに、既知のリースをすべて書き込みます。

関連情報

3.5. DHCPv6 と radvd の比較

IPv6 ネットワークでは、ルーター広告メッセージのみが IPv6 デフォルトゲートウェイに関する情報を提供します。これにより、デフォルトのゲートウェイ設定を必要とするサブネットで DHCPv6 を使用する場合は、ルーター通知デーモン (radvd) などのルーター広告サービスを追加で設定する必要があります。

radvd サービスは、ルーター通知パケットのフラグを使用して、DHCPv6 サーバーの可用性をアナウンスします。

本セクションでは、DHCPv6 および radvd を比較し、radvd の設定に関する情報を提供します。

 DHCPv6radvd

デフォルトゲートウェイに関する情報を提供する。

いいえ

はい

プライバシーを保護するために、ランダムなアドレスを保証する。

はい

いいえ

その他のネットワーク設定オプションを送信する。

はい

いいえ

メディアアクセス制御 (MAC) アドレスを IPv6 アドレスにマッピングする。

はい

いいえ

3.6. IPv6 ルーター用に radvd サービスの設定

ルーター広告デーモン (radvd) は、IPv6 のステートレス自動設定に必要なルーター広告メッセージを送信します。これにより、ユーザーがアドレス、設定、ルートを自動的に構成し、そこから提供された情報に基づいてデフォルトのルーターを選択できます。

本セクションの手順では、radvd の設定方法を説明します。

注記

/64 接頭辞は、radvd でのみ設定できます。その他の接頭辞を使用するには、DHCPv6 を使用します。

前提条件

  • root ユーザーとしてログインしている。

手順

  1. radvd パッケージをインストールします。

    # dnf install radvd
  2. /etc/radvd.conf ファイルを編集し、以下の設定を追加します。

    interface enp1s0
    {
      AdvSendAdvert on;
      AdvManagedFlag on;
      AdvOtherConfigFlag on;
    
      prefix 2001:db8:0:1::/64 {
      };
    };

    この設定により、2001:db8:0:1::/64 サブネット用の enp1s0 デバイスにルーター広告メッセージを送信するように radvd を設定します。AdvManagedFlag on 設定は、クライアントが、DHCP サーバーから IP アドレスを受け取る必要があることを定義し、on に設定した AdvOtherConfigFlag パラメーターは、DHCP サーバーからもアドレス以外の情報を取得する必要があることを定義します。

  3. 必要に応じて、システムの起動時に radvd が自動的に起動するように設定します。

    # systemctl enable radvd
  4. radvd サービスを起動します。

    # systemctl start radvd
  5. 必要に応じて、ルーター広告パッケージのコンテンツと、radvd が送信する設定値を表示します。

    # radvdump

関連情報

3.7. DHCP サーバーのネットワークインターフェースの設定

デフォルトでは、dhcpd サービスプロセスは、サービスの設定ファイルで定義されているサブネットに IP アドレスのあるネットワークインターフェイスでのみ要求します。

たとえば、以下のシナリオでは、dhcpd は、enp0s1 ネットワークインターフェイスでのみリッスンします。

  • /etc/dhcp/dhcpd.conf ファイルには、192.0.2.0/24 ネットワークの subnet 定義しかない。
  • enp0s1 ネットワークインターフェイスが 192.0.2.0/24 サブネットに接続されている。
  • enp7s0 インターフェイスが別のサブネットに接続されます。

DHCP サーバーに同じネットワークに接続された複数のネットワークインターフェイスが含まれているにもかかわらず、サービスが特定のインターフェイスでのみリッスンする必要がある場合にのみ、本セクションの手順に従ってください。

IPv4、IPv6、またはその両方のプロトコルに DHCP を提供するかどうかに応じて、以下の手順を参照してください。

前提条件

  • root ユーザーとしてログインしている。
  • dhcp-server パッケージがインストールされている。

手順

  • IPv4 ネットワークの場合

    1. /usr/lib/systemd/system/dhcpd.service ファイルを /etc/systemd/system/ ディレクトリーにコピーします。

      # cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/

      /usr/lib/systemd/system/dhcpd.service ファイルは編集しないでください。dhcp-server パッケージの今後の更新により、変更が上書きされます。

    2. /etc/systemd/system/dhcpd.service ファイルを編集し、dhcpd が、ExecStart パラメーターのコマンドでリッスンする必要があるインターフェイスの名前を追加します。

      ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid $DHCPDARGS enp0s1 enp7s0

      この例では、dhcpdenp0s1 インターフェイスおよび enp7s0 インターフェイスでのみリッスンするように設定します。

    3. systemd マネージャー設定を再読み込みします。

      # systemctl daemon-reload
    4. dhcpd サービスを再起動します。

      # systemctl restart dhcpd.service
  • IPv6 ネットワークの場合

    1. /usr/lib/systemd/system/dhcpd6.service ファイルを /etc/systemd/system/ ディレクトリーにコピーします。

      # cp /usr/lib/systemd/system/dhcpd6.service /etc/systemd/system/

      /usr/lib/systemd/system/dhcpd6.service ファイルは編集しないでください。dhcp-server パッケージの今後の更新により、変更が上書きされます。

    2. /etc/systemd/system/dhcpd6.service ファイルを編集し、dhcpd は、ExecStart パラメーターのコマンドでリッスンする必要があるインターフェイスの名前を追加します。

      ExecStart=/usr/sbin/dhcpd -f -6 -cf /etc/dhcp/dhcpd6.conf -user dhcpd -group dhcpd --no-pid $DHCPDARGS enp0s1 enp7s0

      この例では、dhcpdenp0s1 インターフェイスおよび enp7s0 インターフェイスでのみリッスンするように設定します。

    3. systemd マネージャー設定を再読み込みします。

      # systemctl daemon-reload
    4. dhcpd6 サービスを再起動します。

      # systemctl restart dhcpd6.service

3.8. DHCP サーバーに直接接続されたサブネット用の DHCP サービスの設定

DHCP サーバーが、DHCP 要求に応答するサブネットに直接接続されている場合は、以下の手順を使用します。サーバーのネットワークインターフェースに、このサブネットの IP アドレスが割り当てられている場合は、以下のようになります。

IPv4、IPv6、またはその両方のプロトコルに DHCP を提供するかどうかに応じて、以下の手順を参照してください。

前提条件

  • root ユーザーとしてログインしている。
  • dhcp-server パッケージがインストールされている。

手順

  • IPv4 ネットワークの場合

    1. /etc/dhcp/dhcpd.conf ファイルを編集します。

      1. その他のディレクティブにこの設定がない場合は、dhcpd が使用するグローバルパラメーターをデフォルトとして追加します。

        option domain-name "example.com";
        default-lease-time 86400;

        この例では、接続のデフォルトのドメイン名を example.com に設定し、デフォルトのリース時間を 86400 秒 (1 日) に設定します。

      2. authoritative ステートメントを新しい行に追加します。

        authoritative;
        重要

        authoritative ステートメントがない場合、dhcpd サービスは、クライアントがプール外にあるアドレスを要求する場合に、DHCPNAKDHCPREQUEST メッセージに応答することはありません。

      3. サーバーのインターフェイスに直接接続された各 IPv4 サブネットに、subnet 宣言を追加します。

        subnet 192.0.2.0 netmask 255.255.255.0 {
          range 192.0.2.20 192.0.2.100;
          option domain-name-servers 192.0.2.1;
          option routers 192.0.2.1;
          option broadcast-address 192.0.2.255;
          max-lease-time 172800;
        }

        この例では、192.0.2.0/24 ネットワークにサブネットの宣言を追加します。この設定では、DHCP サーバーは以下の設定を、このサブネットから DHCP 要求を送信するクライアントに割り当てます。

        • range パラメーターで定義されている範囲からの空き IPv4 アドレス
        • このサブネットの DNS サーバーの IP - 192.0.2.1
        • このサブネットのデフォルトゲートウェイ - 192.0.2.1
        • このサブネットのブロードキャストアドレス - 192.0.2.255
        • このサブネットのクライアントが IP を解放し、サーバーに新しい要求を送信する最大リース時間 - 172800 秒 (2 日)
    2. 必要に応じて、システムの起動時に dhcpd が自動的に起動するように設定します。

      # systemctl enable dhcpd
    3. dhcpd サービスを開始します。

      # systemctl start dhcpd
  • IPv6 ネットワークの場合

    1. /etc/dhcp/dhcpd6.conf ファイルを編集します。

      1. その他のディレクティブにこの設定がない場合は、dhcpd が使用するグローバルパラメーターをデフォルトとして追加します。

        option dhcp6.domain-search "example.com";
        default-lease-time 86400;

        この例では、接続のデフォルトのドメイン名を example.com に設定し、デフォルトのリース時間を 86400 秒 (1 日) に設定します。

      2. authoritative ステートメントを新しい行に追加します。

        authoritative;
        重要

        authoritative ステートメントがない場合、dhcpd サービスは、クライアントがプール外にあるアドレスを要求する場合に、DHCPNAKDHCPREQUEST メッセージに応答することはありません。

      3. サーバーのインターフェイスに直接接続された各 IPv6 サブネットに、subnet 宣言を追加します。

        subnet6 2001:db8:0:1::/64 {
          range6 2001:db8:0:1::20 2001:db8:0:1::100;
          option dhcp6.name-servers 2001:db8:0:1::1;
          max-lease-time 172800;
        }

        以下の例では、 2001:db8:0:1::/64 ネットワークにサブネット宣言を追加します。この設定では、DHCP サーバーは以下の設定を、このサブネットから DHCP 要求を送信するクライアントに割り当てます。

        • range6 パラメーターで定義されている範囲外の空き IPv6 アドレスです。
        • このサブネットの DNS サーバーの IP は 2001:db8:0:1::1 です。
        • このサブネットのクライアントが IP を解放し、サーバーに新しい要求を送信する最大リース時間は、172800 秒 (2 日) です。

          IPv6 では、デフォルトのゲートウェイを特定するために、ルーター広告メッセージを使用する必要があることに注意してください。

    2. 必要に応じて、システムの起動時に dhcpd6 が自動的に開始するように設定します。

      # systemctl enable dhcpd6
    3. dhcpd6 サービスを起動します。

      # systemctl start dhcpd6

関連情報

  • dhcp-options(5) の man ページ
  • dhcpd.conf(5) の man ページの The authoritative statement セクション
  • /usr/share/doc/dhcp-server/dhcpd.conf.example
  • /usr/share/doc/dhcp-server/dhcpd6.conf.example

3.9. DHCP サーバーに直接接続していないサブネット用の DHCP サービスの設定

DHCP サーバーが、DHCP 要求に応答するサブネットに直接接続していない場合は、以下の手順に従います。これは、DHCP リレーエージェントが DHCP サーバーに要求を転送する場合を指します。DHCP サーバーのインターフェイスが、サーバーが提供するサブネットに直接接続していないためです。

IPv4、IPv6、またはその両方のプロトコルに DHCP を提供するかどうかに応じて、以下の手順を参照してください。

前提条件

  • root ユーザーとしてログインしている。
  • dhcp-server パッケージがインストールされている。

手順

  • IPv4 ネットワークの場合

    1. /etc/dhcp/dhcpd.conf ファイルを編集します。

      1. その他のディレクティブにこの設定がない場合は、dhcpd が使用するグローバルパラメーターをデフォルトとして追加します。

        option domain-name "example.com";
        default-lease-time 86400;

        この例では、接続のデフォルトのドメイン名を example.com に設定し、デフォルトのリース時間を 86400 秒 (1 日) に設定します。

      2. authoritative ステートメントを新しい行に追加します。

        authoritative;
        重要

        authoritative ステートメントがない場合、dhcpd サービスは、クライアントがプール外にあるアドレスを要求する場合に、DHCPNAKDHCPREQUEST メッセージに応答することはありません。

      3. 以下のように、サーバーのインターフェイスに直接接続していない IPv4 サブネットに、shared-network 宣言を追加します。

        shared-network example {
          option domain-name-servers 192.0.2.1;
          ...
        
          subnet 192.0.2.0 netmask 255.255.255.0 {
            range 192.0.2.20 192.0.2.100;
            option routers 192.0.2.1;
          }
        
          subnet 198.51.100.0 netmask 255.255.255.0 {
            range 198.51.100.20 198.51.100.100;
            option routers 198.51.100.1;
          }
          ...
        }

        この例では、192.0.2.0/24 と 198.51.100.0/24 の両方のネットワークの subnet 宣言を含む、共有ネットワーク宣言を追加します。この設定では、DHCP サーバーは以下の設定を、このサブネットのいずれかから DHCP 要求を送信するクライアントに割り当てます。

        • 両方のサブネットにおけるクライアントの DNS サーバーの IP は 192.0.2.1 です。
        • クライアントがどのサブネットから要求を送信したかに応じて、range パラメーターで定義された範囲の 空き IPv4 アドレスです。
        • デフォルトゲートウェイは、クライアントがどのサブネットから要求を送信したかに応じて、192.0.2.1 または 198.51.100.1 のいずれかになります。
      4. サーバーが直接接続し、上記の shared-network で指定したリモートのサブネットに到達するのに使用されるサブネットの subnet 宣言を追加します。

        subnet 203.0.113.0 netmask 255.255.255.0 {
        }
        注記

        サーバーがこのサブネットに DHCP サービスを提供しない場合は、以下の例のように、subnet 宣言を空にする必要があります。直接接続したサブネットの宣言がないと、dhcpd は起動しません。

    2. 必要に応じて、システムの起動時に dhcpd が自動的に起動するように設定します。

      # systemctl enable dhcpd
    3. dhcpd サービスを開始します。

      # systemctl start dhcpd
  • IPv6 ネットワークの場合

    1. /etc/dhcp/dhcpd6.conf ファイルを編集します。

      1. その他のディレクティブにこの設定がない場合は、dhcpd が使用するグローバルパラメーターをデフォルトとして追加します。

        option dhcp6.domain-search "example.com";
        default-lease-time 86400;

        この例では、接続のデフォルトのドメイン名を example.com に設定し、デフォルトのリース時間を 86400 秒 (1 日) に設定します。

      2. authoritative ステートメントを新しい行に追加します。

        authoritative;
        重要

        authoritative ステートメントがない場合、dhcpd サービスは、クライアントがプール外にあるアドレスを要求する場合に、DHCPNAKDHCPREQUEST メッセージに応答することはありません。

      3. 以下のように、サーバーのインターフェイスに直接接続していない IPv6 サブネットに、shared-network 宣言を追加します。

        shared-network example {
          option domain-name-servers 2001:db8:0:1::1:1
          ...
        
          subnet6 2001:db8:0:1::1:0/120 {
            range6 2001:db8:0:1::1:20 2001:db8:0:1::1:100
          }
        
          subnet6 2001:db8:0:1::2:0/120 {
            range6 2001:db8:0:1::2:20 2001:db8:0:1::2:100
          }
          ...
        }

        この例では、2001:db8:0:1::1:0/120 と 2001:db8:0:1::2:0/120 の両方のネットワークの subnet6 宣言を含む共有ネットワーク宣言を追加します。この設定では、DHCP サーバーは以下の設定を、このサブネットのいずれかから DHCP 要求を送信するクライアントに割り当てます。

        • 両方のサブネットからのクライアントに対する DNS サーバーの IP は 2001:db8:0:1::1:1 です。
        • クライアントがどのサブネットから要求を送信したかに応じて、range6 パラメーターで定義された範囲の 空き IPv6 アドレスです。

          IPv6 では、デフォルトのゲートウェイを特定するために、ルーター広告メッセージを使用する必要があることに注意してください。

      4. サーバーが直接接続され、上記の shared-network で指定したリモートサブネットに到達するのに使用されるサブネットの subnet6 宣言を追加します。

        subnet6 2001:db8:0:1::50:0/120 {
        }
        注記

        サーバーがこのサブネットに DHCP サービスを提供しない場合、subnet6 宣言は以下の例のように空にする必要があります。直接接続したサブネットの宣言がないと、dhcpd は起動しません。

    2. 必要に応じて、システムの起動時に dhcpd6 が自動的に開始するように設定します。

      # systemctl enable dhcpd6
    3. dhcpd6 サービスを起動します。

      # systemctl start dhcpd6

関連情報

  • dhcp-options(5) の man ページ
  • dhcpd.conf(5) の man ページの The authoritative statement セクション
  • /usr/share/doc/dhcp-server/dhcpd.conf.example
  • /usr/share/doc/dhcp-server/dhcpd6.conf.example
  • DHCP リレーエージェントの設定

3.10. DHCP を使用してホストに静的アドレスの割り当て

host 宣言を使用して、DHCP サーバーを設定して、ホストのメディアアクセス制御 (MAC) アドレスに固定 IP アドレスを割り当てることができます。たとえば、この方法を使用して、常に同じ IP アドレスをサーバーまたはネットワークデバイスに割り当てます。

重要

MAC アドレスの固定 IP アドレスを設定する場合、IP アドレスは、fixed-address パラメーターおよび fixed-address6 パラメーターで指定されたアドレスプールの外にある必要があります。

IPv4、IPv6、またはその両方のプロトコルに固定アドレスを設定するかどうかに応じて、以下の手順を参照してください。

前提条件

  • dhcpd サービスを設定し、実行している。
  • root ユーザーとしてログインしている。

手順

  • IPv4 ネットワークの場合

    1. /etc/dhcp/dhcpd.conf ファイルを編集します。

      1. host 宣言を追加します。

        host server.example.com {
        	hardware ethernet 52:54:00:72:2f:6e;
        	fixed-address 192.0.2.130;
        }

        以下の例では、DHCP サーバーが、MAC アドレス 52:54:00:72:2f:6e を使用して、常に IP アドレス 192.0.2.130 をホストに割り当てるように設定します。

        dhcpd サービスは、fixed-address パラメーターで指定された MAC アドレスでシステムを識別しますが、host 宣言の名前とは異なります。これにより、この名前を、他の host 宣言に一致しない任意の文字列に設定できます。複数のネットワークに同じシステムを設定するには、別の名前を使用します。同じ名前を使用すると、dhcpd が起動に失敗します。

      2. 必要に応じて、このホストに固有の host 宣言にその他の設定を追加します。
    2. dhcpd サービスを再起動します。

      # systemctl start dhcpd
  • IPv6 ネットワークの場合

    1. /etc/dhcp/dhcpd6.conf ファイルを編集します。

      1. host 宣言を追加します。

        host server.example.com {
        	hardware ethernet 52:54:00:72:2f:6e;
        	fixed-address6 2001:db8:0:1::200;
        }

        この例では、DHCP サーバーを設定して、IP アドレス 2001:db8:0:1::20 を常に MAC アドレス 52:54:00:72:2f:6e を持つホストに割り当てます。

        dhcpd サービスは、host 宣言の名前ではなく、fixed-address6 パラメーターで指定された MAC アドレスでシステムを識別します。これにより、他の host 宣言に固有である限り、この名前を任意の文字列に設定できます。複数のネットワークに同じシステムを設定する場合は、同じ名前を使用すると dhcpd が起動に失敗するため、別の名前を使用します。

      2. 必要に応じて、このホストに固有の host 宣言にその他の設定を追加します。
    2. dhcpd6 サービスを再起動します。

      # systemctl start dhcpd6

関連情報

  • dhcp-options(5) の man ページ
  • /usr/share/doc/dhcp-server/dhcpd.conf.example
  • /usr/share/doc/dhcp-server/dhcpd6.conf.example

3.11. group 宣言を使用して、パラメーターを複数のホスト、サブネット、および共有ネットワークを同時に適用

group 宣言を使用すると、同じパラメーターを複数のホスト、サブネット、および共有ネットワークに適用できます。

本セクションの手順では、ホストの group 宣言を使用する方法を説明しますが、手順はサブネットと共有ネットワークの場合と同じです。

IPv4、IPv6、またはその両方プロトコルにグループを設定するかどうかに応じて、以下の手順を参照してください。

前提条件

  • dhcpd サービスを設定し、実行している。
  • root ユーザーとしてログインしている。

手順

  • IPv4 ネットワークの場合

    1. /etc/dhcp/dhcpd.conf ファイルを編集します。

      1. group 宣言を追加します。

        group {
          option domain-name-servers 192.0.2.1;
        
          host server1.example.com {
            hardware ethernet 52:54:00:72:2f:6e;
            fixed-address 192.0.2.130;
          }
        
          host server2.example.com {
            hardware ethernet 52:54:00:1b:f3:cf;
            fixed-address 192.0.2.140;
          }
        }

        この group は、2 つの host エントリーを 1 つのグループにまとめます。dhcpd サービスは、option domain-name-servers パラメータに設定した値を、グループ内の両方のホストに適用します。

      2. 必要に応じて、このホストに固有の group 宣言にその他の設定を追加します。
    2. dhcpd サービスを再起動します。

      # systemctl start dhcpd
  • IPv6 ネットワークの場合

    1. /etc/dhcp/dhcpd6.conf ファイルを編集します。

      1. group 宣言を追加します。

        group {
          option dhcp6.domain-search "example.com";
        
          host server1.example.com {
            hardware ethernet 52:54:00:72:2f:6e;
            fixed-address 2001:db8:0:1::200;
          }
        
          host server2.example.com {
            hardware ethernet 52:54:00:1b:f3:cf;
            fixed-address 2001:db8:0:1::ba3;
          }
        }

        この group は、2 つの host エントリーを 1 つのグループにまとめます。dhcpd サービスは、option dhcp6.domain-search パラメーターに設定された値をグループ内の両方のホストに適用します。

      2. 必要に応じて、このホストに固有の group 宣言にその他の設定を追加します。
    2. dhcpd6 サービスを再起動します。

      # systemctl start dhcpd6

関連情報

  • dhcp-options(5) の man ページ
  • /usr/share/doc/dhcp-server/dhcpd.conf.example
  • /usr/share/doc/dhcp-server/dhcpd6.conf.example

3.12. 破損したリースデータベースの復元

DHCP サーバーが、リースデータベースに関連するエラー (Corrupt lease file - possible data loss! など) をログに記録すると、dhcpd サービスが作成するコピーからリースデータベースを復元できます。このコピーには、データベースの最新のステータスが反映されない場合があることに注意してください。

警告

リースデータベースをバックアップに置き換えるのではなく削除すると、現在割り当てられているリースに関する情報がすべて失われます。その結果、DHCP サーバーは、他のホストに割り当てられていて、まだ期限が切れていないクライアントにリースを割り当てることができます。これにより IP の競合が発生します。

DHCPv4、DHCPv6、またはその両方のデータベースを復元するかどうかに応じて、以下の手順を参照してください。

前提条件

  • root ユーザーとしてログインしている。
  • リースデータベースが破損している。

手順

  • DHCPv4 リースデータベースの復元

    1. dhcpd サービスを停止します。

      # systemctl stop dhcpd
    2. 破損したリースデータベースの名前を変更します。

      # mv /var/lib/dhcpd/dhcpd.leases /var/lib/dhcpd/dhcpd.leases.corrupt
    3. リースデータベースを更新する際に作成される dhcp サービスのリースデータベースのコピーを復元します。

      # cp -p /var/lib/dhcpd/dhcpd.leases~ /var/lib/dhcpd/dhcpd.leases
      重要

      リースデータベースの最新のバックアップがある場合には、代わりにこのバックアップを復元します。

    4. dhcpd サービスを開始します。

      # systemctl start dhcpd
  • DHCPv6 リースデータベースの復元

    1. dhcpd6 サービスを停止します。

      # systemctl stop dhcpd6
    2. 破損したリースデータベースの名前を変更します。

      # mv /var/lib/dhcpd/dhcpd6.leases /var/lib/dhcpd/dhcpd6.leases.corrupt
    3. リースデータベースを更新する際に作成される dhcp サービスのリースデータベースのコピーを復元します。

      # cp -p /var/lib/dhcpd/dhcpd6.leases~ /var/lib/dhcpd/dhcpd6.leases
      重要

      リースデータベースの最新のバックアップがある場合には、代わりにこのバックアップを復元します。

    4. dhcpd6 サービスを起動します。

      # systemctl start dhcpd6

3.13. DHCP リレーエージェントの設定

DHCP リレーエージェント (dhcrelay) を使うと、DHCP サーバーがないサブネットから他のサブネットにある DHCP サーバーに DHCP および BOOTP リクエストのリレーができるようになります。DHCP クライアントが情報を要求すると、DHCP リレーエージェントは、指定した DHCP サーバーの一覧に要求を転送します。DHCP サーバーが応答を返すと、DHCP リレーエージェントはこの要求をクライアントに転送します。

IPv4、IPv6、またはその両方のプロトコルに DHCP リレーを設定するかどうかに応じて、以下の手順を参照してください。

前提条件

  • root ユーザーとしてログインしている。

手順

  • IPv4 ネットワークの場合

    1. dhcp-relay パッケージをインストールします。

      # dnf install dhcp-relay
    2. /lib/systemd/system/dhcrelay.service ファイルを /etc/systemd/system/ ディレクトリーにコピーします。

      # cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/

      /usr/lib/systemd/system/dhcrelay.service ファイルは編集しないでください。dhcp-relay パッケージの今後の更新により、変更がオーバーライドされます。

    3. /etc/systemd/system/dhcrelay.service ファイルを編集し、-i interface パラメーターと、サブネットに対応する DHCPv4 サーバーの IP アドレス一覧を追加します。

      ExecStart=/usr/sbin/dhcrelay -d --no-pid -i enp1s0 192.0.2.1

      dhcrelay は、この追加パラメーターを使用して、enp1s0 インターフェイスの DHCPv4 要求をリッスンし、IP 192.0.2.1で DHCP サーバーに転送します。

    4. systemd マネージャー設定を再読み込みします。

      # systemctl daemon-reload
    5. 必要に応じて、システムの起動時に dhcrelay サービスが開始するように設定します。

      # systemctl enable dhcrelay.service
    6. dhcrelay サービスを開始します。

      # systemctl start dhcrelay.service
  • IPv6 ネットワークの場合

    1. dhcp-relay パッケージをインストールします。

      # dnf install dhcp-relay
    2. /lib/systemd/system/dhcrelay.service ファイルを /etc/systemd/system/ ディレクトリーにコピーして、dhcrelay6.service ファイルに名前を付けます。

      # cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/dhcrelay6.service

      /usr/lib/systemd/system/dhcrelay.service ファイルは編集しないでください。dhcp-relay パッケージの今後の更新により、変更がオーバーライドされます。

    3. /etc/systemd/system/dhcrelay6.service ファイルを編集し、-l receiving_interface パラメーターおよび -u outgoing_interface パラメーターを追加します。

      ExecStart=/usr/sbin/dhcrelay -d --no-pid -l enp1s0 -u enp7s0

      これらの追加パラメーターを使用すると、dhcrelayenp1s0 インターフェイスの DHCPv6 要求をリッスンし、enp7s0 インターフェイスに接続されたネットワークに転送します。

    4. systemd マネージャー設定を再読み込みします。

      # systemctl daemon-reload
    5. 必要に応じて、システムの起動時に dhcrelay6 サービスが開始するように設定します。

      # systemctl enable dhcrelay6.service
    6. dhcrelay6 サービスを開始します。

      # systemctl start dhcrelay6.service

関連情報

  • dhcrelay(8) の man ページ