3.9. DHCP サーバーに直接接続していないサブネット用の DHCP サービスの設定
DHCP サーバーが、DHCP 要求に応答するサブネットに直接接続していない場合は、以下の手順に従います。これは、DHCP リレーエージェントが DHCP サーバーに要求を転送する場合を指します。DHCP サーバーのインターフェイスが、サーバーが提供するサブネットに直接接続していないためです。
IPv4、IPv6、またはその両方のプロトコルに DHCP を提供するかどうかに応じて、以下の手順を参照してください。
前提条件
-
root
ユーザーとしてログインしている。 -
dhcp-server
パッケージがインストールされている。
手順
IPv4 ネットワークの場合:
/etc/dhcp/dhcpd.conf
ファイルを編集します。その他のディレクティブにこの設定がない場合は、
dhcpd
が使用するグローバルパラメーターをデフォルトとして追加します。option domain-name "example.com"; default-lease-time 86400;
この例では、接続のデフォルトのドメイン名を
example.com
に設定し、デフォルトのリース時間を86400
秒 (1 日) に設定します。authoritative
ステートメントを新しい行に追加します。authoritative;
重要authoritative
ステートメントがない場合、dhcpd
サービスは、クライアントがプール外にあるアドレスを要求する場合に、DHCPNAK
でDHCPREQUEST
メッセージに応答することはありません。以下のように、サーバーのインターフェイスに直接接続していない 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
のいずれかになります。
-
両方のサブネットにおけるクライアントの DNS サーバーの IP は
サーバーが直接接続し、上記の
shared-network
で指定したリモートのサブネットに到達するのに使用されるサブネットのsubnet
宣言を追加します。subnet 203.0.113.0 netmask 255.255.255.0 { }
注記サーバーがこのサブネットに DHCP サービスを提供しない場合は、以下の例のように、
subnet
宣言を空にする必要があります。直接接続したサブネットの宣言がないと、dhcpd
は起動しません。
必要に応じて、システムの起動時に
dhcpd
が自動的に起動するように設定します。# systemctl enable dhcpd
dhcpd
サービスを開始します。# systemctl start dhcpd
IPv6 ネットワークの場合:
/etc/dhcp/dhcpd6.conf
ファイルを編集します。その他のディレクティブにこの設定がない場合は、
dhcpd
が使用するグローバルパラメーターをデフォルトとして追加します。option dhcp6.domain-search "example.com"; default-lease-time 86400;
この例では、接続のデフォルトのドメイン名を
example.com
に設定し、デフォルトのリース時間を86400
秒 (1 日) に設定します。authoritative
ステートメントを新しい行に追加します。authoritative;
重要authoritative
ステートメントがない場合、dhcpd
サービスは、クライアントがプール外にあるアドレスを要求する場合に、DHCPNAK
でDHCPREQUEST
メッセージに応答することはありません。以下のように、サーバーのインターフェイスに直接接続していない 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 では、デフォルトのゲートウェイを特定するために、ルーター広告メッセージを使用する必要があることに注意してください。
-
両方のサブネットからのクライアントに対する DNS サーバーの IP は
サーバーが直接接続され、上記の
shared-network
で指定したリモートサブネットに到達するのに使用されるサブネットのsubnet6
宣言を追加します。subnet6 2001:db8:0:1::50:0/120 { }
注記サーバーがこのサブネットに DHCP サービスを提供しない場合、
subnet6
宣言は以下の例のように空にする必要があります。直接接続したサブネットの宣言がないと、dhcpd
は起動しません。
必要に応じて、システムの起動時に
dhcpd6
が自動的に開始するように設定します。# systemctl enable dhcpd6
dhcpd6
サービスを起動します。# systemctl start dhcpd6
関連情報
-
dhcp-options(5)
の man ページ -
dhcpd.conf(5)
の man ページ -
/usr/share/doc/dhcp-server/dhcpd.conf.example
ファイル -
/usr/share/doc/dhcp-server/dhcpd6.conf.example
ファイル - DHCP リレーエージェントの設定