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 声明,您可以为多个网络定义不同的设置:
-
subnet 10.0.0.0 netmask 255.255.255.0; - 您的
DHCP服务器服务的每个网络都需要subnet声明。多个子网需要多个subnet声明。如果DHCP服务器在subnet声明范围中没有网络接口,DHCP服务器不为该网络提供服务。如果只有一个subnet声明,且该子网的范围中没有网络接口,DHCP守护进程无法启动,且以下错误会记录到/var/log/messages:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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 地址 :
-
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 :
使用多个网络接口配置系统
以下 host 声明配置了一个系统,它具有多个网络接口,以便每个接口接收相同的 IP 地址。如果两个网络接口同时连接到同一网络,则此配置无法正常工作:
在本例中,
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
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 声明造成的。