Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

14.4. マルチホーム DHCP サーバーの設定

マルチホーム DHCP サーバーは、複数のネットワーク、すなわち複数のサブネットとして機能します。以下のセクションにあげる例では、DHCP サーバーが複数のネットワークで機能するように設定する方法、リッスンするネットワークインターフェースを選択する方法、ネットワークを移動するシステム用にネットワーク設定を定義する方法について詳述しています。
変更を行う前に、既存の /etc/dhcp/dhcpd.conf ファイルのバックアップを作成してください。
DHCP デーモンは、/etc/dhcp/dhcpd.conf ファイル内でサブネット宣言されているインターフェースでのみリッスンします。
以下は、2 つのネットワークインターフェースを持つサーバーの基本的な /etc/dhcp/dhcpd.conf ファイルです。enp1s0 10.0.0.0/24 ネットワーク enp2s0 172.16.0.0/24 ネットワーク。複数の subnet 宣言で複数のネットワークに異なる設定を定義することができます。
default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 10.0.0.1;
	range 10.0.0.5 10.0.0.15;
}
subnet 172.16.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 172.16.0.1;
	range 172.16.0.5 172.16.0.15;
}
subnet 10.0.0.0 netmask 255.255.255.0;
DHCP サーバーが提供しているネットワークごとに、subnet 宣言が必要です。複数のサブネットには、複数の subnet 宣言が必要です。DHCP サーバーに subnet 宣言の範囲にネットワークインターフェースがない場合、DHCP サーバーはそのネットワークを提供しません。
subnet 宣言が 1 つしかなく、かつそのサブネットの範囲内にネットワークインターフェースがない場合には、DHCP デーモンは起動に失敗し、以下のようなエラーが /var/log/messages に記録されます。
dhcpd: No subnet declaration for enp1s0 (0.0.0.0).
dhcpd: ** Ignoring requests on enp1s0.  If this is not what
dhcpd:    you want, please write a subnet declaration
dhcpd:    in your dhcpd.conf file for the network segment
dhcpd:    to which interface enp2s0 is attached. **
dhcpd:
dhcpd:
dhcpd: Not configured to listen on any interfaces!
option subnet-mask 255.255.255.0;
option subnet-mask オプションは、サブネットマスクを定義し、 subnet 宣言内の netmask 値を上書きします。簡単なケースでは、サブネットとネットマスクの値は同じです。
option routers 10.0.0.1;
option routers オプションは、サブネットのデフォルトゲートウェイを定義します。これは、システムが異なるサブネット上の内部ネットワーク、さらには外部ネットワークに届くために必要です。
range 10.0.0.5 10.0.0.15;
range オプションは、利用可能な IP アドレスのプールを指定します。指定された IP アドレスの範囲の中からアドレスがシステムに割り当てられます。
詳細情報は、dhcpd.conf(5) man ページを参照してください。
警告
DHCP サーバーが IP 範囲からの IP アドレスを別の物理 Ethernet セグメントにした場合に設定の間違いを回避するため、共有ネットワーク宣言にこれ以上サブネットを含めいないようにしてください。

14.4.1. ホストの設定

変更を行う前に、既存の /etc/sysconfig/dhcpd および /etc/dhcp/dhcpd.conf ファイルのバックアップを作成してください。

複数ネットワークに対する単一システムの設定

以下の /etc/dhcp/dhcpd.conf の例では、2 つのサブネットを作成し、接続するネットワークに応じて IP アドレスを同じシステム用に設定しています。

default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 10.0.0.1;
	range 10.0.0.5 10.0.0.15;
}
subnet 172.16.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 172.16.0.1;
	range 172.16.0.5 172.16.0.15;
}
host example0 {
	hardware ethernet 00:1A:6B:6A:2E:0B;
	fixed-address 10.0.0.20;
}
host example1 {
	hardware ethernet 00:1A:6B:6A:2E:0B;
	fixed-address 172.16.0.20;
}
host example0
host 宣言は、単一のシステム用に IP アドレスなどの特定のパラメーターを定義します。複数のホストに特定のパラメーターを設定するには、複数の host 宣言を使用します。
大半の DHCP クライアントは host 宣言内の名前を無視するため、他の host 宣言に対して一意である限りはどのような名前でも構いません。複数のネットワークに同じシステムを設定する場合は、host 宣言ごとに異なる名前を使用します。使用しないと、DHCP デーモンが起動に失敗します。システムは、host 宣言の名前ではなく、hardware ethernet オプションで識別されます。
hardware ethernet 00:1A:6B:6A:2E:0B;
hardware ethernet オプションはシステムを識別します。アドレスを確認するには、ip link コマンドを実行します。
fixed-address 10.0.0.20;
fixed-address オプションは、hardware ethernet オプションで指定したシステムに有効な IP アドレスを割り当てます。このアドレスは、range オプションで指定される IP アドレスプール外でなければなりません。
option ステートメントがセミコロンで終了しない場合、DHCP デーモンは起動に失敗し、以下のようなエラーで /var/log/messages に記録されます。
/etc/dhcp/dhcpd.conf line 20: semicolon expected.
dhcpd: }
dhcpd: ^
dhcpd: /etc/dhcp/dhcpd.conf line 38: unexpected end of file
dhcpd:
dhcpd: ^
dhcpd: Configuration file errors encountered -- exiting

複数のネットワークインターフェースを持つシステムの設定

以下の host 宣言は、複数のネットワークインターフェースを持つ単一のシステムを設定し、各インターフェースが同じ IP アドレスを受け取るようにします。両方のネットワークインターフェースが同じネットワークに同時に接続されている場合には、この設定は機能しません。

host interface0 {
	hardware ethernet 00:1a:6b:6a:2e:0b;
	fixed-address 10.0.0.18;
}
host interface1 {
	hardware ethernet 00:1A:6B:6A:27:3A;
	fixed-address 10.0.0.18;
}
以下の例では、interface0 は最初のネットワークインターフェースで、interface1 は 2 番目のインターフェースです。異なる hardware ethernet オプションは、各インターフェースを特定します。
このようなシステムが別のネットワークに接続されている場合は、host 宣言をさらに追加します。
  • ホストが接続しているネットワークに有効な fixed-address を割り当てます。
  • host 宣言の名前を一意にします。
host 宣言で指定された名前が一意でない場合は、DHCP デーモンが起動に失敗し、以下のようなエラーは /var/log/messages に記録されます。
dhcpd: /etc/dhcp/dhcpd.conf line 31: host interface0: already exists
dhcpd: }
dhcpd: ^
dhcpd: Configuration file errors encountered -- exiting
このエラーは、/etc/dhcp/dhcpd.conf に複数の host interface0 宣言が定義されているために生じました。