在cisco网络环境下,boot request在经过了启用DHCP SNOOPING特性的设备上时,会在DHCP数据包中插入option 82的选项(具体见RFC3046)
这个时候,boot request中数据包中的gateway ip address:为全0,所以一旦dhcp relay 设备检测到这样的数据包,就会丢弃。
虽然dhcp snooping是用来防止非法的dhcp server接入的,但是它一个重要作用是一旦客户端获得一个合法的dhcp offer。启用dhcp snooping设备会在相应的接口下面记录所获得IP地址和客户端的mac地址。这个是后面另外一个技术ARP inspection检测的一个依据。ARP inspection是用来检测arp请求的,防止非法的ARP请求。认为是否合法的标准的是前面dhcp snooping时建立的那张表。因为那种表是dhcp server正常回应时建立起来的,里面包括是正确的arp信息。如果这个时候有arp***信息,利用ARP inspection技术就可以拦截到这个非法的arp数据包。
其实利用这个方法,还可以防止用户任意修改IP地址,造成地址冲突的问题。

!
ip dhcp excluded-address 10.63.150.100 10.63.150.120  不由dhcp分配的地址
!
ip dhcp pool main    定义地址池
   network 10.63.144.0 255.255.255.0     定义地址池做用的网段及地址范围
   default-router 10.63.144.1    定义客户端的默认网关
   domain-name nbyzzj.cn      定义客户端所在域
   dns-server 10.60.12.11      定义客户端的dns
   lease 7    定义地址租约时间为7天
ip dhcp snooping    打开dhcp snooping功能
ip dhcp snooping vlan 10-12,101-108,315   定义snooping作用的vlan
ip dhcp snooping database flash:dhcp-snooping.db    将绑定表保存在flash中,避免重启设备后,重新绑定

ip arp inspection vlan 10-12,101-108,315  定义arp inspection 作用的vlan,它是根据dhcp snooping binding表做判断的
ip arp inspection validate src-mac dst-mac ip   侦测有效客户端须满足src-mac dst-mac ip 均无错
ip arp inspection log-buffer entries 1024    inspection 日志大小
ip arp inspection log-buffer logs 1024 interval 300   inspection 日志刷新时间,interval太小会占用大量cpu时间
!
!
!
errdisable recovery cause udld
errdisable recovery cause bpduguard
errdisable recovery cause security-violation
errdisable recovery cause channel-misconfig
errdisable recovery cause pagp-flap
errdisable recovery cause dtp-flap
errdisable recovery cause link-flap
errdisable recovery cause gbic-invalid
errdisable recovery cause l2ptguard
errdisable recovery cause psecure-violation
errdisable recovery cause dhcp-rate-limit
errdisable recovery cause unicast-flood
errdisable recovery cause vmps
errdisable recovery cause arp-inspection
errdisable recovery interval 30
在开始应用Dynamic ARP Inspection时,交换机会记录大量的数据包,当端口通过的数据包过多时,交换机会认为遭受DoS***,从而将端口自动errdisable,造成通信中断。为了解决这个问题,我们需要加入命令errdisable recovery cause arp-inspection

no file verify auto
logging on    当logging关闭时会占用大量cpu资源,一定勿忘打开
no spanning-tree loopguard default    最好不要打开
ip source binding 0004.76f6.e3e9 vlan 315 10.63.150.100 interface Gi1/0/11    手动增加静态地址的条目
!
interface GigabitEthernet1/0/11
 switchport trunk encapsulation dot1q
 switchport mode trunk
 ip arp inspection limit none
 arp timeout 2
 ip dhcp snooping limit rate 100
 
由于下连设备,为了避免inspection让端口errdisable,所以对arp的侦测不做限制,若直接为接入设备, 可使用ip arp inspection limit rate 100
 
 
相关命令:
sh logging     查看Dymatic Arp Inspection (DAI) 是否生效.
sh ip dhcp snooping binding     查看snooping是否生效
sh ip dhcp binding     看dhcp server 是否生效.
sh arp     看arp信息是否与 dhcp snooping binding表一致
 
下级设备若支持dhcp snooping 可这样配置:
ip dhcp snooping
int g0/1    上行端口
switchport trunk encapsulation dot1q
switchport mode trunk
ip dhcp snooping trust    定义此端口为信任端口,从此口来的dhcp server数据有效,可阻止其它dhcp server发送dhcp数据。
 
 
经实验,对于已存在于绑定表中的mac和ip对于关系的主机,不管是dhcp获得,还是静态指定,只要符合这个表就可以了。如果表中没有就阻塞相应流量。

如果使用了dhcp中继服务,那需要在网关交换机上键入如下命令:
方法一:
  inter vlan10
   ip dhcp relay information trusted
方法二:
  switch(config)# ip dhcp relay information trust-all

 

通过日志发现手配IP恶意冲突MAC:

(实验IP:172.16.11.200,网关:172.16.9.254)

sh log | in 172.16.11.200  <-----反映IP 冲突的 IP。

 

3172099: Jun  4 15:42:26: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Gi3/10, vlan 6.([74e5.0bc0.6cd4/0.0.0.0/0000.0000.0000/172.16.11.200/15:42:26 GMT Mon Jun 4 2012])

 

3172100: Jun  4 15:42:27: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Gi3/10, vlan 6.([74e5.0bc0.6cd4/172.16.11.200/0000.0000.0000/172.16.9.254/15:42:27 GMT Mon Jun 4 2012])

 


74e5.0bc0.6cd4 此MAC手动配置IP:172.16.11.200,通过核心禁止此MAC接入网络。