我在20108月的时候,在陕西某化工集团做了一个园区网的项目,记得当时整个园区的大的架构做完以后,甲方要求,宿舍楼的网络要求做出更改,由原来的静态的分配ip地址变更为DHCP自动获取。
其实此次变更还是蛮顺利的,在将核心交换机上配置了DHCP的服务之后,3栋公寓楼的vlan101-106总共6vlan,大部分计算机都可以正常获取到ip地址正常上网了,在vlan101中,计算机数量并不多,该vlan提供的dhcp pool 10.20.101.0,正常情况下,该vlan的所有计算机,获取到的ip地址应该是10.20.101.x地址。有用户反映说,计算机获取到地址,但是不能上网。
当时我很纳闷,把自己的笔记本电脑,接入到属于vlan101的接口上,看到获取到的地址后,我乐了,我获取到了192.168.1.101ip地址,一开始我还考虑过,应该使用sniffer抓包工具,抓取下,是谁在发送DHCP的报文,影响到了交换机的dhcp的服务,后来打消了这个念头。很显然,不用测试,只去看192.168.1.101这个ip地址,就不难想到,这个地址是平常我们家用的soho的路由器提供的地址,可能是某个宿舍的哥们儿,因为宿舍信息口不够用,自己私自接了个小路由器,当交换机用,他哪里知道,影响了整个vlanDHCP的服务。
如图:
懒得去管到底是哪个宿舍的兄弟影响了网络的dhcp的正常服务。
配置DHCP Snooping
DHCP监听(DHCP Snooping)是一种DHCP安全特性。Cisco交换机支持在每个VLAN基础上启用DHCP监听特性。通过这种特性,交换机能够拦截第二层VLAN域内的所有DHCP报文。
    DHCP
监听将交换机端口划分为两类:
非信任端口:通常为连接终端设备的端口,如PC,网络打印机等
    ●
信任端口:连接合法DHCP服务器的端口或者连接汇聚交换机的上行端口
    
通过开启DHCP监听特性,交换机限制用户端口(非信任端口)只能够发送DHCP请求,丢弃来自用户端口的所有其它DHCP报文,
 我对接入交换机进行了如下配置:
Switch(config)#ip dhcp snooping                  //打开DHCP Snooping功能
Switch(config)#ip dhcp snooping vlan 10                  //
设置DHCP Snooping功能将作用于哪些VLAN
做了以上配置以后,打开了交换机得dhcp snooping 功能,则所有接口默认状态下,变成了untrust端口,即非信任接口,只能够通过dhcp的请求报文,但是不能通过dhcp的其他报文,例如dhcpoffer报文。这样就能够在图中的G0/3口拒绝了来自soho路由器的DHCPoffer报文。
如果此时你接入一台笔记本上满怀信心的去获取ip地址,那你就会发现,pc是根本无法获取到ip地址的,因为进行了以上的配置以后,所有的接口默认都会把dhcpoffer的报文拒绝掉,包括和核心交换机连接的G0/24口,还需要进行以下配置
Config t
Int G0/24
IP dhcp snooping trust      将该接口设置为信任接口,开始正常接收dhcp的报文
此时电脑可以正确的获取到ip地址,正常上网了。