Red Hat Training

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

14.4. 配置多homed DHCP 服务器

多主 DHCP 服务器为多个网络提供服务,即多个子网。这些部分中的示例详细介绍了如何配置 DHCP 服务器为多个网络服务、选择要侦听的网络接口以及如何为移动网络的系统定义网络设置。
在进行任何更改之前,备份现有的 /etc/dhcp/dhcpd.conf 文件。
DHCP 守护进程将仅侦听在 /etc/dhcp/dhcpd.conf 文件中找到子网声明的接口。
以下是具有两个网络接口的服务器的基本 /etc/dhcp/dhcpd.conf 文件:enp1s010.0.0.0/24 网络中,以及 enp2s0172.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 声明,且该子网的范围中没有网络接口,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 page。
警告
为避免在 DHCP 服务器向另一个物理以太网网段提供 IP 地址时出现错误配置,请确保您没有在共享网络声明中包含更多子网。

14.4.1. 主机配置

在进行任何更改之前,备份现有的 /etc/sysconfig/dhcpd/etc/dhcp/dhcpd.conf 文件。

为多个网络配置单一系统

以下 /etc/dhcp/dhcpd.conf 示例创建两个子网,并根据它连接到的网络为同一系统配置 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 守护进程无法启动。系统由 hardware ethernet 选项识别,而不是 host 声明中的名称。
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 是第二个接口。不同的 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 声明造成的。