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 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
声明造成的。