分享

详解DHCP Snooping

 nethelper 2018-04-23

DHCP服务器的客户端和服务端的工作

  DHCP Client 发出DHCP DISCOVER广播报文给DHCP Server,若Client 在一定时间内没有收到服务器的响应,则重发DHCP DISCOVER 报文。DHCP Server收到DHCP DISCOVER报文后,根据一定的策略来给Client 分配资源(如IP 地址),然后发出DHCP OFFER报文。DHCP Client 收到DHCP OFFER报文后,发出DHCP REQUEST请求,请求获取服务器租约,并通告其他服务器已接受此服务器分配地址。

 

服务器收到DHCP REQUEST报文,验证资源是否可以分配,如果可以分配,则发送DHCP ACK 报文;如果不可分配,则发送DHCP NAK 报文。DHCP Client收到DHCP ACK 报文,就开始使用服务器分配的资源。如果收到DHCP NAK,则重新发送DHCP DISCOVER报文。

 

理解DHCP Snooping

  DHCP Snooping 就是DHCP 窥探,通过对Client 和服务器之间的DHCP 交互报文进行窥探,实现对用户的监控,同时DHCP Snooping起到一个DHCP 报文过滤的功能,通过合理的配置实现对非法服务器的过滤。下边对DHCP Snooping内使用到的一些术语及功能进行一些解释:

DHCP Snooping TRUST 口:由于DHCP 获取IP的交互报文是使用广播的形式,从而存在着非法服务器影响用户正常IP 的获取,更有甚者通过非法服务器欺骗窃取用户信息的现象,为了防止非法服务器的问题,DHCP nooping 把端口分为两种类型,TRUST口和UNTRUST口,设备只转发TRUST口收到的DHCP Reply报文,而丢弃所有来自UNTRUST口DHCP Reply报文,这样我们把合法的DHCP Server 连接的端口设置为TURST 口,其他口设置为UNTRUST 口,就可以实现对非法DHCP Server 的屏蔽。

DHCP Snooping 绑定数据库:在DHCP 环境的网络里经常会出现用户私自设置IP 地址的问题,用户私设IP 地址不但使网络难以维护,并且会导致一些合法的使用DHCP 获取IP 的用户因为冲突而无法正常使用网络,DHCP Snooping通过窥探Client 和Server 之间交互的报文,把用户获取到的IP信息以及用户MAC、VID、PORT、租约时间等信息组成一个用户记录表项,从而形成一个DHCP Snooping 的用户数据库,配合ARP检测功能的使用,从而达到控制用户上网的目的。

DHCP Snooping 就是通过对经过设备的DHCP 报文进行合法性检查,丢弃不合法的DHCP 报文,并记录用户信息生成DHCP Snooping 绑定数据库供ARP 检测查询使用。

以下几种类型的报文被认为是非法的DHCP 报文:

1. UNTRUST 口收到的DHCP reply 报文,包括DHCPACK、DHCPNACK、DHCPOFFER 等。

2. 打开mac 校验时,源MAC 与DHCP 报文携带的DHCP Client 字段值分别为不同的报文。

3. 用户的信息存在于DHCP Snooping 绑定数据库中,但是端口信息与设备保存在DHCP绑定数据库中的信息中的端口信息不一致的DHCPRELEASE报文。

DHCP Snooping和ARP探测的关系

ARP 探测就是对经过设备的所有ARP 报文进行检查,DHCP Snooping需要提供数据库信息供 ARP 探测使用,在开启DAI 功能的设备上,当收到ARP报文时,DAI 模块就根据报文查询DHCP snooping的绑定数据库,只有当收到得ARP 报文得mac、ip 和端口信息都匹配时才认为收到的ARP 报文是合法的,才进行相关的学习和转发操作,否则丢弃该报文。

 

DHCP Snooping配置的其他注意事项

DHCP Snooping功能与1x的DHCP Option 82 功能是互斥的,即不能同时使用

DHCP Snooping和DHCP Option82

DHCP Snooping仅对用户的DHCP过程进行窥探,若想控制用户必须使用DHCP分配的IP 上网, 则必须使用ARP 探测功能,而ARP 检测模块需要检测所有ARP报文,所以会对设备的整体性能产生影响,需要用户注意。

 

配置打开和关闭DHCP Snooping

缺省情况下,设备的DHCP Snooping 功能是关闭,当配置ip dhcp snooping 命令后,设备就打开了dhcp snooping 功能,开始对dhcp报文进行监控。

switch# configure terminal //进入配置模式

switch(config)# [no] ip dhcp snooping DHCP snooping //打开和关闭

下边是配置打开设备DHCP snooping功能:

switch# configure terminal

switch(config)# ip dhcp snooping switch(config)# end

switch#

打开和关闭源MAC检查功能

下边的是打开DHCP 源MAC检查的功能

switch# configure terminal

switch(config)# ip dhcp snooping verify mac-address switch(config)# end

switch#

配置静态DHCP snooping用户

在某些应用情况下,某些端口下的用户希望能够静态使用某些IP,就可以通过静态配置此用户信息来实现。

switch# configure terminal //进入配置模式

switch(config)# [no] ip dhcp snooping

bindingmac-addrees vlan vlan_id ip

ip-addressinterface interface-id

设置DHCP静态用户到DHCP

snooping 绑定数据库

下边是添加一个静态的用户到设备的9端口:

switch# configure terminal

switch(config)# ip dhcp snooping binding 00d0.f801.0101 vlan 1 ip 192.168.4.243 interface gigabitEthernet 0/9

switch(config)# end

switch#

配置定时写DHCP Snooping数据库信息到flash

为了防止设备断电重启导致设备上的DHCP户信息丢失,所以DHCP Snooping 提供可配置的定时把DHCP Snooping 数据库信息写入flash的命令,默认情况下,定时为0,即不定时写flash。

switch# configure terminal //进入配置模式

switch(config)# [no] ip dhcp snooping

database write-delay [time]

设置DHCP延迟写flash的时间

time:600s--86400s.缺省为0

下边的是设置DHCP Snooping延迟写flash的时间为3600s:

switch# configure terminal

switch(config)# ip dhcp snooping database write-delay 3600 switch(config)# end

switch#

手动把DHCP snooping数据库信息写到flash

 

为了防止设备断电重启导致设备上的DHCP用户信息丢失,除了配置定时写flash 外,也可以根据需要手动地把当前的DHCP Snooping绑定数据库信息写入flash。

switch# configure terminal //进入配置模式

switch(config)# ip dhcp snooping database

write-to-flash

把DHCP snooping数据库信息写入flash

下边的是手动的把DHCP Snooping 数据库信息写入flash:

switch# configure terminal

switch(config)# ip dhcp snooping database write-to-flash

switch(config)# end

配置DHCP源MAC检查功能

配置此命令后,设备就会对UNTRUST 口送上来的DHCP Request 报文进行源MAC和Client 字段的MAC地址校验检查,丢弃MAC值不相同的不合法的报文。默认不检查。

switch# configure terminal //进入配置模式

switch(config)# [no]ip dhcp snooping

verify mac-address

配置端口为TRUST口

用户通过配置此命令来设置一个端口为TRUST 口,默认情况下所有端口全部为UNTRUST 口:

switch# configure terminal //进入配置模式

switch(config)# interface interface //进入接口配置模式

switch(config-if)# [no] ip dhcp snooping trust //将端口设置为trust 口

下边是配置设备的1端口为TRUST 口:

switch# configure terminal

switch(config)# interface gigabitEthernet 0/1 switch(config-if)# ip dhcp snooping trust

switch(config-if)# end

switch

 

清空DHCP Snooping数据库动态用户信息

此命令用于清空当前的DHCP Snooping 数据库的信息。

switch# clear ip dhcp snooping binding //清空当前数据库的信息

 

 

下边的是手动清空当前数据库的信息:

switch# clear ip dhcp snooping binding

 

 

DHCP snooping配置显示

 

显示DHCP snooping

您可以通过以下步骤显示ip dhcp snooping内容

switch# show ip dhcp snooping

 

 

显示dhcp snooping 的相关配置信息

例如:

switch# show ip dhcp snooping

Switch DHCP snooping status : ENABLE DHCP snooping Verification of hwaddr status : ENABLE

DHCP snooping database wirte-delay time : 3600 Interface Trusted

------------------------ -------

GigabitEthernet 0/1 YES

 

显示DHCP snooping 数据库信息

 

您可以通过以下步骤显示ip dhcp snooping数据库信息的相关内容

switch# show ip dhcp snooping binding

查看DHCP Snooping 绑定数

据库的静态用户信息

例如:

switch# show ip dhcp snooping binding

MacAddress IpAddress Lease(sec) Type VLAN Interface ------------------ --------------- ---------- -----------

00d0.f801.0101 192.168.4.243 - static 1 GigabitEthernet 0/9

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多