DHCP协议原理基础

来源:互联网 发布:mac mount samba 编辑:程序博客网 时间:2024/06/05 01:57

 1 前言

目前,DHCP是流行的IP地址分配协议,DHCP协议衍生出来的DHCP Relay、DHCP Snooping功能使得DHCP相关功能十分丰富,但由于DHCP相关的文档很少,并且文档中一般没有DHCP相关应用场景的具体介绍,因此,给我们学习带来了不少问题。本文根据查阅的资料和相关经验,把DHCP相关功能进行了总结。首先介绍了DHCP相关功能与原理,然后以应用场景介绍的方式举例介绍了DHCP相关的应用。

2 缩略语

本文使用的专用缩略语见表2.1

2.1

缩略语

英文原文

中文含义

DHCP

Dynamic Host Configuration Protocol

动态主机配置协议

VLAN

Virtual LAN

虚拟局域网

DHCP Relay

Dynamic Host Configuration Protocol Relay

动态主机配置协议中继

DSLAM

Digital Subscriber Line Access Multiplexer

数字用户接入复用设备

 option 82

 option 82

 DHCP报文中的一种可选字段

3 DHCP概述

DHCP(动态主机配置协议)能够让网络上的主机从一个DHCP服务器上获得一个可以让其正常通信的IP地址以及相关的配置信息。RFC2131详细的描述了DHCP。DHCP采用UDP作为传输协议,主机发送消息到DHCP服务器的67号端口,服务器回消息给主机的68号端口。DHCP的工作主要分为以下几步:

1. 主机发送一个请求IP地址和其他配置参数的广播报文DHCPDiscover;

2. DHCP服务器回送一个包含有效IP地址及配置的单播报文DHCPOffer;

3. 主机选择最先到达的DHCPOffer的那个服务器,并向它发送一个广播的REQUEST,表示接受相关配置;

4. 选中的DHCP服务器回送一个确认的单播报文DHCPAck。

至此,主机就可以利用从DHCP服务器获得的IP地址和相关配置进行通信。

DHCP服务器为主机分配的IP地址有三种形式:

1. 管理员将一个IP地址分配给一个确定的主机;

2. 随机的将地址永久性分配给主机;

3. 随机将地址分配给主机使用一段时间。

 一般常用的是第3种形式。地址的有效使用时间段称为租用期。租用期满之前,主机必须向服务器请求继续租用,服务器接受请求才能继续使用,否则无条件放弃。

由于默认情况下,路由器(或者具有路由功能的交换机)不会将收到的广播包从一个子网发送到另一个子网。而当DHCP服务器和客户主机不在同一个子网时,充当客户主机默认网关的路由器必须将广播包发送到DHCP服务器所在的子网,这一功能就称为DHCP中继。

 DHCP SNOOPING是一个应用于交换机中二层功能,目的是在一定层度上解决DHCP协议本身不具有安全性所带来的潜在的被攻击的风险。DHCP SNOOPING需要捕获网络中所有经过交换机进行转发的DHCP协议数据包,不论此数据包是否广播数据包。然后,根据用户配置的管理策略或动态生成的DHCP Snooping Binding数据库,对DHCP数据包进行有效性检查和策略过滤。

 DHCP相关的应用主要包括三个方面:(1DHCP Server,即用作DHCP Server,来响应DHCP客户端的DHCP报文请求,根据一定的原则分配IP地址。(2DHCP Relay,即用作DHCP Relay根据相应的策略转发DHCP报文。(2)处在接入层(通过下行的交换机连接了DHCP客户端或者直接连接DHCP客户端)的交换机开启DHCP SNOOPING功能,并且配置一定的策略来解决一系列的安全问题。

很多中高端以太网交换机一般既可以作为DHCP服务器,也可以充当DHCP中继转发DHCP信息(但两种功能不能同时使用),还支持DHCP SNOOPING的相关功能,但路由器一般只支持DHCP ServerDHCP Relay功能。DHCP ServerDHCP Relay不能同时使用,但与DHCP Snooping之间相互独立,交换机上可以配置DHCP Server或者DHCP Relay的基础上增加DHCP Snooping功能的配置,来支持安全性。

4 DHCP相关功能概述

4.1 DHCP Server

 交换机或路由器接受DHCP报文,根据相关策略处理DHCP报文,分配IP地址。这里的报文可能是客户端(主机)发送的报文(不含有option 82),也可以是DHCP Relay转发过来的报文(可以含有option 82),还可以是接入交换机(通过下行的交换机连接了DHCP客户端或者直接连接DHCP客户端)转发过来的DHCP报文(可以含有option 82)。

4.2 DHCP Relay

由于默认情况下,路由器(或者具有路由功能的交换机)不会将收到的广播包从一个子网发送到另一个子网。而当DHCP服务器和客户主机不在同一个子网时,需要通过其中继设备进行转发DHCP报文,将广播报文单播给DHCP服务器,这个功能就是DHCP Relay功能。option 82DHCP报文中的中继代理信息选项(relay agent information option)。当DHCPclient发送请求报文到DHCPserver时,若需要经过DHCP中继,则由DHCP中继将option 82添加到请求报文中。option 82实现了DHCP客户端和DHCP中继设备的地址信息在DHCP服务器上的记录,与其他软件配合使用可以实现DHCP分配的限制和计费功能。

DHCP报文中的option选项中最多可以包括255option,最少为1optionoption 82dhcp报文中option内容的一部分。rfc3046中定义了option 82,其位置在option 255之前而在其他option之后。option 82中可以包含最多255sub-option,若定义了option 82,至少要定义一个sub-option。目前option 82中常用的sub-option 1sub-option 2sub-option 5sub-option 1option 82的一个子选项,为代理电路id(即circuit id)子项。子选项通常在dhcp中继设备上配置,定义了在传输报文的时候要携带DHCP客户端所连接交换机端口的vlan-id及二层端口号。通常sub-option 1sub-option 2子选项要共同使用来标识DHCP源端的信息。sub-option 2也是option 82的一个子选项,为代理远程id(即remote id)子项。该子选项也通常在DHCP中继设备上配置,定义了在传输报文的时候要携带中继设备的mac地址信息。通常与sub-option 1子选项要共同使用来标识DHCP源端的信息。sub-option 5也是option 82的一个子选项。为链路选择(link selection)子项,该选项中包含了DHCP中继添加的ip地址。这样DHCPserver在分配ip地址给DHCP客户端的时候就可以分配与该地址同网段的ip地址。

DHCP客户端通过DHCP中继从DHCP服务器获取ip地址的过程与同网段的DHCP获取过程完全相同,都要经历发现、提供、选择和确认四个阶段。DHCP中继支持option 82时的工作机制,具体如下:

1.         DHCP客户端在初始化时以广播的形式发送请求报文。

2.         若本地网络存在DHCP服务器,则客户端可以直接从该服务器获取ip地址。

3.         若本地网络没有DHCP服务器,则与本网络相连的DHCP中继设备对该广播报文进行相应的处理。DHCP中继设备将检查报文中是否已有option 82选项,进行相应的处理。

4.         如果报文中已有option 82,设备按照配置的策略对该报文进行处理(丢弃、用中继设备本身的option 82项替代报文中原有的option 82项或保持报文原有的option 82项),然后将请求报文转发给DHCP服务器。这里的转发策略和填充字段不同的厂商之间可能不尽相同,这些模式和配置字段一般可以进行配置。

5.         若请求报文中没有option 82选项,则DHCP中继设备将option 82选项添加到报文中后转发给DHCP服务器。此时,请求报文中将包含了DHCP客户端所连接的交换机端口的mac地址、所属的vlan以及DHCP中继设备本身的mac地址。

6.         DHCP服务器收到DHCP中继设备转发的DHCP请求报文后,将记录报文中option选项所携带的信息,然后将带着DHCP配置信息以及option 82信息的报文发给DHCP中继。DHCP服务器也可以依据option 82中的信息识别可能的DHCP攻击报文并作出防范。

7.         DHCP中继收到DHCP服务器的返回报文后将剥离报文中的option 82信息,然后将带有DHCP配置信息的报文转发给DHCP客户端。

DHCP客户端发送的请求报文有四种,分别为dhcp_discover报文、dhcp_request报文、dhcp_release报文和dhcp_inform报文,DHCP中继设备将在四种报文中都添加option 82选项,因为不同厂商生产的DHCP服务器设备对请求报文的处理机制不同,有些设备处理dhcp_discover报文中的option 82信息,而有些处理dhcp_request报文中的option 82信息。

4.3 DHCP Snooping

DHCP SNOOPING是一个应用于交换机中二层功能,目的是在一定层度上解决DHCP协议本身不具有安全性所带来的潜在的被攻击的风险,主要包括如下方面,交换机基本支持如下方面的多数配置属性(功能),但是不同的交换机和版本支持的属性不尽相同。

1.         打开全局DHCP SNOOPING.

2.         打开某个VLAN开启DHCP SNOOPING,以侦听该VLAN中的DHCP报文。

3.         option 82选项相关的配置:是否在DHCP客户端的请求报文中插入option 82选项,插入option 82选项的模式,转发带有option 82选项的DHCP客户端请求报文模式。

4.         端口相关的配置:端口是否为信任端口的设置,防止非法DHCP服务器的接入。

5.         VLAN绑定相关的设置:添加、删除绑定数据库表项到绑定数据库中。

6.         动态ARP检测配置:解决客户端静态IP配置造成IP地址冲突的问题。

7.         DHCP 控制配置:进行了该配置后,在进行MAC学习的时候,先要对源MAC地址与DHCP SNOOPING绑定表中数据进行匹配,如果匹配失败,将在MAC表中置目的丢弃标志。

8.         Ip Source Guard相关配置:使用IP source guard来阻止盗用邻居IP而导致的流量攻击。

9.         配置全局DHCP SNOOPING MAC检测功能,检测DHCP数据包中的client mac address选项中的地址是否与原mac相同,依此来增加报文的可靠性。

10.     配置全局和端口的DHCP SNOOPING的用户数量。

需要说明的是DHCP Snooping中的option 82选项配置和DHCP Relay功能中的option 82选项配置功能和配置方法一致,但是两者是独立的。DHCP Relay中的option 82选项的配置目的在于转发策略的实施,即根据option 82选项将广播报文单播给DHCP服务器。起初option 82只是由DHCP Relay填充,但为了解决接入端的安全问题,实现端口隔离、接入认证、计费等功能,在接入端交换机的DHCP Snooping中引入了option 82选项配置。如果交换机中两个功能都对option 82选项配置进行配置,那么DHCP请求报文首先在DHCP Snooping模块中进行处理(二层),然后再DHCP Relay模块中进行相关处理(三层),处理然后转发给DHCPServer

5 DHCP应用场景介绍

1、DHCP Server+DHCP SNOOPING(无option 82选项配置)功能

如下图5.1所示:交换机配置成DHCP Server工作模式。PC1、PC2、FTP服务器在一个VLAN中,由交换机分配IP地址。主机和交换机(DHCP服务器在一个网段,因此不用中继),但是为了防止主机配置静态IP地址,需要开启DHCP SNOOPING并且打开ARP动态检测功能。当然这种应用场景很少,只是为了介绍DHCP Server功能的应用。


图5.1

2、DHCP Relay+DHCP SNOOPING功能

如下图5.2所示:PC和FTP服务器在和两个服务器不再一个网段中,因此将交换机配置成DHCP Relay工作模式。但是两个DHCP服务器中有一个是非法服务器,因此要将打开DHCP SNOOPING,并且将连接非法服务器的端口设置为untrust,连接合法服务器的端口设置成trust。

当然实际中这种配置方式很少,只是为了介绍DHCP Relay功能而已。


图5.2

3、DHCP Relay+DHCP SNOOPING(配置option 82选项)在城域网中实现宽带接入、认证。

如下图5.3所示:DHCP用于城域网接入认证的应用场景,BTV业务以DHCP+认证方式接入用户。


图5.3

客户享受组播服务之前,STB数字机顶盒)通过两次握手,向DHCP服务器申请IP地址,以实现认证和接入。过程如下,

1、客户端广播DHCP Discover报文,以发现DHCP服务器,汇聚层的接入交换机依据DHCP Snooping功能捕获此报文,并插入Option82,然后把报文中继到DHCP服务器。如果DSLAM(Digital Subscriber Line Access Multiplexer)设备配置上述功能,Option82在DSLAM设备插入,则在汇聚交换机上通过配置可以重新插入自己的Option82信息,也可以直接透传DSLAM设备上的Option82信息。

2、DHCP服务器收到报文后,通过读取Option82信息分离出其中的设备端口信息等标识用户物理位置的信息,然后将此信息与DHCP服务器上的用户数据库相应信息比较。不一致,则DHCP服务器不做任何响应;一致,则DHCP服务器回送一个DHCP Offer报文。其中含有一个IP地址和携带原有Option82信息,其中的数据库信息是运营商开户时根据用户所在设备端口等信息录入的,供DHCP服务器认证用户的数据。

3、此报文通过汇聚交换机(DHCP Relay)时,被剥离Option82,从相应的Vlan和端口送出,STB收到后,广播DHCP Request报文,以通知其它未选中的DHCP 服务器和询问被选中的DHCP 服务器其它的配置选项,如DNS、网关地址等。

4、此报文在汇聚交换机(DHCP Relay)上同样做Option82插入处理并向DHCP服务器中继,DHCP服务器收到此报文后,将回送一个DHCP ACK报文,其中包括用户IP、网关、DNS等配置信息以及IP租约信息,并携带Option82信息。

5、汇聚交换机(DHCP Relay)收到此报文,剥离Option82信息后向STB转发此报文,同时根据报文内容和Option82完成建立DHCP+ Snooping绑定表项。STB收到DHCP ACK报文后,广播一个免费ARP报文,确认自己使用的IP地址没有与其它用户冲突后,开始使用此IP地址,与此同时在DHCP服务器上根据配置决定是否将该用户的MAC地址和其用户数据库信息绑定,作为用户再次接入的认证条件。

如下图5.4所示:DHCP用于城域网接入认证的应用场景,小区用户通过楼层交换机接入。


图5.4

运营商在城域核心部署的DHCP服务器物理上与客户端不在相同的网络上,通过在三层网络设备上启用DHCP中继把DHCP请求转发到位于核心层的DHCP服务器上。如果在DHCP客户端的广播域内出现私接的DHCP服务器,该DHCP服务器将会接收到客户端的DHCP发现信息,并做出响应,客户端选择了该服务器提供的IP地址,则不能正常上网。为避免网内私接DHCP服务器所带来的问题,可将客户端进行隔离,如划分VLAN或端口隔离。由于住宅用户的数量很大,对小区内每个用户都划分VLAN会造成很大的管理成本,同时由于DHCP作用域过小而降低地址利用率。端口隔离能够对相同交换机下的用户实现二层隔离功能,简单易行,可以将划分VLAN和端口隔离这两种方式结合应用。楼宇交换机从功能上分为楼端(楼头)交换机和楼层(单元)交换机,要实现完整的用户信息隔离,需要逐级设备的支持。图3.4以宽带城域网DHCP应用实例。居民小区楼端交换机和楼层交换机采用PVLAN方式将用户信息隔离,在小区出口交换机启VLAN,经城域传输网透传至城域业务汇聚点三层交换机,三层交换机将各小区VLAN透传至宽带接入服务器(BRAS)设备。BRAS终结小区VLAN,并对各VLAN子网启用DHCP中继功能,将DHCP信息转发至DHCP服务器。在DHCP服务器中,每个小区对应一个地址作用域。

4、DHCP SNOOPING(配置option 82选项)在政府、学校、企业网中实现接入、认证以及安全控制。

主要通过DHCP SNOOPING等相关技术实现访问者可以访问外网,但是不能访问内网,内部人员可以访问内外网。如下图5.5所示,利用交换机DHCP Snooping 和option82功能,实现接入PC不能访问内网,但是可以访问外网的应用场景。


图5.5

1、内网合法用户使用10.1.0.0/255.255.0.0地址段,而对于临时接入者通过DHCP服务器分配192.168.2.0/255.255.255.0地址段;

2、临时接入终端通过交换机向DHCP服务器申请IP地址(如图为:192.168.2.2),如上图红线步骤。DHCP接入交换机启用基于OPTION82的DOT1X认证功能,在OPTION82插入默认值。DHCP服务器以此认定终端没有通过认证,属于临时接入者。

3、临时接入终端获得192.168.2.0/24地址段地址,可以在汇聚交换机配置ACL,控制192.168.2.0/24对内网的访问,使得192.168.2.0/24地址段不能访问内网资源,但是可以访问外网,如图3.4绿线所示。注:此时来访者不需要安装802.1x客户端程序。

如上图5.6所示,利用交换机DHCP Snooping和option82功能实现内部员工可以访问内外网。


图5.6

当内部使用者接入网络:

1、首先在终端认证前可以向DHCP服务器申请IP地址,接入交换机switch1通过DHCP SNOOPING 在DHCP请求报文添加默认值,再由DHCP Relay转发到DHCP Server。DHCP Server根据OPTION82中的字段为默认值(unauth),判定主机没有经过认证,向终端分配IP地址:192.168.2.3。这个过程和临时访问者完全一样。

2、终端通过802.1X客户端程序向认证服务器,发起认证,如图线条①所示;

3、如果认证没有通过,认证服务器不会发出任何报文,终端的状态,包括IP地址不变。

4、如果认证通过,认证服务器会下发该用户的OPTION82到SWITCH1,并激发用户的认证客户端发起第二次IP地址申请,如图线条②;

5、认证客户端发起第二次IP地址请求,当DHCP请求报文通过SWITCH1,DHCP SNOOPING在监听DHCP报文时附加用户认证后的OPTION82信息,如图线条③所示;

6、DHCP SERVER会根据这个OPTION82信息给用户分配另一个地址:10.1.2.2。如图线条④所示,该IP地址就可以同时访问内外网。

原创粉丝点击