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)。
对于某些转发,需要 DHCP 选项 79,特别是为 DHCPv6 地址提供服务的转发,在原始 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 范围中可用的第一个地址。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 请求的接口:
eth1
、eth2
和eth3
。 -
接口网络段上的 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 网络。