如何为DHCP开放安全策略
DHCP组网中有三种角色:DHCP Client、DHCP Server和DHCP Relay。当DHCP Client和DHCP Server位于不同网段时,需要部署DHCP Relay。在不同的组网场景中,DHCP报文交互的流程略有不同,下面分别来看。
同网段无DHCP Relay场景
在同网段无DHCP Relay场景中,DHCP报文交互过程如图8-1所示。
DHCP报文采用UDP封装。以DHCP Client首次接入网络为例,其IP地址分配流程如下。
- DHCP Discover。DHCP Client以广播方式发送DHCP Discover报文,源目的地址分别为0.0.0.0和255.255.255.255,源目的端口分别为67和68。DHCP Client首次接入网络时,还没有获得过IP地址,也不知道DHCP Servcer的地址,因此只能采用广播方式。在DHCP Discover报文中有一个Flags标志位,决定服务端以单播或广播方式发送响应报文,一般是单播方式(Broadcast Flag=0)。
- DHCP Offer。DHCP Server收到DHCP Discover报文后,选择一个可用地址,通过DHCP Offer单播报文发送给DHCP Client。此时报文中封装的目的IP地址是DHCP Server提议分配给DHCP Client的IP地址。
- DHCP Request。DHCP Client仍然以广播方式发送DHCP Request报文,向选中的DHCP Server请求使用的IP地址。报文中带有其选择的DHCP Server标识符。当网络中有多个DHCP Server时,广播DHCP Request可以通知所有DHCP Server,未被选中的DHCP Server也就可以更新提议的IP地址状态了。
- DHCP Ack。DHCP Server通过DHCP Ack单播报文通知DHCP Client,确认地址分配。
如果DHCP Client非首次接入网络,可以申请曾经使用过的IP地址,则地址分配过程只有DHCP Request和DHCP Ack两个阶段。DHCP Request报文的源地址为当前IP地址。
当租期更新定时器到期时(租期的50%,即1800s),DHCP Client向DHCP Server发送单播报文,申请更新租期。如果DHCP Client不再使用当前地址,则发送DHCP Release单播报文,释放该IP地址。
在这个场景中,DHCP Server和DHCP Client都可能会主动发送单播报文。防火墙作为DHCP Server时,安全策略配置示例如表8-2所示。
不同网段带DHCP Relay场景
DHCP Client的广播报文不能穿越不同网段。当网络中有多个网段时,通常使用DHCP Relay来解决这个问题,其报文交互过程如图8-2所示。
在地址分配阶段,DHCP Client广播DHCP Discover和DHCP Request请求。DHCP Relay接收到报文以后,修改报文的源目的地址为出接口地址和DHCP Server的地址,并填充中继地址,然后单播转发给DHCP Server。DHCP Server向DHCP Relay单播发送DHCP Offer和DHCP Ack报文。DHCP Relay与DHCP Server通信时,源目的都使用UDP 67端口。
DHCP Client在地址分配阶段已经获得DHCP Server的地址。在后续的租期更新和地址释放过程中,DHCP Client以单播报文直接向DHCP Server发起连接,不需要DHCP Relay代理。
序号 |
名称 |
源安全区域 |
目的安全区域 |
源地址/地区 |
目的地址/地区 |
服务 |
动作 |
---|---|---|---|---|---|---|---|
101 |
Allow Firewall to DHCP Server |
local |
untrust |
100.1.1.10/24 |
100.1.1.1/24 |
bootps (UDP: 67) |
permit |
102 |
Allow DHCP Client to DHCP Server |
trust |
untrust |
10.1.1.0/24 |
100.1.1.1/24 |
bootps (UDP: 67) |
permit |
103 |
Allow Firewall to DHCP Client |
local |
trust |
10.1.1.1/24 |
10.1.1.0/24 |
bootpc (UDP: 68) |
permit |
DHCPv6
DHCPv6与DHCP一样,所有协议报文都是基于UDP的,其报文发送方式如表8-4所示。DHCPv6 Client使用UDP 546端口,DHCPv6 Server和DHCPv6 Relay都使用UDP 547端口。
报文类型 |
DHCPv6报文 |
发送方 |
发送方式 |
接收方 |
说明 |
---|---|---|---|---|---|
1 |
Solicit |
DHCPv6客户端 |
组播 |
所有DHCPv6服务器和中继代理(FF02::1:2) |
DHCPv6客户端向所有DHCPv6服务器和中继代理发送Solicit报文来确定DHCPv6服务器的位置。 |
2 |
Advertise |
DHCPv6服务器 DHCPv6中继 |
单播 |
DHCPv6客户端 |
DHCPv6服务器发送Advertise报文来对Solicit报文进行回应,宣告自己能够提供DHCPv6服务。在DHCPv6中继场景中,DHCPv6中继在收到DHCPv6服务器的Relay-Reply报文后,也会向DHCPv6客户端发送Advertise报文。 |
3 |
Request |
DHCPv6客户端 |
组播 |
所有DHCPv6服务器和中继代理(FF02::1:2) |
DHCPv6客户端发送Request报文来向DHCPv6服务器请求IPv6地址和其它配置信息。 |
单播 |
指定DHCPv6服务器 |
仅当DHCPv6服务器配置了Server Unicast选项时,才允许发送单播报文。 |
|||
4 |
Confirm |
DHCPv6客户端 |
组播 |
所有DHCPv6服务器和中继代理(FF02::1:2) |
DHCPv6客户端向所有DHCPv6服务器发送Confirm报文,检查自己目前获得的IPv6地址是否适用与它所连接的链路。 |
5 |
Renew |
DHCPv6客户端 |
组播 |
指定DHCPv6服务器 |
DHCPv6客户端向给其提供地址和配置信息的DHCPv6服务器发送Renew报文,延长地址的生存期并更新配置信息。 |
单播 |
指定DHCPv6服务器 |
仅当DHCPv6服务器配置了Server Unicast选项时,才允许发送单播报文。 |
|||
6 |
Rebind |
DHCPv6客户端 |
组播 |
所有DHCPv6服务器和中继代理(FF02::1:2) |
如果Renew报文没有得到应答,DHCPv6客户端向所有DHCPv6服务器发送Rebind报文,延长地址的生存期并更新配置信息。 |
7 |
Reply |
DHCPv6服务器 DHCPv6中继 |
单播 |
DHCPv6客户端 |
DHCPv6服务器回应从DHCPv6客户端收到的Solicit、Confirm、Request、Rebind、Information-Request、Renew、Release、Decline等单播或组播报文。 在DHCPv6中继场景中,DHCPv6中继在收到DHCPv6服务器的Relay-Reply报文后,也会向DHCPv6客户端发送Reply报文。 |
8 |
Release |
DHCPv6客户端 |
组播 |
指定DHCPv6服务器 |
DHCPv6客户端向为其分配地址的DHCPv6服务器发送Release报文,表明自己不再使用一个或多个获取的地址。 |
单播 |
指定DHCPv6服务器 |
仅当DHCPv6服务器配置了Server Unicast选项时,才允许发送单播报文。 |
|||
9 |
Decline |
DHCPv6客户端 |
组播 |
指定DHCPv6服务器 |
DHCPv6客户端向DHCPv6服务器发送Decline报文,声明DHCPv6服务器分配的一个或多个地址在DHCPv6客户端所在链路上已经被使用了。 |
单播 |
指定DHCPv6服务器 |
仅当DHCPv6服务器配置了Server Unicast选项时,才允许发送单播报文。 |
|||
10 |
Reconfigure |
DHCPv6服务器 |
单播 |
DHCPv6客户端 |
DHCPv6服务器向DHCPv6客户端发送Reconfigure报文,用于提示DHCPv6客户端,在DHCPv6服务器上存在新的网络配置信息。 |
11 |
Information-Request |
DHCPv6客户端 |
组播 |
所有DHCPv6服务器和中继代理(FF02::1:2) |
DHCPv6客户端向所有DHCPv6服务器发送Information-Request报文来请求除IPv6地址以外的网络配置信息。 |
单播 |
指定DHCPv6服务器 |
仅当DHCPv6服务器配置了Server Unicast选项时,才允许发送单播报文。 |
|||
12 |
Relay-Forward |
DHCPv6中继 |
单播 |
指定DHCPv6服务器 |
DHCPv6中继通过Relay-Forward报文来向DHCPv6服务器转发DHCPv6客户端的请求报文。 |
组播 |
所有DHCPv6服务器(FF05::1:3) |
仅当DHCPv6 Relay上未指定DHCPv6 Server时,才可能发送组播报文。 |
|||
13 |
Relay-Reply |
DHCPv6服务器 |
单播 |
DHCPv6中继 |
DHCPv6服务器向中继代理发送Relay-Reply报文,其中携带了转发给DHCPv6客户端的报文。 |
通常情况下,DHCPv6 Client使用组播方式发送报文,DHCPv6 Server使用单播报文回应。因此,只需要开放从DHCPv6 Server到DHCPv6 Client方向的安全策略即可。特殊情况下,当DHCPv6 Server配置了Server Unicast Option时,DHCPv6 Client可以采用单播方式发起Request、Renew、Inform-Request、Release和Decline报文。此时,需要额外配置反向安全策略。
在DHCPv6 Relay场景中,DHCPv6 Relay通常应配置了一个或多个DHCPv6 Server的地址。DHCPv6 Relay采用单播方式发送报文给DHCPv6 Server,DHCPv6 Server始终使用单播报文回应。此时,需要开放从DHCPv6 Relay到DHCPv6 Client和DHCPv6 Server的安全策略。