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;

}

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;

}

Copy to Clipboard

Copied!

Toggle word wrap

Toggle overflow

要配置将动态 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;

}

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;

}

Copy to Clipboard

Copied!

Toggle word wrap

Toggle overflow

要根据网络接口卡的 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;

}

host apex {

option host-name "apex.example.com";

hardware ethernet 00:A0:78:8E:9E:AA;

fixed-address 192.168.1.4;

}

Copy to Clipboard

Copied!

Toggle word wrap

Toggle overflow

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;

}

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;

}

Copy to Clipboard

Copied!

Toggle word wrap

Toggle overflow

要找到适合您的设备的 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 -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

Copy to Clipboard

Copied!

Toggle word wrap

Toggle overflow

以上转储显示 Client-ID 字段。然后,硬件类型 255 与 ID 的 initial ff: 对应,而 ID 的其余部分将完全按照需要显示在 DHCP 配置文件中进行引用。

共享同一物理网络的所有子网都应在共享网络声明中声明,如 例 14.5 “shared-network lack” 所示。shared-network 中的参数以及括起的子网声明之外的参数被视为全局参数。分配给 shared-network 的名称必须是网络的描述性标题,例如使用标题 “test-lab” 来描述测试实验环境中的所有子网。

例 14.5. shared-network lack

shared-network name {

option domain-search "test.redhat.com";

option domain-name-servers ns1.redhat.com, ns2.redhat.com;

option routers 192.168.0.254;

#more parameters for EXAMPLE shared-network

subnet 192.168.1.0 netmask 255.255.252.0 {

#parameters for subnet

range 192.168.1.1 192.168.1.254;

}

subnet 192.168.2.0 netmask 255.255.252.0 {

#parameters for subnet

range 192.168.2.1 192.168.2.254;

}

}

shared-network name {

option domain-search "test.redhat.com";

option domain-name-servers ns1.redhat.com, ns2.redhat.com;

option routers 192.168.0.254;

#more parameters for EXAMPLE shared-network

subnet 192.168.1.0 netmask 255.255.252.0 {

#parameters for subnet

range 192.168.1.1 192.168.1.254;

}

subnet 192.168.2.0 netmask 255.255.252.0 {

#parameters for subnet

range 192.168.2.1 192.168.2.254;

}

}

Copy to Clipboard

Copied!

Toggle word wrap

Toggle overflow

如 例 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;

}

}

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;

}

}

Copy to Clipboard

Copied!

Toggle word wrap

Toggle overflow

注意

您可以将提供的示例配置文件用作起点,并在该文件中添加自定义配置选项。要将此文件复制到正确的位置,以 root 用户身份运行以下命令:

cp /usr/share/doc/dhcp-version_number/dhcpd.conf.example /etc/dhcp/dhcpd.conf

~]# cp /usr/share/doc/dhcp-version_number/dhcpd.conf.example /etc/dhcp/dhcpd.conf

Copy to Clipboard

Copied!

Toggle word wrap

Toggle overflow

... 其中 version_number 是 DHCP 版本号。

有关选项语句的完整列表及其作用,请参阅 dhcp-options(5) man page。