3.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 转发配置示例。如需更多信息,请参阅手册页 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.1
680.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 配置来执行以下任务:
- 配置 VLAN 以用于 provisioning 网络。
- 添加叶的 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 网络。