深度分析DHCP relay和snooping功能

转自:http://blog.sina.com.cn/s/blog_866d4e0501016vxh.html


一、DHCP relay

首先分析一下DHCPrelay是什么协议。在使用DHCP协议,客户机可以向DHCP服务器动态的请求配置信息,包括分配的IP地址,子网掩码,缺省网关等信息。由于DHCP请求报文以广播方式进行的,这种类型报文的转发局限于一个网段内,不可以跨网段工作,因此,为进行动态主机配置需要在所有网段上都设置一个DHCP服务器,这显然是不经济的。DHCP中继的引入解决了这一问题,它在处于不同网段间的DHCP客户机和服务器之间承担中继服务,将DHCP协议报文跨网段中继到目的DHCP服务器,于是许多网络上的DHCP客户机可以共同使用一个DHCP服务器。
DHCP协议是以客户/服务器模式工作的,当DHCP客户启动时,发送配置请求报文,DHCP中继收到该报文并适当处理后发送给指定的位于其它网络上的DHCP服务器。服务器根据客户提供的必要信息,再次通过DHCP中继发送配置信息给客户机,完成对主机的动态配置。
DHCP RELAY功能示意图如下所示:
深度分析DHCP relay和snooping功能
DHCP RELAY实现的主要功能为:
1、 配置IP辅助地址
用户通过命令行界面,在接口配置模式下,为接口配置IP辅助地址,即指明DHCP SERVER
的IP地址。在接口控制块中维护辅助地址信息,供DHCP中继时使用。
各接口可以配置多个IP辅助地址(每个接口可配置的的IP辅助地址最大个数为20,可以
根据具体产品需要调整该值),IP辅助地址将被保存在接口控制块中。
2、 处理DHCP中继报文
DHCP中继代理不是对所有收到的DHCP报文都作中继处理,在中继前需要识别需要处理的
DHCP报文。需要强调的是在服务器端如回应报文发送给DHCP中继,则回应报文目的端口设为
67。
DHCP中继模块通过Socket收发DHCP中继报文。从各接口接收的DHCP协议报文,都是由Socket接收。
对DHCP报文识别后,交由中继模块处理。通常DHCP请求报文的源地址是0,DHCP中继代理必须可以接收IP源地址为0的报文。只接收UDP目的端口号为67的 DHCP报文。
(1)处理请求报文
已识别的DHCP报文,UDP目的端口号为67(BOOTPS),且BOOTP报文头中的op域是BOOTREQUEST(1),即DHCP客户机发给服务器的请求报文。将已识别的DHCP报文发送到指定的DHCP服务器。
DHCP客户机发出的请求报文,一般目的地址为广播地址,目的端口号为67,DHCP中继代理需要将报文发送至DHCP服务器处理,DHCP服务器由报文接收接口所配置的IP辅助地址来指定。
1.为防止DHCP报文中继形成环路,抛弃报文头hops域大于限定跳数的DHCP请求报文,限定跳数定义可以调整,缺省为4,最大不超过16。
2.DHCP中继代理在中继DHCP请求报文前,必须检查giaddr域,如果是0,需要将giaddr域设置为接收请求报文的接口的IP地址,如果接口有多个IP地址,可选择其一,并在以后从该接口中继的所有请求报文都使用该IP地址。如果giaddr域不是0,则不修改giaddr域。
3.DHCP中继代理中继DHCP报文时将hops域增加1跳,表明已经过一次DHCP中继。
4. BOOTP报文头所有其它域在发送前不能被DHCP中继代理修改。
5.DHCP请求报文被中继到新的目的地,该目的地就是报文接收接口的IP辅助地址,可以是DHCP服务器地址或另一个中继代理的地址。
6.如果接收接口有多个IP辅助地址,可以选择其一作为中继的新目的地址,对于来自同一个DHCP客户机的DHCP请求报文必须使用同一个辅助地址作为目的地址。具体实现是通过chaddr域识别DHCP客户机。
7. 对于同一个接口收到的来自不同DHCP客户机的请求报文,中继采用轮循方式选择一个IP辅助地址作为报文新的目的地址。
8.对于某个接口接收到的来自不同DHCP客户机的请求报文,中继采用轮循选择一个IP辅助地址作为其新的目的地址。
9. 中继的请求报文的TTL采用新缺省值,而不是原来请求报文的TTL减1。对中继报文的环路问题可以通过hops域来避免。
(2)处理回应报文
从各接口收到的已识别的DHCP报文,UDP目的端口号为67,且BOOTP报文头中的op域是BOOTREPLY(2),即DHCP服务器希望通过中继代理发给DHCP客户机的回应报文。将已识别的DHCP报文发送到指定的DHCP客户机。
DHCP服务器发给中继的BOOTREPLY报文,一般目的地址为中继代理在处理请求报文时设置的giaddr,目的端口号为67,DHCP中继代理需要将报文发送至DHCP客户机处理,DHCP客户机与报文的giaddr所属的接口直连,通过该接口采用广播或单播方式发送至DHCP客户机。
1.中继代理假设所有的BOOTREPLY报文是发给直连的DHCP客户机。giaddr域用来识别与客户机直连的接口。如果giaddr不是本地接口的地址,BOOTREPLY报文被丢弃。
2.中继代理检查报文的BROADCAST标志,如果置为1,则发广播报文给DHCP客户机,否则发送单播报文,其目的地址为yiaddr,链路层地址为chaddr。
3.中继代理不能修改BOOTREPLY 报文的任何域。
通过dhcprelay就可以在一个大型的网络中,只要一个服务器,就可以对所有的客户端进行自动分配了。

二、DHCP snooping

其次分析一下DHCP snooping的作用是什么?DHCP Snooping 就是 DHCP 窥探,通过对 Client和服务器之间的 DHCP 交互报文进行窥探,记录用户的IP地址和MAC地址的绑定关系,实现对用户的监控,同时 DHCPSnooping起到一个 DHCP 报文过滤的功能,通过合理的配置实现对非法服务器的过滤。下边对 DHCPSnooping内使用到的一些术语及功能进行一些解释:
DHCP Snooping TRUST 口:由于 DHCP 获取 IP的交互报文是使用广播的形式,从而存在着非法服务器影响用户正常IP 的获取,更有甚者通过非法服务器欺骗窃取用户信息的现象,为了防止非法服务器的问题,DHCP nooping 把端口分为两种类型,TRUST口和UNTRUST口,设备只转发TRUST口收到的DHCP Reply报文,而丢弃所有来自UNTRUST口DHCPReply报文,这样我们把合法的DHCP Server 连接的端口设置为 TURST 口,其他口设置为 UNTRUST口,就可以实现对非法 DHCP Server 的屏蔽。
DHCP Snooping 绑定数据库:在 DHCP 环境的网络里经常会出现用户私自设置IP 地址的问题,用户私设 IP地址不但使网络难以维护,并且会导致一些合法的使用 DHCP 获取 IP 的用户因为冲突而无法正常使用网络, DHCPSnooping通过窥探 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、dhcpdeclint报文报文。
4.经过DHCP中继转发的HDPC客服端请求报文。

三、DHCP 的典型组网应用

结合前文的DHCP文章的分析DHCP的几种组网典型应用如下:
1. 在本网段内申请地址
用户与DHCP SERVER处于同一个网段内,以DHCP的方式动态获取IP地址。

深度分析DHCP relay和snooping功能

2. 跨网段申请地址
用户跨网段申请地址,以DHCP的方式动态获取IP地址。
深度分析DHCP relay和snooping功能

3. DHCP 应用综合组网图
用户跨网段申请地址,以DHCP的方式动态获取IP地址,该综合应用中包括DHCP
SNOOPING、DHCP RELAY等。
深度分析DHCP relay和snooping功能

四、协议分析:

DHCP的主要功能是
1、DHCP允许计算机快速、动态的获取IP地址。
2、DHCP报文除能获取IP地址之外,还能获取例如子网掩码等租用地址的详细信息。
DHCP服务的优点:
1、 网络管理员可以验证IP地址和其它配置参数,而不用去检查每个主机;
2、 DHCP不会同时租借相同的IP地址给两台主机;
3、 DHCP管理员可以约束特定的计算机使用特定的IP地址;
4、 可以为每个DHCP作用域设置很多选项;
5、 客户机在不同子网间移动时不需要重新设置IP地址
DHCP服务的缺点:
1、 DHCP不能发现网络上非DHCP客户机已经在使用的IP地址;
2、 当网络上存在多个DHCP服务器时,一个DHCP服务器不能查出已被其它服务器租出去的IP地址;
3、 DHCP服务器不能跨路由器与客户机通信,除非路由器允许DHCP转发
4.DHCP协议基本上是一个单向驱动协议SERVER完全是被动的其动作行为基本完全由CLIENT的请求行为而激发即SERVER端无法主动控制CLIENT端因此其交互性和安全性就没有PPP协议那么完善这是DHCP协议的致命缺点.








转自:http://xaviet.blog.163.com/blog/static/35989082201192631810269/


DHCP Relay  

2011-10-26 15:19:11|  分类: Communicatiion |举报 |字号 订阅

 DHCP Relay配置
1        概述

        理解DHCP

        理解DHCP中继(DHCP Relay)

        理解DHCP Relay Agent Information(option 82)

        理解DHCP relay Check Server-id功能


1.1  理解DHCP

DHCP协议被广泛用来动态分配可重用的网络资源,如IP地址。DHCP客户端发出DISCOVER广播报文给DHCP服务器。DHCP服务器收到后DISCOVER报文后,根据一定的策略来给客户端分配资源,如IP地址,发出OFFER报文。DHCP客户端收到OFFER报文后,验证资源是否可用。如果资源可用发送REQUEST报文;如果不可用,重新发送DISCOVER报文。服务器收到REQUEST报文,验证IP地址资源(或其他有限资源)是否可以分配,如果可以分配,则发送ACK报文;如果不可分配,则发送NAK报文。DHCP 客户端收到ACK报文,就开始使用服务器分配的资源;如果收到NAK报文,则可能重新发送DISCOVER报文。


1.2  理解DHCP中继(DHCP Relay)

DHCP请求报文的目的IP地址为255.255.255.255,这种类型报文的转发局限于子网内。为了实现跨网段的动态IP地址分配,DHCP中继就产生了。DHCP中继将收到的DHCP请求报文以单播方式转发给DHCP服务器,同时将收到的DHCP响应报文转发给DHCP客户端。DHCP中继相当于一个转发站,负责沟通位于不同网段的DHCP客户端和DHCP服务器。这样就实现了只要安装一个DHCP服务器,就可以实现对多个网段的动态IP管理,即Client—Relay—Server模式的DHCP动态IP管理。如图1所示:

VLAN 10和VLAN 20分别对应10.0.0.1/16和20.0.0.1/16的网络,而DHCP 服务器在30.0.0.1/16的网络上,30.0.0.2的DHCP 服务器要对10.0.0.1/16和20.0.0.1/16的网络进行动态IP管理,只要在作为网关的设备上打开DHCP中继功能,并配置30.0.0.2为DHCP服务器的IP地址。


1.3  理解DHCP Relay Agent Information(option 82)

根据RFC3046的定义,中继设备进行DHCP relay时,可以通过添加option的方式来详细的标明DHCP客户端的一些网络信息,从而使服务器可以根据更精确的信息给用户分配不同权限的IP,根据RFC3046的定义,所使用option选项的选项号为82,故也被称作option 82。锐捷网络实现的relay agent information目前存在三种应用方案,下面分别对三种应用方案进行说明:

1、   relay agent information option dot1x:此种应用方案需要结合802.1x认证以及锐捷网络产品RG-SAM。DHCP中继根据RG-SAM在802.1x认证过程中下发的IP权限,以及DHCP客户端所属vid,组合构成Circuit ID子选项。选项格式如图2所示:

2、   relay agent information option82:此种option的应用不需要结合其他协议模块的运行。DHCP中继根据接收DHCP请求报文的实体端口,以及设备自身的物理地址信息,组合构成option82选项。选项格式如图3、图4所示:

Agent Circuit ID

Agent Remote ID

3、   relay agent information option vpn:此种option的应用需要结合MPLS VPN相关功能。

如图5所示,在MPLS VPN环境中,DHCP Client 1和DHCP中继上的fa0/1口相连,DHCP Client 2和DHCP中继上的fa1/1相连,接口fa0/1和接口fa1/1分别属于不同的VRF,DHCP Client 1和DHCP Client 2通过DHCP获取地址。按照网络规划,VPN DepartmentI和VPN DepartmentII使用重叠网段192.168.4.0/24,在该应用环境下,传统的DHCP应用根本无法支持该部署。为了实现在MPLS VPN环境下对DHCP中继的支持,在DHCP中继中引入了option vpn选项,该选项包括VPN-ID、Subnet-Selection以及Server-Identifier-Override三个子选项,简单说明一下这三个子选项的意义:

1)、 VPN-ID:在接收到DHCP请求报文时,将DHCP客户端所属的VPN信息,以选项形式加入DHCP请求报文中。DHCP服务器发送响应报文时,将该选项信息原样保留,DHCP中继根据该选项,将DHCP响应报文转发到正确的VRF中。选项格式如图6所示:

2)、 Subnet-Selection:在传统的DHCP中继环境中,通过gateway address[giaddr]字段表示客户端所在的网络信息以及DHCP服务器与DHCP中继的通讯地址。在MPLS VPN环境中,将giaddr修改为DHCP中继连接DHCP服务器的接口IP,使DHCP服务器可以与DHCP中继直接通讯。但是客户端的子网信息必须通过新的选项Subnet-Selection来表示。选项格式如图7所示:

3)、 Server-Identifier-Override:在MPLS VPN环境下,DHCP 客户端后续的请求报文都无法直接发送到DHC服务器。DHCP中继使用该选项携带DHCP中继与DHCP 客户端直连的接口地址信息,DHCP 服务器发送响应报文的时候,用该选项覆盖Server-identifier选项信息。从而使DHCP客户端在与DHCP服务器交互的过程中,能够将报文送往DHCP中继,然后由DHCP中继将报文转发到DHCP服务器。选项格式如图8所示:

VPN-ID:

Subnet-Selecting:

Server-id-Overriden:


1.4  理解DHCP relay Check Server-id功能

在DHCP应用环境中,通常会为每一个网络配备多个DHCP服务器,从而进行备份,防止因为一台服务器的工作不正常影响网络的正常使用。在DHCP获取的四个交互过程中,当DHCP 客户端在发送DHCP REQUEST时已经选定了服务器,此时会在请求的报文中携带一个server-id的option选项,在某些特定的应用环境中为了减轻网络服务器压力,需要我们relay能够使能此选项,只把请求报文发给此选项里的DHCP服务器,而不是发送给每一个配置的DHCP 服务器,上述就是DHCP relay check server-id功能 。


2        配置DHCP

          配置DHCP中继代理

          配置DHCP 服务器的IP地址

          配置DHCP option dot1x

          配置DHCP option dot1x access-group

          配置DHCP option 82

          配置DHCP option vpn

          配置DHCP relay check server-id

          配置DHCP relay suppression

          DHCP配置实例


2.1  配置DHCP中继代理
2.2  配置DHCP 服务器的IP地址

在配置DHCP服务器的IP地址后,设备将收到的DHCP请求报文将转发给它;同时,将收到的DHCP 服务器响应报文转发给DHCP客户端。

DHCP服务器地址可以全局配置,也可以在三层接口上配置。全局或者每个三层接口上最多可以配置20个DHCP 服务器地址。在接口上收到DHCP请求报文时,首先使用接口上的DHCP服务器列表;如果接口上面没有配置DHCP服务器列表,则使用全局配置的DHCP服务器列表。

DHCP中继支持基于vrf的中继功能,配置方法就是在对应的服务器地址前面添加vrf参数。

2.3  配置DHCP option dot1x

通过理解DHCP Relay Agent Information的描述可知,在网络如果需要根据用户权限的不同而给用户分配不同权限IP时,我们就可以通过配置ip dhcp relay information option dot1x来配置打开DHCP中继设备的option dot1x功能。当设备做为DHCP中继转发DHCP请求报文时,结合802.1x,在DHCP请求报文中添option选项信息。该功能和dot1x功能结合使用。

2.4  配置DHCP option dot1x access-group

在option dot1x的应用方案中,需要设备控制未认证或低权限的IP只有访问特定的一些IP地址的权限,以及限制低权限用户之间的互相访问,此时可以通过配置命令ip dhcp relay information option dot1x access-group acl-name来实现。这里的acl-name所定义的ACL必须预先配置,用以对某些内容进行过滤,主要是用于禁止未认证用户之间的互相访问。另外,这里所关联的ACL被应用到设备所有端口上,并且该ACL没有缺省的ACE,与其它接口所关联的ACL没有冲突关系,例如:

为未认证的所用用户规划一类IP地址,为192.168.3.2-192.168.3.254,192.168.4.2-192.168.4.254,192.168.5.2-192.168.5.254;另外192.168.3.1、192.168.4.1、192.168.5.1作为网关地址,不分配给用户。则用户在未认证之前使用192.168.3.x-5.x的地址到达web portal以下载客户端软件。


2.5  配置DHCP option 82

当配置命令ip dhcp relay information option82命令时,设备做为DHCP中继,在转发DHCP请求报文过程中,在DHCP请求报文中添加option信息。


2.6  配置DHCP option vpn

为了在MPLS VRF环境中,启用设备的DHCP中继功能。可以在全局配置模式下,配置ip dhcp relay information option vpn命令,启用设备的DHCP Relay Aware VRF功能。DHCP Relay Aware VRF功能,通过在DHCP relay agent information option(option 82)选项中,引入VPN-ID,Subnet-Selection以及Server-id Override三个子选项,以满足VRF环境下的DHCP中继部署需求。

DHCP中继通过在发往DHCP服务器的DHCP请求报文中携带VPN-ID子选项,使得DHCP服务器能够知道DHCP请求报文来自那个VPN(VRF环境)。同时DHCP服务器在发往DHCP中继的DHCP响应报文中携带VPN-ID子选项,使DHCP中继可以依据具体的VPN ID值,将DHCP响应报文转发至正确的VRF中。

传统的DHCP中继处理过程中,DHCP报文的gateway address字段可同时表示DHCP客户端所在的子网以及DHCP服务器与DHCP中继的通讯地址。而在multi-VRF环境中,DHCP中继与DHCP服务器相连的接口地址属于全局路由表。DHCP中继发往DHCP服务器的报文中,gateway address字段只表示DHCP中继与DHCP服务器通讯的地址,无法表示DHCP客户端所在的子网信息。Subnet -Selection子选项通过携带DHCP中继与DHCP客户端相连的接口地址信息,将DHCP客户端所属的子网信息通告给DHCP服务器。

在MPLS VPN环境中,DHCP客户端无法从其所属的VRF空间,直接将RENEW和RELEASE报文发往属于全局的DHCP服务器地址。Server-id-Override子选项携带DHCP中继与DHCP客户端相连的VRF接口地址信息。DHCP服务器在发往DHCP中继的DHCP响应报文中,使用Server-id-Override子选项覆盖Server ID address字段,从而使DHCP 客户端在发送RENEW和RELEASE报文时,能够发送到对应的DHCP中继,DHCP中继再将报文转发到DHCP服务器。


2.7  配置DHCP relay check server-id

当配置命令ip dhcp relay check server-id后,DHCP Relay仅将DHCP请求报文转发到option server-id中指定的服务器。如果没有配置该命令,则向所有配置的DHCP服务器转发DHCP请求报文。


2.8  配置DHCP relay suppression

在指定接口上配置命令ip dhcp relay suppression后,将屏蔽该接口上收到的DHCP请求报文;而对于其他接口上收到的DHCP请求报文,则正常转发。











http://www.codesky.net/article/201111/137576.html

已标记关键词 清除标记
相关推荐
课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页