DHCP Snooping的基本原理
DHCP Snooping分为DHCPv4 Snooping和DHCPv6 Snooping,两者实现原理相似,以下以DHCPv4 Snooping为例进行描述。
使能了DHCP Snooping的设备将用户(DHCP客户端)的DHCP请求报文通过信任接口发送给合法的DHCP服务器。之后设备根据DHCP服务器回应的DHCP ACK报文信息生成DHCP Snooping绑定表。后续设备再从使能了DHCP Snooping的接口接收用户发来的DHCP报文时,会进行匹配检查,能够有效防范非法用户的攻击。
DHCP Snooping信任功能
DHCP Snooping的信任功能,能够保证客户端从合法的服务器获取IP(Internet Protocol)地址。
如图1所示,网络中如果存在私自架设的DHCP Server仿冒者,则可能导致DHCP客户端获取错误的IP地址和网络配置参数,无法正常通信。DHCP Snooping信任功能可以控制DHCP服务器应答报文的来源,以防止网络中可能存在的DHCP Server仿冒者为DHCP客户端分配IP地址及其他配置信息。
DHCP Snooping信任功能将接口分为信任接口和非信任接口:
- 信任接口正常接收DHCP服务器响应的DHCP ACK、DHCP NAK和DHCP Offer报文。
- 非信任接口在接收到DHCP服务器响应的DHCP ACK、DHCP NAK和DHCP Offer报文后,丢弃该报文。
- 配置dhcp snooping enable命令的接口,收到DHCP请求报文后,转发给所有的信任接口;收到DHCP响应报文后丢弃。
- 配置dhcp snooping trusted命令的接口,收到DHCP请求报文后,转发给所有的信任接口,如果没有其他信任接口,则丢弃该DHCP请求报文;收到DHCP响应报文后,只转发给连接对应客户端的并且配置命令dhcp snooping enable的接口,如果查不到上述接口,则丢弃该DHCP响应报文。
在二层网络接入设备使能DHCP Snooping场景中,一般将与合法DHCP服务器直接或间接连接的接口设置为信任接口(如图1中的if1接口),其他接口设置为非信任接口(如图1中的if2接口),使DHCP客户端的DHCP请求报文仅能从信任接口转发出去,从而保证DHCP客户端只能从合法的DHCP服务器获取IP地址,私自架设的DHCP Server仿冒者无法为DHCP客户端分配IP地址。
DHCP Snooping绑定表
如图2所示的DHCP场景中,连接在二层接入设备上的PC配置为自动获取IP地址。PC作为DHCP客户端通过广播形式发送DHCP请求报文,使能了DHCP Snooping功能的二层接入设备将其通过信任接口转发给DHCP服务器。最后DHCP服务器将含有IP地址信息的DHCP ACK报文通过单播的方式发送给PC。在这个过程中,二层接入设备收到DHCP ACK报文后,会从该报文中提取关键信息(包括PC的MAC地址以及获取到的IP地址、地址租期),并获取与PC连接的使能了DHCP Snooping功能的接口信息(包括接口编号及该接口所属的VLAN),根据这些信息生成DHCP Snooping绑定表。以PC1为例,图2中二层接入设备会从DHCP ACK报文提取到IP地址信息为192.168.1.253,MAC地址信息为MACA。再获取与PC连接的接口信息为if3,根据这些信息生成一条DHCP Snooping绑定表项。
DHCP Snooping绑定表根据DHCP租期进行老化或根据用户释放IP地址时发出的DHCP Release报文自动删除对应表项。
由于DHCP Snooping绑定表记录了DHCP客户端IP地址与MAC地址等参数的对应关系,故通过对报文与DHCP Snooping绑定表进行匹配检查,能够有效防范非法用户的攻击。
为了保证设备在生成DHCP Snooping绑定表时能够获取到用户MAC等参数,DHCP Snooping功能需应用于二层网络中的接入设备或第一个DHCP Relay上。
在DHCP中继使能DHCP Snooping场景中,DHCP Relay设备不需要设置信任接口。因为DHCP Relay收到DHCP请求报文后进行源目的IP、MAC转换处理,然后以单播形式发送给指定的合法DHCP服务器,所以DHCP Relay收到的DHCP ACK报文都是合法的,生成的DHCP Snooping绑定表也是正确的。
DHCP Snooping支持的Option82功能
概述
在传统的DHCP动态分配IP地址过程中,DHCP Server不能够根据DHCP请求报文感知到用户的具体物理位置,以致同一VLAN的用户得到的IP地址所拥有的权限是完全相同的。由于网络管理者不能对同一VLAN中特定的用户进行有效的控制,即不能够控制客户端对网络资源的访问,这将给网络的安全控制提出了严峻的挑战。
RFC 3046定义了DHCP Relay Agent Information Option(Option 82),该选项记录了DHCP Client的位置信息。DHCP Snooping设备或DHCP Relay通过在DHCP请求报文中添加Option82选项,将DHCP Client的精确物理位置信息传递给DHCP Server,从而使得DHCP Server能够为主机分配合适的IP地址和其他配置信息,实现对客户端的安全控制。
Option82包含两个常用子选项Circuit ID和Remote ID。其中Circuit ID子选项主要用来标识客户端所在的VLAN、接口等信息,Remote ID子选项主要用来标识客户端接入的设备,一般为设备的MAC地址。
设备作为DHCP Relay时,使能或未使能DHCP Snooping功能都可支持Option82选项功能,但若设备在二层网络作为接入设备,则必须使能DHCP Snooping功能方可支持Option82功能。
Option82选项仅记录了DHCP用户的精确物理位置信息并通过DHCP请求报文中将该信息发送给DHCP Server。而如果需要对不同的用户部署不同的地址分配或安全策略,则需DHCP Server支持Option82功能并在其上已配置了IP地址分配或安全策略。
Option82选项携带的用户位置信息与DHCP Snooping绑定表记录的用户参数是两个相互独立的概念,没有任何关联。Option82选项携带的用户位置信息是在DHCP用户申请IP地址时(此时用户还未分配到IP地址),由设备添加到DHCP请求报文中。DHCP Snooping绑定表是在设备收到DHCP Server回应的DHCP Ack报文时(此时已为用户分配了IP地址),设备根据DHCP Ack报文信息自动生成。
实现
设备作为DHCP Relay或设备在二层网络作为接入设备并使能DHCP Snooping功能时均可支持Option82功能。使能设备的Option82功能有Insert和Rebuild两种方式,使能方式不同设备对DHCP请求报文的处理也不同。
-
Insert方式:当设备收到DHCP请求报文时,若该报文中没有Option82选项,则插入Option82选项;若该报文中含有Option82选项,则判断Option82选项中是否包含remote-id,如果包含,则保持Option82选项不变,如果不包含,则插入remote-id。
-
Rebuild方式:当设备收到DHCP请求报文时,若该报文中没有Option82选项,则插入Option82选项;若该报文中含有Option82选项,则删除该Option82选项并插入管理员自己在设备上配置的Option82选项。
对于Insert和Rebuild两种方式,当设备接收到DHCP服务器的响应报文时,处理方式一致。
- DHCP响应报文中有Option82选项:
- 如果设备收到的DHCP请求报文中没有Option82选项,则设备将删除DHCP响应报文中的Option82选项,之后转发给DHCP Client。
- 如果设备收到的DHCP请求报文中有Option82选项,则设备将DHCP响应报文中的Option82选项格式还原为DHCP请求报文中的Option82选项,之后转发给DHCP Client。
- DHCP响应报文不含有Option82选项:直接转发。