DHCP监听的作用
我们知道,安全是网络中最为关键的一个环节。在DHCP中,DHCP监听就起到了安全作用。那么什么是DHCP监听呢?如何设置这个监听以及相关的配置和操作又需要注意一下什么呢?
DHCP监听:
通过DHCP监听,交换机能限制终端用户端口(非信任端口)只能够发送DHCP请求,并且丢弃来自用户端口的所有其他DHCP报文,例如DHCP提供(OFFER)相应报文等。信任端口能够发送或接受所有的DHCP报文
交换机内部有一个IP源绑定表(IP Source Binding Table)作为每个端口接受到的数据包的检测标准,只有在两种情况下,交换机会转发数据:
1.所接收到的IP包满足IP源绑定表中Port/IP/MAC的对应关系
2.所接收到的是DHCP数据包
其余数据包将被交换机做丢弃处理。
1.IP源绑定表可以由用户在交换机上静态添加
2.或者由交换机从DHCP监听绑定表(DHCP Snooping Binding Table)自动学习获得。
交换机从DHCP报文中提取关键信息(包括IP地址,MAC地址,vlan号,端口号,租期等),并把这些信息保存到 DHCP 监听绑定表中。(以上这个过程是由DHCP Snooping完成的)。IP源防护只支持第2层端口,其中包括接入(access)端口和干道(trunk)接口。IP源防护的信任端口/非信任端口也就是DHCP监听的信任端口/非信任端口。对于非信任端口存在以下两种级别的IP流量安全过滤:
源IP地址过滤:默认情况下,如果端口在没有存在IP源绑定条目的情况下启用了IP源防护功能,默认的PACL将拒绝端口的所有流量(实际上是除 DHCP报文以外的所有IP流量)。配置:
SW2(config)#int g0/9
SW2(config-if)#ip verify source
源IP和源MAC地址过滤:当以IP和MAC地址作为过滤的时候,为了确保DHCP协议能够正常的工作,还必须启用DHCP监听选项82。 对于没有选项82的数据,交换机不能确定用于转发DHCP服务器响应的客户端主机端口。相反地,DHCP服务器响应将被丢弃,客户机也不能获得IP地址。
注:交换机使用端口安全(SW2(config-if)#switchport port-security)来过滤源MAC地址。
当交换机只使用“IP源地址过滤”时,IP源防护功能与端口安全功能是相互独立的关系。 端口安全是否开启对于IP源防护功能来说不是必须的。 如果同时开启,则两者也只是一种宽松的合作关系,IP源防护防止IP地址欺骗,端口安全防止MAC地址欺骗。而当交换机使用“源IP和源MAC地址过滤”时,IP源防护功能与端口安全功能是就变成了一种“集成”关系,更确切的说是端口安全功能被集成到 IP源防护功能里,作为IP源防护的一个必须的组成部分。在这种模式下,端口安全的违规处理(violation)功能将被关闭。对于非法的二层报文,都将只是被简单的丢弃,而不会再执行端口安全的违规处理了。IP源防护功能不能防止客户端PC的ARP攻击。ARP攻击问题必须由DAI功能来解决。如果要支持IP源防护功能,必须是35系列及以上的交换机。2960目前不支持该功能。
Switch#show ip dhcp snooping binding
Switch#show ip source binding
Switch#show ip verify source
ip dhcp snooping information option allow-untrusted
IP源防护只针对非信任端口起作用,对信任端口不起作用。所以不需要为接在信任端口上的主机添加静态IP源绑定,其依然可以正常通信。IP源绑定能阻止非信任端口上的客户端以静态指定IP地址的方式接入网络。 这些客户端将无法通信,除非为其手工添加静态IP源绑定条目。
说明:本例中采用“源IP和源MAC地址过滤”模式,采用该模式需要注意以下三点:
(1)交换机必须对客户端的DHCP请求插入选项82信息,即必须配置ip dhcp snooping information option命令(默认即为开启)。对于没有插入选项82的DHCP请求,交换机不能确定用于转发DHCP服务器响应的客户端主机端口。相反地,DHCP服务器响应将被丢弃,客户机也不能获得IP地址。DHCP回复包因为找不到目标端口而被交换机丢弃了。
(2)所使用的DHCP服务器必须支持利用DHCP选项82分配IP地址的功能,否则客户端将无法获得IP地址(debug信息类似第(1)项所述)。像Win2003,Cisco IOS 12.2等作为DHCP服务器时都不支持利用DHCP选项82来分配IP地址。本例中如果采用12.2版本的IOS,将出现客户端无法获得IP地址的情况。Cisco IOS从版本12.3(4)T 开始支持利用选项82分配IP地址。 最简单的方法,看IOS是否支持命令ip dhcp use class。