技术背景
你有没有遇到过这样的现象,在公司网络环境中,有人私接小路由,导致下发非法IP地址,而获取到非法IP地址的终端将无法正常访问网络。
是不是很气人,而且在实际当中,接路由器一般都是藏起来,你找都不好找,
那有没有一种办法,让这种小路由无法使用呢?即便是你接上了,也不让你用!!
(其实如果接对的话,是没有问题的,就怕是你接错了)
DHCP snooping 横空出世
1)什么是DHCPsnooping
DHCP snooping,是针对于dhcp(动态分配主机协议)所做的安全机制,在一个内网中我们比较常见的情况如下,一个工位上的员工,为了自己上无线方便,自己私接了一台无线路由器,而恰巧又接在了lan口上,这种小型家用路由器的内网是可以分配 DHCP的,这样一台内网有些终端就从这里获得到了IP,而这个IP是根本就没有办法上网的,所以要通过dhcp snooping来解决(确认的说应该是在出现问题之间就解决掉)不让非法的DHCP服务器在网络中活动
2)配置在哪里?
确认的说,配置在接入交换机,并将上联口配置为trust信任
3)有哪些特点
只要开启了DHCPsnooping功能,那么所有的接口默认都是不信任的
DHCP snooping的两种状态,
1 信任 :接收和转发所有DHCP包
2 不信任:接收客户端的请求包,但是不转发
实例
在此拓扑中,R1为公司的GW,负责DHCP下发IP,
而R2充当 TP-LINK,非法的DHCPserver
三层交换机做DHCP 中继,配置在这里不再多说,(如果有不明白的,可以回看DHCP HELP那一篇)
先保证全网能够正常通信,PC1能够获得公司合法的IP地址
另外两台交换机的互联接口本配置TRUNK
此时是正常的情况,PC可以获得到正确的IP地址
此时开启R2,摸拟DHCP,并配置一个非法的DHCP地址池
再用PC进行测试,这个时候,PC机就要看运气了,有的时候能够获得到正确的,有的时候获得到的就是非法的
这个时候就要开启DHCP snooping了
先到最后一台,SW4上开启
1)全局开启(config)#ip dhcp snooping
2)针对vlan(config)#ip dhcp snooping vlan 10 //记住,cisco的设备是针对于VLAN的,所以在开启的时候后面一定要加上VLAN编号
3)进入接口配置信任:(config-if)#ip dhcp snooping trust
SW4配置完成,此时如果用PC请求的话,还是有可能请求到非法的IP地址,因为TP-LINK在SW3上,所以SW3也要进行开启,
配置完了吗?
PC机请求一下发现SW3会有系统消息
直接给的drop丢弃了,
你会发现,在开启snooping之前,是没有这个消息的,为什么?
关键词 option82
用wireshark 抓包看一下
这个82选项中包含了啥?这个紫色的框框中是什么 意思?
AABBCC004000,像是一个MAC,
为什么会有它的MAC?
答:这个是客户机请求DHCP时,会携带的交换机MAC地址,用于定位用,在一个局域网中有很多交换机,当请求到达路由器在回包的时候,好知道应该给哪台交换机,
而这时,开启了DHCP snooping的设备是无法辨识82选项的,也就不允许通过。
如果不通过的话,终端就无法获得到地址了。
所以,在开启DHCPsnoopinP功能后,在dhcp包的必经之路接口上,都应该开启信任端口
所以SW3 上的两个接口也必须要开启,当然,这里要除了和TP-LINK相连的那个口
换句话说,就是我这个PC请求DHCP时,沿途的所有站点,都应该认识82选项,交换机肯定是要开启信任端口的,那路由器呢?别急
完事儿了吗?
请求一下地址?还是不行,为什么?
这里还有一点特殊,就是三层设备,图中的三层交换,
开启了snooping后,路由设备是不能识别这个包儿的,也就无法进行转发,
所以在三层设备上也要允许这个82option 的包通过(配置信任)
Sw1(config)#ip dhcp snooping relay information trust-all
最后在PC上进行测试,又可以获得真正合活的地址了
二:为防止PC中病毒随意的修改MAC地址,不断的请求IP地址,导致DHCP地址池枯竭攻击,可以在接入层交换机上配置相应机制
Sw(config)#ip dhcp snooping verify mac-address
也可以针对这种接入端口(非信任端口)做DHCP数据包请求的限制,系统默认已经开启,每S钟15个,为了安全起见,也可以改的更小一些
(配置一定要在接口下做)
Sw(config-if)#ip dhcp snooping limit rate <1-2048>
这样的话,接口如果超过规定数值的请求,就会触发惩罚措施,被置为err-disable
由于我们设置了每秒钟1个包,肯定会被干掉,(当然,我只是为了看这个效果)
同样接口也是可以配置自动恢复的
Sw(config)#errdisable recovery cause dhcp-rate-limit
Sw(config)#errdisable recovery interval 30
Sw#show errdisable recovery
关于自动恢复这件事儿,不再赘述,
-------------------------------------------------------
CCIE成长之路-----梅利