14.2. 配置 DHCP 服务器
dhcp 软件包包含一个互联网系统 Consortium(ISC )D
服务器
。以 root
用户身份安装软件包:
~]# yum install dhcp
安装 dhcp 软件包会创建一个文件
/etc/dhcp/dhcpd.conf
,该文件只是一个空配置文件。以 root
身份运行以下命令:
~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
示例配置文件可以在
/usr/share/doc/dhcp-版本;/dhcpd.conf.example
中找到。您应该使用此文件来帮助您配置 /etc/dhcp/dhcpd.conf
,详情如下。
14.2.1. 配置文件
配置
DHCP
服务器的第一步是创建 配置文件,该文件存储客户端的网络信息。使用此文件声明客户端系统的选项。
配置文件可以包含额外的标签页或空白行,以方便格式化。关键字不区分大小写,以哈希符号(
#
)开头的行被视为注释。
配置文件中有两种语句类型:
- 参数 - 说明如何执行任务,无论是执行任务,还是要将哪些网络配置选项发送到客户端。
- 声明 - 描述网络拓扑、描述客户端、为客户端提供地址,或者对一组声明应用一组参数。
以 keyword 选项开头的参数称为选项。这些选项控制
DHCP
选项;而参数配置不是可选的值或控制 DHCP
服务器的行为方式。
在大括号(
{ }
)括起的部分之前声明的参数(包括选项)被视为全局参数。全局参数应用到它下面的所有部分。
重要
如果配置文件已更改,则更改不会生效,直到
DHCP
守护进程使用 systemctl restart dhcpd 命令重启为止。
注意
使用omshell命令不更改
DHCP
配置文件和每次重新启动服务,而是提供了一种交互式方式来连接、查询和更改 DHCP
服务器的配置。通过使用omshell,可在服务器运行期间进行所有更改。有关omshell的详情请参考 theomshell man page。
在 例 14.1 “子网声明” 中,路由器、subnet-mask、domain-search、domain-name-servers 和 time-offset 选项都会用于它下面声明的任何主机语句。
对于将提供服务的每个子网,对于
DHCP
服务器连接到的每个子网,必须有一个子网声明,该公告告诉 DHCP
守护进程如何识别某个地址在该子网上。每个子网都需要子网声明,即使没有地址动态分配到该子网。
在本例中,子网中的每个
DHCP
客户端都有全局选项,并且声明了一个范围。为客户端分配 范围内的 IP 地址
。
例 14.1. 子网声明
subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.254; option subnet-mask 255.255.255.0; option domain-search "example.com"; option domain-name-servers 192.168.1.1; option time-offset -18000; # Eastern Standard Time range 192.168.1.10 192.168.1.100; }
要配置将动态
IP 地址租给子网中的系统的
DHCP
服务器,请从 例 14.2 “范围参数” 修改示例值。它为客户端声明默认的租用时间、最长租用时间和网络配置值。 本例将范围 192.168.1.10 和 192.168.1.
100
范围 分配给客户端系统
。
例 14.2. 范围参数
default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.254; option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-search "example.com"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.100; }
要根据网络接口卡的 MAC 地址为客户端分配
IP
地址,请在主机声明中使用硬件以太网 参数。如 例 14.3 “使用 DHCP 的静态 IP 地址” 中所示,主机 apex 声明指定 MAC 地址为 00:A0:78:8E:9E:AA
的网络接口卡始终接收 IP 地址
192.168.1.4
。
请注意,您也可以使用可选参数
host-name
为客户端分配主机名。
例 14.3. 使用 DHCP 的静态 IP 地址
host apex { option host-name "apex.example.com"; hardware ethernet 00:A0:78:8E:9E:AA; fixed-address 192.168.1.4; }
Red Hat Enterprise Linux 7 支持为 InfiniBand IPoIB 接口分配静态
IP 地址
。但是,由于这些接口没有普通的硬件以太网地址,因此必须使用不同的方法来为 IPoIB 接口指定唯一标识符。标准是使用选项 dhcp-client-identifier=
构造来指定 IPoIB 接口的 dhcp-client-identifier
字段。DHCP
服务器主机结构最多支持一个硬件以太网和每个主机段一个 dhcp-client-identifier
条目。但是,可能有多个固定地址条目,DHCP 服务器将自动使用适合 DHCP
请求所接收网络的地址来响应。
例 14.4. 在多个接口中使用 DHCP 的静态 IP 地址
如果机器有复杂的配置,例如每个物理接口上有两个 InfiniBand 接口和
P_Key
接口以及以太网连接,则可以使用以下静态 IP
结构来满足此配置:
Host apex.0 { option host-name “apex.example.com”; hardware ethernet 00:A0:78:8E:9E:AA; option dhcp-client-identifier=ff:00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:03:00:31:7b:11; fixed-address 172.31.0.50,172.31.2.50,172.31.1.50,172.31.3.50; } host apex.1 { option host-name “apex.example.com”; hardware ethernet 00:A0:78:8E:9E:AB; option dhcp-client-identifier=ff:00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:03:00:31:7b:12; fixed-address 172.31.0.50,172.31.2.50,172.31.1.50,172.31.3.50; }
要找到适合您的设备的
dhcp-client-identifier
,您通常可以使用 prefix ff:00:00:00:02:00:00:02:c9:00
,然后添加 IPoIB 接口的最后 8 字节(这也会是 IPoIB 接口所在的 InfiniBand 端口的 8 字节 GUID)。在一些较旧的控制器中,这个前缀不正确。在这种情况下,我们建议在 DHCP
服务器上使用 tcpdump 来捕获传入的 IPoIB DHCP
请求,并从该捕获中收集正确的 dhcp-client-identifier
。例如:
]$ tcpdump -vv -i mlx4_ib0
tcpdump: listening on mlx4_ib0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
23:42:44.131447 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok] BOOTP/DHCP, Request, length 300, htype 32, hlen 0, xid 0x975cb024, Flags [Broadcast] (0x8000)
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
Hostname Option 12, length 10: "rdma-qe-03"
Parameter-Request Option 55, length 18:
Subnet-Mask, BR, Time-Zone, Classless-Static-Route
Domain-Name, Domain-Name-Server, Hostname, YD
YS, NTP, MTU, Option 119
Default-Gateway, Classless-Static-Route, Classless-Static-Route-Microsoft, Static-Route
Option 252, NTP
Client-ID Option 61, length 20: hardware-type 255, 00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:02:00:21:ac:c1
以上转储显示 Client-ID 字段。然后,硬件类型 255
与 ID 的 initial ff:
对应,而 ID 的其余部分将完全按照需要显示在 DHCP
配置文件中进行引用。
共享同一物理网络的所有子网都应在共享网络声明中声明,如 例 14.5 “shared-network lack” 所示。shared-network 中的参数以及括起的子网声明之外的参数被视为全局参数。分配给 shared-network 的名称必须是网络的描述性标题,例如使用标题 “test-lab” 来描述测试实验环境中的所有子网。
如 例 14.6 “grouprigger” 所示,组声明用于将全局参数应用到一组声明。例如,可以对共享网络、子网和主机进行分组。
例 14.6. grouprigger
group { option routers 192.168.1.254; option subnet-mask 255.255.255.0; option domain-search "example.com"; option domain-name-servers 192.168.1.1; option time-offset -18000; # Eastern Standard Time host apex { option host-name "apex.example.com"; hardware ethernet 00:A0:78:8E:9E:AA; fixed-address 192.168.1.4; } host raleigh { option host-name "raleigh.example.com"; hardware ethernet 00:A1:DD:74:C3:F2; fixed-address 192.168.1.6; } }
注意
您可以将提供的示例配置文件用作起点,并在该文件中添加自定义配置选项。要将此文件复制到正确的位置,以
root
用户身份运行以下命令:
~]# cp /usr/share/doc/dhcp-version_number/dhcpd.conf.example /etc/dhcp/dhcpd.conf
... 其中 version_number 是
DHCP
版本号。
有关选项语句的完整列表及其作用,请参阅
dhcp-options(5)
man page。