试验拓扑
环境:dhcp server和dhcp客户端属于同vlan,但是客户端属于不同的交换机,在L2和L3交换机开启dhcp snooping后得出如下结论
L3交换机的配置
ip dhcp pool vlan27 network 172.28.27.0 255.255.255.0 default-router 172.28.27.254 dns-server 172.28.28.15 ! ! ip dhcp snooping vlan 27
ip dhcp snooping information option allow-untrusted //必须加此命令,因为L3交换机也开启了dhcp snooping,具体解释如下
ip dhcp snooping
interface GigabitEthernet0/0
switchport trunk encapsulation dot1q
switchport mode trunk
media-type rj45
speed 1000
duplex full
no negotiation auto
ip dhcp snooping limit rate 720
L2交换机配置
ip dhcp snooping vlan 27 ip dhcp snooping ! interface GigabitEthernet0/0 switchport trunk encapsulation dot1q switchport mode trunk media-type rj45 speed 1000 duplex full no negotiation auto ip dhcp snooping trust
说明:
1、从L2交换机过来的DHCP请求报文是已经被插入了选项82信息,如果将L3的Gi0/0设置为信任端口,那么插入了82选项的DHCP请求报文是允许通过的,但不会为其建立DHCP监听绑定表。即L3上只有win10的绑定条目,而没
有win11的绑定条目。如果此时同时部署DAI,IPSG,由于L2交换机不支持这两项功能,对于L3交换机来说,从L2交换机上过来的数据可能存在IP欺骗和ARP欺骗等攻击,是不安全的。另一方面,由于L3交换机没有PC2的绑定
条目,而DAI和IPSG必须依赖DHCP监听绑定表。因此如果需要在L3交换机上再部署DAI或者IPSG,就不能将L3交换机的Gi0/0设置为信任端口。但是将Gi0/0口设置为非信任端口以后,默认情况下,非信任端口将会丢弃收到的插
入了82选项的DHCP请求报文。而从L2交换机过来的DHCP请求报文又正好是被插入了选项82信息的。因此必须配置ip dhcp snooping information option allow-untrusted(全局)命令,否则L3交换机将丢弃这些DHCP请求
报文,接在L2交换机上的win11将得不到IP地址。只有配置了该命令以后,L3交换机才会接收从L2交换机发送的插入了选项82的DHCP报文,并为这些信息建立绑定条目。
当然上面如果遇到交换机不支持ip dhcp snooping information option allow-untrusted命令可以有以下两种解决办法:
①在不支持的交换机的int vlan 内使用 ip dhcp relay information trusted(vlan内) 命令
②在接入层交换机上面关闭插入option82的功能 no ip dhcp snooping information option
2、由于思科交换机在开启dhcp snooping后默认会打开 ip dhcp snooping limit rate 15 功能,上述试验里面 L2交换机如果接满了客户端,但是L3连接L2的接口是非信任接口就存在limit rate 15的功能,同理L2的每个非信任接口
都是如此,想象一种场景,某时刻48个客户端 同时发起dhcp request请求报文,由于L3的下行口默认是限速15个包,这样将导致大部分客户端的dhcp request报文被丢弃,所以为了避免此情况应该在L3的下行接口适当调整
limit rate速度,计算如下:
假设2960为48口,因此简单的设置限速为48*15=720
注意:只有当启用了dhcp snooping的汇聚交换机或者核心才需要设置 ip dhcp snooping limit rate。如果一个核心或者汇聚交换机下面的接入层交换机众多,那么这个限速设置就需要注意了,因为端口最大的limit rate是2048,所以
需要调整接入层端口的limit rate,使其变小 但是需要调整为一个合理的数值,因为太小了会导致IP地址获取慢
延伸:
当不开启L3交换机的ip dhcp snooping information option allow-untrusted时,在L3上面使用debug抓ip dhcp snoong信息会看到不断有来自L2的报文被丢弃,因为报文携带giaddr字段并且是非法的
L3#debug ip dhcp snooping event DHCP Snooping Event debugging is on *May 25 11:05:44.102: %DHCP_SNOOPING-5-DHCP_SNOOPING_NONZERO_GIADDR: DHCP_SNOOPING drop message with non-zero giaddr or option82 value on untrusted port, message type: DHCPDISCOVER, MAC sa: 5000.000b.0000