为什么使用dhcp监听
网络中经常出现有人私接路由器导致部分电脑获取到的IP地址是路由器上面的IP地址,而不是公司的IP地址,导致部分电脑无法上网,使用dhcp监听可以避免有人在网络中私接路由器。
dhcp监听还可以避免dhcp服务器欺骗和地址耗尽。
DHCP服务器欺骗
即客户端将自己配置为DHCP服务器,分派虚假的IP地址及其信息或者直接响应DHCP请求
DHCP地址耗尽
即客户端不断的冒充新客户发送DHCP请求,请求服务器分派IP地址,这样很快耗尽DHCP配置的IP地址池,其他计算机无法使用
dhcp监听将交换机分为两种:信任端口和非信任端口。
比如说客户机2、3、4是正常的工作电脑,但是客户机1接入到了网络中,想冒充dhcp服务器来分发地址,但是由于它连接的交换机端口是非信任端口所以无法发出dhcp服务器响应的数据包,只能发送客户端请求地址的数据包。
dhcp服务器连接的端口是信任端口,那么他就可以发送dhcp响应请求,为请求IP地址的客户机分发IP地址。
使用dhcp监听会建立一个dhcp绑定表,一旦一个连接在非信任端口的客户端获得一个合法的IP地址,则交换机就会在dhcp绑定表中添加一个条目,主要包括客户端的IP地址、MAC地址、端口号、vlan、绑定类型和租期等信息。dhcp绑定表是为了进一步部署IP源防护和动态arp检测做的基础。
在启用dhcp监听的交换机上,交换机可以为dhcp报文插入一些选项信息,以便dhcp服务器可以更精准地知道客户端的信息,在dhcp中包含的这些信息的选项为82。
选项82主要包括dhcp请求报文中进入设备的端口,属于的VLAN、交换机的MAC地址等信息。交换机在dhcp请求报文中插入这些信息,然后发送给dhcp服务器,dhcp服务器可以根据这些信息更加精确的为客户端分配IP地址、设置策略等。
注意:是否启用dhcp报文插入选项82并不影响dhcp原有功能,使用选项82信息可以使dhcp服务器策略设置更加灵活。另外,如果dhcp服务器不支持82,服务器收到dhcp报文中携带选项82信息也不会影响dhcp服务器的原有功能。
默认情况下,启用dhcp监听的交换机对所有非信任端口收到的dhcp请求报文插入选项82信息。
dhcp监听配置:
1)启用监听
Switch(config)#ip dhcp snooping
2)设置dhcp监听作用于那个vlan的命令如下。
Switch(config)#ip dhcp snooping vlan 1
如果设置多个vlan 如,1,3~5
3)配置端口信任或非信任
启用dhcp监听后,默认所有端口为非信任端口,若要配置端口为信任端口,命令如下
Switch(config)#ip dhcp snooping trust
4)报文中插入选项82信息
Switch(config)#ip dhcp snooping information option
5)配置预防dhcp耗尽攻击
通过限制非信任端口dhcp报文速率,减缓dhcp耗尽攻击,在非信任端口配置。
Switch(config-if)#ip dhcp snooping limit rate 15
速率的单位是pps,cisco 2960交换机的范围为1~2048,默认配置为15,如果接口连接的是交换机,可以加大这个数值。
另外,还可以在全局模式下启用核实MAC地址功能,避免dhcp耗尽攻击,配置命令如下
Switch(config)#ip dhcp snooping verify mac-address
启用MAC地址核实功能之后,交换机会检查从非信任端口收到的dhcp请求报文中的源Mac地址和dhcp客户端的mac地址相同,避免虚假MAC地址请求IP实现dhcp耗尽攻击。
当非信任端口的dhcp报文速率大于规定值时就会出现违规情况,端口将进入err-disabled状态,默认情况下不会自动恢复。
手动恢复:现关闭端口在开启端口。
自动恢复:设置一个计时器,即端口进入err-disabled状态后,多长时间自动恢复。命令如下:
Switch(config)#errdisablerecovery cause dhcp-rate-limit
Switch(config)#errdisablerecovery interval 300
需要注意,err-disabled计时器是全局唯一,即无论何种原因使端口进入err-disabled状态,其恢复时间都相同。
6)dhcp监听状态查询
查看当前dhcp监听状态以及各端口情况
Switch#show ip dhcp snooping
查看当前dhcp监听绑定表
Switch#show ip dhcp snooping binding
7)清除dhcp监听绑定表
Switch#clear ip dhcp snooping binding
需要注意:dhcp报文的选项82为dhcp中继使用,dhcp监听使用选项82添加相关客户端信息。
当使用Cisco设备作为dhcp服务区时,如果交换机为dhcp请求报文添加了选项82信息,路由器在收到dhcp报文中发现报文中存在82信息但是,没有发现中继代理,就会认为收到dhcp报文非法,而丢弃改报文,最终导致客户端无法获得IP地址。
让允许被插入选项82信息但无中继的信息通过,命令如下
接口设置
Router(config-if)#ip dhcp relay information trusted
全局设置
Router(config)#ip dhcp relary information trust-all