14.4. 配置多homed DHCP 服务器
多主
DHCP
服务器为多个网络提供服务,即多个子网。这些部分中的示例详细介绍了如何配置 DHCP
服务器为多个网络服务、选择要侦听的网络接口以及如何为移动网络的系统定义网络设置。
在进行任何更改之前,备份现有的
/etc/dhcp/dhcpd.conf
文件。
DHCP
守护进程将仅侦听在 /etc/dhcp/dhcpd.conf
文件中找到子网声明的接口。
以下是具有两个网络接口的服务器的基本
/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
声明,且该子网的范围中没有网络接口,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
声明造成的。