2.2. 配置 DHCP 转发

您可以在连接到您要转发请求的远程网络片段的交换机、路由器或服务器中运行 DHCP 转发服务。

注意

不要在 undercloud 上运行 DHCP 转发服务。

undercloud 在 provisioning 网络中使用两个 DHCP 服务器:

  • 内省 DHCP 服务器。
  • 置备 DHCP 服务器。

您必须配置 DHCP 转发,以将 DHCP 请求转发到 undercloud 上的两个 DHCP 服务器。

您可以将 UDP 广播与支持它的设备使用,将 DHCP 请求中继到 undercloud 置备网络连接的 L2 网络段。另外,您可以使用 UDP 单播,将 DHCP 请求中继到特定的 IP 地址。

注意

在特定设备类型上配置 DHCP 转发超出了本文档的范围。作为参考,此文档使用 ISC DHCP 软件中的实施提供 DHCP 转发配置示例。如需更多信息,请参阅 man page dhcrelay(8)。

重要

某些转发(特别是转发为 DHCPv6 地址)需要 DHCP 选项 79,并且转发不会通过原始 MAC 地址。如需更多信息,请参阅 RFC6939

广播 DHCP 转发

此方法使用 UDP 广播流量将 DHCP 请求中继到 DHCP 服务器或服务器所在的 L2 网络段中。网络片段中的所有设备都会接收广播流量。使用 UDP 广播时,undercloud 上的两个 DHCP 服务器都会接收中继的 DHCP 请求。根据实现,您可以通过指定接口或 IP 网络地址来配置:

Interface
指定连接到转发 DHCP 请求的 L2 网络片段的接口。
IP 网络地址
指定转发 DHCP 请求的 IP 网络的网络地址。

单播 DHCP 转发

此方法使用 UDP 单播流量转发 DHCP 请求到特定的 DHCP 服务器。当使用 UDP 单播时,您需要配置一个设备,这个设备为转发 DHCP 请求进行转发到在 undercloud 中进行内省的接口所分配的 IP地址,以及 OpenStack Networking (neutron) 服务创建用于为 ctlplane 网络托管 DHCP 服务的网络命名空间的 IP 地址。

用于内省的接口是 undercloud.conf 文件中的 inspection_interface 定义的接口。如果没有设置此参数,undercloud 的默认接口是 br-ctlplane

注意

通常,将 br-ctlplane 接口用于内省。您在 undercloud.conf 文件中定义为 local_ip 的 IP 地址位于 br-ctlplane 接口上。

分配给 Neutron DHCP 命名空间的 IP 地址是您在 undercloud.conf 文件中为 local_subnet 配置的第一个地址。IP 范围中的第一个地址是您作为 dhcp_start 定义的地址。例如,如果您使用以下配置,192.168.10.10 是 IP 地址:

[DEFAULT]
local_subnet = leaf0
subnets = leaf0,leaf1,leaf2

[leaf0]
cidr = 192.168.10.0/24
dhcp_start = 192.168.10.10
dhcp_end = 192.168.10.90
inspection_iprange = 192.168.10.100,192.168.10.190
gateway = 192.168.10.1
masquerade = False
警告

DHCP 命名空间的 IP 地址会被自动分配。在大多数情况下,这个地址是 IP 范围中的第一个地址。要验证这种情况,请在 undercloud 上运行以下命令:

$ openstack port list --device-owner network:dhcp -c "Fixed IP Addresses"
+----------------------------------------------------------------------------+
| Fixed IP Addresses                                                         |
+----------------------------------------------------------------------------+
| ip_address='192.168.10.10', subnet_id='7526fbe3-f52a-4b39-a828-ec59f4ed12b2' |
+----------------------------------------------------------------------------+
$ openstack subnet show 7526fbe3-f52a-4b39-a828-ec59f4ed12b2 -c name
+-------+--------+
| Field | Value  |
+-------+--------+
| name  | leaf0  |
+-------+--------+

dhcrelay 配置示例

在以下示例中,dhcp 软件包中的 dhcrelay 命令使用以下配置:

  • 用于转发传入 DHCP 请求的接口: eth1eth2eth3
  • 在网络段中接口 undercloud DHCP 服务器已连接到: eth0
  • 用于内省的 DHCP 服务器正在侦听 IP 地址:192.168 .10.1
  • 用于置备的 DHCP 服务器在 IP 地址 192.168.10.10 上侦听。

这会生成以下 dhcrelay 命令:

  • dhcrelay 版本 4.2.x:

    $ sudo dhcrelay -d --no-pid 192.168.10.10 192.168.10.1 \
      -i eth0 -i eth1 -i eth2 -i eth3
  • dhcrelay 版本 4.3.x 及更新的版本:

    $ sudo dhcrelay -d --no-pid 192.168.10.10 192.168.10.1 \
      -iu eth0 -id eth1 -id eth2 -id eth3

Cisco IOS 路由交换机配置示例

本例使用以下 Cisco IOS 配置来执行以下任务:

  • 配置用于 provisioning 网络的 VLAN。
  • 添加 leaf 的 IP 地址。
  • 将 UDP 和 BOOTP 请求转发到侦听 IP 地址的内省 DHCP 服务器:192.168.10.1
  • 将 UDP 和 BOOTP 请求转发到侦听 IP 地址 192.168.10.10 的置备 DHCP 服务器。
interface vlan 2
ip address 192.168.24.254 255.255.255.0
ip helper-address 192.168.10.1
ip helper-address 192.168.10.10
!

现在您已经配置了 provisioning 网络,您可以配置剩余的 overcloud leaf 网络。