Show Table of Contents
10.4. 配置 DHCP 服务器
多主机
DHCP 服务器可提供多个网络,即多个子网。这些小节中的示例详细论述了如何将 DHCP 配置为提供多个网络,选择要侦听的网络接口,以及如何为在网络间移动的系统定义网络设置。
进行修改前,请备份现有
/etc/dhcp/dhcpd.conf 文件。
DHCP 守护进程只侦听它能够在 /etc/dhcp/dhcpd.conf 文件中找到子网声明的网络。
下面是一个基本
/etc/dhcp/dhcpd.conf 文件,适用于有两个网络接口的服务器,接口 eth0 用于 10.0.0.0/24 网络,接口 eth1 用于 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声明,且没有处于那个子网范围中的网络接口,则DHCP守护进程会无法启动,并在/var/log/messages中记录如下出错信息:dhcpd: No subnet declaration for eth0 (0.0.0.0). dhcpd: ** Ignoring requests on eth0. 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 eth1 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。
10.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 example0host声明定义单一系统的具体参数,比如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 声明造成的。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.