DHCP技术

目录

Chapter 1 DHCP技术简介... 3

1.1 定义... 3

1.2 DHCP 经典组网... 3

1.3 DHCP租期和地址池... 4

1.3.1 租期... 4

1.3.2 地址池... 5

1.4 DHCP报文... 6

1.4.1 DHCP报文类型... 6

1.4.2 DHCP报文格式... 7

1.4.3 DHCP 的Options字段... 9

1.4.4 中继代理信息选项(Option82)... 11

Chapter 2 DHCP交互原理... 11

2.1无中继场景时DHCP客户端首次接入... 11

2.1.1 发现阶段... 12

2.1.2 提供阶段... 13

2.1.3 选择阶段... 14

2.1.4 确认阶段... 16

2.2 有中继场景时DHCP客户端首次接入... 16

2.2.1 发现阶段... 17

2.2.2 提供阶段... 17

2.3 DHCP Client重用曾经使用过的IP. 17

2.4 DHCP客户端更新租期... 18

Chapter 3 DHCP Snooping. 19

3.1 DHCP Snooping简介... 19

3.2 DHCP Snooping原理... 20

3.2.1 DHCP Snooping信任功能... 20

3.2.2 DHCP Snooping绑定表... 21

Chapter 4 Option82. 22

4.1 概述... 22

4.2 实现... 23

Chapter 1 DHCP技术简介

 1.1 定义

        DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种常见的网络技术,用于集中对用户IP地址进行动态管理和分配。在IP网络中,诸如个人电脑,手机或者其他终端设备,都必须要拥有IP地址才能进行正常通信,而获得IP地址的途径主要有两种:

  • 手工配置(静态IP地址配置),这种方式适用于终端设备较少的场景,或者从网络管理以及安全的角度考虑,对设备与IP地址的绑定关系存在严格要求的场景(学校电脑机房)。此外,服务器及大多数网络设备通常都有稳定的通信以及控制需求,因此往往采用静态IP地址的方式进行配置。
  • DHCP自动获取IP地址。在终端网络设备数量较多的时候,而且网络中对IP地址没有严格管控需求的场景中,DHCP都可以极大程度上简化网络管理,为后续增加网络设备提供便捷,满足通信需求。

1.2 DHCP 经典组网

在DHCP的组网中,包含了以下三种角色:

  • DHCP 服务器:

               DHCP服务器负责从地址池中选择IP地址分配给DHCP客户端,还可以给DHCP客户端提供其他网络参数(Discover报文要求提供的参数存放在Option55中,Parameter Request List),例如默认网关地址,DNS服务器地址。DHCP服务器可以接收处理来自本网段或跨网段由DHCP中继转发的DHCP请求报文。

  • DHCP客户端:

               DHCP客户端发送DHCP请求报文,通过DHCP协议请求获取IP地址和其他网络参数的设备。例如IP电话,PC,手机等等。

  • DHCP中继:

               DHCP中继负责转发DHCP服务器和DHCP客户端之间的DHCP报文,协助DHCP服务器向DHCP客户端动态分配网络参数。

        DHCP客户端广播发送Discover/Request报文(即目的IP地址为255.255.255.255),位于同一网段内的DHCP服务器能够接收Discover/Request报文。如果DHCP客户端和DHCP服务器不在同一个网段,DHCP服务器无法接收来自客户端的请求报文,此时,需要通过DHCP中继来转发DHCP报文。不同于传统的IP报文的转发,DHCP中继在接收到了DHCP的请求或者应答报文之后,会修改报文的格式并生成一个新的DHCP报文再进行转发。

1.3 DHCP租期和地址池

1.3.1 租期

               DHCP服务器给每个分配给客户端的IP地址定义一个使用期限,该使用期限被称为租期。在租期到期前,DHCP客户端如果仍需要使用该IP地址,可以请求延长租期;如果不需要,可以主动释放该IP地址。在没有其他空闲地址可用的情况下,DHCP服务器回把客户端主动释放的IP地址分配给其他客户端。

               DHCP服务器动态分配的所有IP地址都受租期时长的限制,不同的DHCP服务器配置的租期时长可以不同。静态分配的IP地址不受租期时长的限制,使用期限为无限长。

               DCHP客户端不会等到租期到期后再申请IP地址,这样回导致IP地址被服务器回收回去,然后分配给其他客户端。为保证能够使用原来的IP地址,客户端回再租期到期的某个时间点(时间到了50%进行续租(单播);时间到了87.5%进行重绑定(广播) )就开始申请延长租期。

1.3.2 地址池

               地址池指的是DHCP服务器可以为客户端分配的所有IP地址的集合。除IP地址外,地址池内还可以配置租期,子网掩码,默认网关等网络参数。在DHCP服务器为客户端分配IP地址时,这些网络参数也一并分配给客户端。例如:

根据创建方式的不同,地址池可以分为基于接口方式的地址池和基于全局方式的地址池。

  • 基于接口方式的地址池:在DCHP服务器与客户端相连的接口上配置IP地址,地址池是跟此接口地址所属同一网段的IP地址,且地址池只能分配给此接口下的客户端。这种配置方式简单,仅适用于DHCP服务器与客户端在同一网段的场景。(二层的设备,基本上都是使用基于vlanif逻辑接口的地址池,创建一个ip pool,将网关指定为该逻辑接口的ip)

  • 基于全局方式的地址池:在全局配置配置模式下创建指定网段的地址池,且地址池中地址可以分配给设备所有接口下的的客户端。

DHCP服务器依据是否部署DHCP中继来选择地址池。无DHCP中继场景下,DHCP服务器选择与接收DHCP请求报文的接口IP地址处于同一网段的地址池。在有DHCP中继场景下,DHCP服务器选择与DHCP请求报文中的giaddr字段(标识客户端所在网段)位于同一网段的地址池。

1.4 DHCP报文

1.4.1 DHCP报文类型

               DHCP服务器与DHCP客户端之间通过DHCP报文进行通信。DHCP报文是基于UDP协议传输的。DHCP客户端采用68号端口号服务器采用67号端口号。目前DHCP定义了8中类型的报文。

Message Name

Description

DHCP Discover

DHCP客户端首次登录网络时进行DHCP交互过程发送的第一个报文,用来寻找DHCP服务器。

DHCP Offer

DHCP服务器用来响应DHCP Discover报文,此报文携带了各种配置信息。

DHCP Request

此报文有3个用途:

客户端初始化之后,发送广播的DHCP Request报文来回应服务器的DHCP Offer报文。

客户端重启之后,发送广播的DHCP Request报文来确认先前被分配的IP地址等配置信息。

当客户端已经和某个IP地址绑定之后,发送DHCP Request单播(时间过了50%)或广播(时间过了87.5%)来更新IP地址的租约。

DHCP Ack

服务器对客户端的DHCP Request报文的确认响应报文,客户端收到此报文之后,才可以真正使用获取了的IP地址和相关的配置信息。

DHCP Nak

服务器对客户端的DHCP Request报文的拒绝响应报文,例如DHCP服务器收到了DHCP Request报文(续租)之后,没有找到对应的租约记录,则发送DHCP Nak报文作为应答,告知DHCP客户端无法分配合适的IP地址。

DHCP Decline

当客户端发现服务器分配给它的IP地址发送冲突时会通过发送此报文来通知服务器,并且会重新向服务器神奇地址。

DHCP Release

客户端可通过发送此报文主动释放服务器分配给它的IP地址,当服务器收到此报文之后,可将这个地址分配给其它的客户端。

DHCP Inform

DHCP客户端获取IP地址后,如果需要向DHCP服务器获取更为详细的配置信息(网关信息、DNS服务器地址),则向DHCP服务器发送DHCP Inform请求报文。

1.4.2 DHCP报文格式

               DHCP报文格式是在BOOTP报文格式的基础上发展而来的,因此,DHCP服务器支持与BOOTP客户端之间进行交互。报文格式如下:

DHCP报文中各个字段的含义:

Field

Length (Byte)

Description

op (op code)/

Message type

1

表示报文的类型,取值为1或2,含义如下:

  • 1:客户端请求报文
  • 2:服务器响应报文

htype (hardware type)

1

表示硬件类型。不同的硬件类型取值不同,最常见的值为1,表示以太网。

hlen (hardware address length)

1

表示硬件地址长度,以太网的值为6(mac地址长度为6 Bytes,48 bits)

hops

1

表示当前的DHCP报文经过DHCP中继的数目。该字段由客户端或则服务器设置为0,每经过一个DHCP中继时,该字段加1.此字段是限制DHCP报文所经过的DHCP中继数目。服务器和客户端之间的DHCP中继数目不能超过16个,也就是Hops值不能大于16,否则DHCP报文将被丢弃。

xid(Transaction ID)

4

“Transaction ID“事务标识,由DHCP客户端选取的随机数,用于标识一个DHCP事务的唯一性即DHCP客户端和服务器之间的交互过程的唯一标识。

secs (Seconds elapsed)

2

表示客户端从开始获取地址或地址续租更新后所用的时间,单位是秒。

Bootp flags

2

表示标志字段。只有标志字段的最高位才有意义,其余的15位均被置为0。最高位被解释为单播或者广播响应标志位,内容如下所示:

  • 0:客户端请求服务器以单播形式发送响应报文。
  • 1:客户端请求服务器以广播形式发送响应报文。

ciaddr (Client IP address)

4

表示客户端的IP地址。可以是服务器分配给客户端的IP地址或者客户端已有的IP地址。客户端在初始化状态时没有IP地址,Discover报文中此字段为0.0.0.0

续约的Request报文中,该字段可填充之前分配的IP地址

IP地址0.0.0.0仅在DHCP通信时允许主机暂时使用并不是有效的目的地址

yiaddr (your client IP address)

4

表示服务器分配给客户端的IP地址。当服务器进行DHCP响应时(Offer和Ack),将分配给客户端的IP地址填入此字段。

siaddr (Next server ip address)

4

DHCP客户端获得启动配置信息DHCP的服务器的IP地址。

giaddr (gateway IP address / Relay agent IP address)

4

表示第一个DHCP中继的IP地址。当客户端发出DHCP请求时,如果服务器和客户端不在同一个网段,那么第一个DHCP中继在将DHCP请求报文转发给DHCP服务器时,会把自己的IP地址填入此字段,DHCP服务器会根据此字段来判断出客户端所在的网段地址,从而选择合适的地址池,为客户分配该网段的IP地址。

服务器还会根据此地址将响应报文发送给此DHCP中继,再有DHCP中继将此报文转发给客户端。

若在到达DHCP服务器前经过多个DHCP中继,该字段作为客户端所在的网段的标记,填充了第一个DHCP中继的IP地址后不再变更,只是每经过一个DHCP中继,hops字段的数值都会+1。

若DHCP客户端和DHCP服务器在同一个网段之内,则该字段为0.0.0.0。

chaddr (client hardware address)

16

表示客户端的MAC地址,此字段与前面的“hardware type”和“hardware length”保持一致。当客户端发出DCHP请求时,将自己的硬件地址填入此字段。对于以太网来说,“hardware typ和“hardware length”分别是“1”和“6”时,此字段必须填入6字节的以太网MAC地址。

sname (server host name)

64

表示客户端获取配置信息的服务器名称,此字段由DHCP服务器填写,是可选的。如果填写,必须是一个以0结尾的字符串。

Boot file (file name)

128

表示客户端需要获取的启动配置文件名。此字段由DHCP服务器填写,随着DHCP地址分配的同时下发至客户端。此字段是可选,如果填写,必须是一个以0结尾的字符串。

options

variable

表示DHCP的选项字段,最多为1200字节。DHCP通过此字段包含了DHCP报文类型,服务器分配给终端的配置信息,如网关IP地址,DNS服务器的IP地址,客户端可以使用IP地址的有效租期等信息。

1.4.3 DHCP Options字段

               DCHP报文中的Options字段用来存放分配给DHCP客户端的控制信息和参数,位于DHCP报文末尾的options字段。Options字段由Type、Length和Value三部分组成。

Options各字段的含义:

Field

Length

Description

Type

1 Byte

表示信息类型

Length

1 Byte

表示后面信息内容的长度

Value

其长度为Length指定

表示信息内容

DHCP Options选择的取值范围为1~255。Options选项包括定义选项和用户自定义选项。部分Options字段说明如下:

Options Num

Options function

1

设置子网掩码选项。

3

设置网关地址选项。

4

设置时间服务器地址选项。

6

设置DNS服务器地址选项。

7

设置日志服务器地址选项。

12

设置DHCP客户端的主机名选项。

15

设置域名后缀选项。

17

设置根路径选项。

28

设置组播地址选项。

33

设置静态路由选项。该选项中包含一组分类静态路由(即目的地址的掩码固定为自然掩码,不能划分子网),客户端收到了该选项之后,将在路由表中添加这些静态路由。如果存在Option121,则忽略该选项。

42

设置NTP服务器地址选项。

43

设置厂商自定义选项。

44

设置NetBios服务器选项。

46

设置NetBios节点类型选项。

50

设置请求IP地址选项。

51

设置IP地址租约时间选项。

52

设置Option附加选项。

53

设置DHCP消息类型。

54

设置服务器标识。

55

设置请求选项列表。客户端利用该选项指明需要从服务器获取哪些网络配置参数。该选项内容为客户端请求的参数对应的选项值。

56

设置消息选项,用于描述地址分配失败的原因。一下DHCP报文的Option选项字段会封装该选项:

  • DHCP服务器发送的Nak报文
  • DHCP客户端发送的Decline报文或Release报文
  • DHCP中继探测到地址冲突时,发送的Decline报文;或者主动释放地址时,发送的Release报文
  • DHCP Snooping设备主动释放地址时,发送的Release报文

58

设置续约T1时间,一般是租期时间的50%。

59

设置续约T2时间,一般是租期时间的87.5%。

60

设置厂商分类信息选项,用于标识DHCP客户端的类型和配置。

61

设置客户端标识选项。

66

设置TFTP服务器名称选项,用来指定为客户端分配的TFTP服务器的域名。

67

设置启动文件名选项,用来指定为客户端分配的启动文件名。

77

设置用户类型标识。

120

设置SIP服务器IP地址选项。

121

设置无分类路由选项。该选项中包含一组无分类静态路由(即目的地址的掩码为任意值,可以通过掩码来划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。

129

设置呼叫服务器地址选项。

184

保留选项,用户可以自定义选项中携带的信息。

1.4.4 中继代理信息选项(Option82

               Option82称为中继代理信息选项,该选项记录了DHCP客户端的位置信息。DHCP中继或DHCP Snooping设备收到了DHCP客户端发送给DHCP服务器的请求报文之后,在该报文中添加Option82,并转发给DHCP服务器。

               管理员可以从Option82中获得DHCP客户端的位置信息,以便定位DHCP客户端,实现对客户端的安全和计费等控制。支持Option82的服务器还可以根据该选项的信息制定IP地址和其他参数的分配策略,提供更加灵活的地址分配方案。

               Option82最多可以包含254个子选项。若定义了Option82,则至少定义一个子选项。目前设备支持的子选项(华为):

sub-option1(Agent Circuit ID Sub-option)

sub-option2(Agent Remote ID Sub-option)

sub-option5(Link-selection Suboption)

sub-option6(Subscriber-ID Suboption)

sub-option9(Vendor-Specific Information Suboption)

Chapter 2 DHCP交互原理

2.1无中继场景时DHCP客户端首次接入

只有跟DHCP客户端在同一个网段的DHCP服务器才能收到DHCP客户端广播的DHCP Discover报文。当DHCP客户端与DHCP服务器不在同一个网段的时候,必须部署DHCP中继来转发DCHP客户端和DHCP服务器之间的DHCP报文。

               在没有部署DHCP中继的场景下,首次接入网络DHCP客户端与DHCP服务器交互的流程如下:

2.1.1 发现阶段

               PC的网卡设置了通过DHCP的方式自动获取IP地址等信息,当该网卡启动后,首次接入网络的PC并不知道DHCP服务器的IP地址,所以为了学习到DHCP服务器的IP地址,PC从网卡以广播的方式发送出一个DHCP Discover报文(目的IP地址为255.255.255.255),给同一个网段内的所有设备(包括DHCP服务器或中继)。DHCP Discover报文中携带了PC客户端的MAC地址(chaddr字段)、需要请求的参数列表选项(Option55)、广播标志位(flags字段)等信息。

               通常情况下,如果DHCP客户端是PC的话,需要请求的参数列表Option55中所需要请求的参数就会比较多:

               而如果DHCP客户端是ONU的话,那么它请求的参数列表Option55中所需要请求的参数就会少一些。广播标志位为0的话,表示希望DHCP服务器使用单播形式回复Offer报文。

2.1.2 提供阶段

               与DHCP客户端位于同一网段的DHCP服务器都会收到这个DHCP Discover报文,DHCP服务器选择跟接收DHCP Discover报文接口的IP地址处于同一网段的地址池,并且从中选择一个可用的IP地址,然后通过DHCP Offer报文发送回给PC。

               通常,DHCP服务器的地址池会指定IP地址和租期,如果DHCP 客户端发送的DHCP Discover报文中携带了期望租期,服务器会将客户端请求的期望租期与其指定的租期进行比较,选择其中时间较短的租期分配给客户端。

               DHCP服务器在地址池中为客户端分配IP地址的顺序如下:

  1. DHCP服务器上已配置的与客户端MAC地址静态绑定的IP地址。
  2. 客户端发送的DHCP Discover报文中Option50(请求IP地址选项)指定的地址。
  3. 地址池内查找“Expired”状态的IP地址,即曾经分配给客户端的超过的租期的IP地址。
  4. 在地址池内随机查找一个“Idle”状态的IP地址。
  5. 如果未找到可供分配的IP地址,则地址池依次自动回收超过租期的(“Expired”状态)和处于冲突状态(“Conflict”状态)的IP地址。回收后如果找到可用的IP地址,则进行分配;否则DHCP客户端等待应答超时后,重新发送DHCP Discover报文来申请IP地址。

               设备支持在地址池中排除某些不能通过DHCP机制进行分配的IP地址。例如,客户端所在网段已经手工配置了地址为192.168.130.110/24的DNS服务器。DHCP服务器上配置的网段为192.168.130.0/24的地址池需要将192.168.130.110的IP地址排除,不能通过DHCP分配此地址,否则会造成地址冲突。为了防止分配出去的IP地址跟网咯中其他客户端的IP地址冲突,DHCP服务器在发送DHCP Offer报文前通过源地址为DHCP Server的IP地址、目的地址为预分配出去的IP地址的ICMP Echo Request报文对分配的IP地址进行地中冲突探测。如果在指定时间内没有收到应答报文,表示网络中没有客户端使用IP地址,可用分配给客户端。如果在指定时间内收到了应答报文,表示网络中已经存在使用此IP地址的客户端。,则把此地址列为冲突地址,然后重新按照优先顺序重新选择可用的IP地址。

               此阶段DHCP Server分配给Client的IP地址不一定能够是最终的使用IP地址,因为DHCP Offer报文发送给客户端等待16s后如果没有收到Client的响应,此地址就可以继续分配给其他客户端。通了选择极端和确认阶段后才能最终确定客户端可用使用的IP地址。

2.1.3 选择阶段

               如果有多个DHCP服务器向DHCP客户端回应DHCP Offer报文,则DHCP客户端一般只接收第一个收到的DHCP Offer报文,然后以广播方式发送DCHP Request报文,该报文中包含客户端想要选择的服务器标识符(Option54)和客户端IP地址(Opiton50,填充了接收的DHCP Offer报文中的yiaddr字段的IP地址)。例如DHCP Offer在Your (Client) IP address 中填写了分配给PC的客户端的IP地址(192.168.130.54)之后。

PC在选择阶段回复Request消息中便会在Option50中确认自己要的IP地址(192.168.130.54),在Option54中选择了要这个IP地址为192.168.130.252这个DHCP Server分配给我的IP。

               DHCP客户端广播发送DHCP Request报文通知所有的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,其他DHCP服务器可以重新将曾经分配给客户端的IP地址分配给其他客户端。

2.1.4 确认阶段

               当服务器收到DHCP客户端发送的DHCP Request报文之后,DHCP服务器回应DHCP Ack报文,表示DHCP Request报文中请求的IP地址(Option50填充的)分配给客户端使用。

               DHCP客户端收到DHCP Ack报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址,如果在指定时间内没有收到回应,表示客户端可以使用此地址。如果收到了回应,说明有其他终端使用了此地址,客户端会向服务器发送DHCP Decline报文,并重新向服务器请求IP地址,同时,服务器会将此地址列为冲突地址。当服务器没有空闲地址可分配时,才会再选择冲突地址进行分配。

               当DHCP服务器收到DHCP客户端发送的DHCP Request报文之后,如果DHCP服务器由于某些原因(例如协商出错或者由于Request请求发送过慢导致Server已经将此地址分配给其他客户端)无法分配DHCP Request报文中Option50中填充的IP地址时,则发送DHCP Nak报文作为应答,通知DHCP 客户端无法分配此IP地址。DHCP客户端需要重新发送DHCP Discover报文来申请新的IP地址。

2.2 有中继场景时DHCP客户端首次接入

               有DHCP中继的场景中,首次接入网络的DHCP客户端和服务器的工作原理与无中继的时候相同。差异体现在,DHCP中继在DHCP服务器和DHCP客户端之间转发DHCP报文,以保证DHCP服务器和DHCP客户端可以正常交互。

2.2.1 发现阶段

DHCP Delay接收到了DHCP Client广播发送的DHCP Discover报文之后,进行了如下处理:

  1. 检查DHCP报文中Hops字段,如果大于16,则丢弃DHCP报文;否则,将Hops字段+1(表明经过了一次中继)。
  2. 检查DHCP报文中的giaddr字段(Relay agent IP address)。如果是0,将giaddr字段设置为接收DHCP Discover报文的接口IP地址。如果不是0,则不修改该字段。
  3. 将DHCP报文的目的IP地址改为DHCP服务器或下一跳中继的IP地址,源地址改为中继键列客户端的接口地址,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继。

如果DHCP Client和DHCP Server之间存在多个DHCP中继,后面的中继接收到了DHCP Discover报文与上述的处理流相同。

2.2.2 提供阶段

               DHCP服务器接收到DHCP Discover报文之后,选择与报文中giaddr字段为同一网段的地址池,并为客户端分配IP地址等参数,然后向giaddr字段标识的DHCP中继单播发送DHCP Offer报文。

               DHCP Relay收到了DHCP Offer报文之后,会进行以下处理:

  1. 检查报文中的giaddr字段,如果不是接口的地址,则丢弃该报文;否则,继续下面操作
  2. DHCP中继检查报文的广播标志位,如果广播标志位为1,则将DHCP Offer报文广播发送给DHCP客户端;否则将DHCP Offer报文单播发送给DHCP 客户端。

2.3 DHCP Client重用曾经使用过的IP

               DHCP客户端非首次接入网络时,可以重用曾经使用过的IP地址。DHCP客户端与DHCP服务器交互DCHP报文,以重新获取之间使用的IP地址等网络参数,该过程称之为两步交互。

  • 选择阶段:

               客户端广播发送包含前一个分配的IP地址的DHCP Request报文,报文中的Option50(请求的IP地址选项)字段填入曾经使用过的IP地址。

  • 确认阶段:

               DHCP服务器收到DHCP Request报文之后,根据DHCP Request报文中携带的MAC地址来查找有没有相应的租约记录,如果有则返回DHCP Ack报文,通知DHCP客户端可以继续使用这个IP地址。否则,继续保持沉默,等待客户端重新发送DHCP Discover报文请求新的IP地址。

2.4 DHCP客户端更新租期

               DHCP Server采用动态分配机制给客户端分配IP地址时,分配出去的IP地址有租期限制。DHCP客户端向服务器申请地址时可以携带期望租期,服务器在分配租期时把客户端期望租期和地址池中租期配置比较,分配其中一个较短的租期给客户端。租期到期或者客户端下线释放地址(不同网卡的策略不一样,有些下线后不会主动释放IP)后,服务器会收回该IP地址,收回的IP地址可以继续分配给其他客户端使用。这种机制可以提高IP地址的利用率,避免客户端下线之后IP地址继续被占用。如果DHCP 客户端希望继续使用该地址,需要更新IP地址的租期(如延长IP地址租期)。

  1. 当租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP Request报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP Ack报文,则租期更新成功(即租期从0开始计算);如果收到了DHCP Nak报文,则重新发送DHCP Discover报文请求新的IP地址。
  2. 当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DCHP客户端会自动以广播的方式向DHCP服务器发送DCHP Request报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP Ack报文,则租期跟新成功(即租期从0开始计算);如果收到DHCP Nak报文,则重新发送DHCP Discover报文请求新的IP地址。
  3. 如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP Discover报文请求新的IP地址。

客户端在租期时间到之前,如果用户不想使用分配的IP地址(例如客户端网络位置需要变更),会触发DHCP客户端向DHCP服务器发送DHCP Release报文,通知DHCP服务器释放IP地址的租期。DHCP服务器会保留这个DHCP客户端的配置信息,将IP地址列为曾经分配过的IP地址中,以便后续重新分配给该客户端或其他客户端。客户端可以通过发送DHCP Inform报文向服务器请求更新配置信息。

               部署DHCP中继后,更新租期如下:

Chapter 3 DHCP Snooping

3.1 DHCP Snooping简介

               DHCP Snooping是DHCP(Dynamic Host Configuration Protocol)的一种安全特性,用于保护DHCP客户端从合法的DCHP服务器获取IP地址,并记录DHCP客户端的IP地址与MAC地址等参数的对应关系,防止网络中针对DHCP的攻击,为用户提供更加安全的网络环境。

               网络中针对DHCP的攻击有,DHCP Server仿冒者攻击、DHCP Server的拒绝服务攻击、仿冒DHCP报文攻击等。为了保证网络通信业务的安全性,通过DHCP Snooping技术在DHCP客户端和DHCP服务器之间建立一道“防火墙”。所以DHCP Snooping被视为DHCP的一种安全特性,基本的功能之一就是确保DHCP客户端从可信任的DHCP服务器获取合法的IP地址等信息。在二层设备上对应的VLAN内开启了DHCP Snooping之后,二层设备的接口将存在两种端口角色:

  • 信任接口:信任接口允许接收包括DHCP Offer报文在内的服务器应答报文
  • 非信任接口:非信任接口不会接收包括DHCP Offer、DHCP Ack、DHCP Nak等在内的服务器应答报文

3.2 DHCP Snooping原理

               开启DHCP Snooping功能的设备将DHCP客户端的DHCP报文请求通过信任接口发送给合法的DHCP服务器。开启DHCP Snooping功能的设备会根据DHCP服务器回应的DHCP Ack报文信息生成DHCP Snooping绑定表。然后,设备从开启了DHCP Snooping功能的接口接收DHCP客户端发来的DHCP报文时,会进行匹配检查,防范非法用户的攻击。

3.2.1 DHCP Snooping信任功能

DHCP Snooping的信任功能,能够保证客户端从合法的服务器获取IP地址。

               如果网络中存在私自架设的DHCP Server仿冒者,则可能导致DHCP客户端获取错误的IP地址和网络配置参数,无法正常通信。DHCP Snooping信任功能可以控制DHCP服务器应答报文的来源,以防止网络中可能存在的DHCP Server仿冒者为DHCP客户端分配IP地址及其他配置信息。

               DHCP Snooping信任功能将接口分为信任接口和非信任接口:

  • 信任接口:信任接口正常接收服务器应答报文包括DHCP Offer、DHCP Ack、DHCP Nak报文。
  • 非信任接口:非信任接口不会接收服务器应答报文包括DHCP Offer、DHCP Ack、DHCP Nak 报文。

               在二层网络接入设备使能DHCP Snooping场景中,一般将于合法DHCP服务器直接或者间接连接的接口设置为信任接口(如interface3),其他接口设置为非信任接口(interface1,2,4)。DHCP客户端发送的DHCP请求报文仅能从信任接口转发出去,从而保证了DHCP客户端只能从合法的DHCP服务器获取IP地址,私自假设的DHCP Server仿冒者无法为DHCP客户端分配IP地址。

3.2.2 DHCP Snooping绑定表

               在典型的DHCP场景中,连接在二层接入设备的Client配置为自动获取IP地址。Client作为DHCP客户端通过广播形式发送DHCP请求(Request)报文,使能了DHCP Snooping功能的二层接入设备将其通过信任接口转发给DHCP服务器。最后DHCP服务器将含有IP地址信息的DHCP Ack报文通过单播的方式发送给Client。在这个过程中,二层接入设备收到DHCP Ack报文之后,会从该报文中提取关键信息(包括Client的MAC地址以及获取到的IP地址、地址租期),并获取与Client连接的使能了DHCP Snooping功能的接口信息(包括接口编号以及该接口所属的VLAN),根据这些信息生成DHCP Snooping绑定表。以Client1为例,二层设备会从DHCP Ack报文中提取到IP地址信息为10.0.0.2,Mac地址信息为Mac_A。再获取与Client连接的接口信息为interface2,根据这些信息生成一条DHCP Snooping绑定表项。

               DHCP Snooping绑定表根据DHCP租期进行老化或根据用户释放IP地址时发出的的DHCP Release报文自动删除对应表项。

               由于DHCP Snooping绑定表记录了DHCP客户端的IP地址与MAC地址等参数的对应关系,故通过对报文与DHCP Snooping绑定表进行匹配检查,能够有效防范非法用于的攻击。

               为了保证设备在生成DHCP Snooping绑定表时能够获取到用户MAC等参数,DHCP Snooping功能需应用于二层网络中的接入设备或第一个DHCP Relay上。

               在DHCP中继使能DHCP Snooping场景中,DHCP Relay设备不需要设置信任接口。因为DHCP Relay收到DHCP请求报文后进行源目的IP、MAC转换处理,然后以单播形式发送给指定的合法DHCP服务器,所以DHCP Relay收到的DHCP Ack报文都是合法的,生成的DHCP Snooping绑定表也是正确的。

Chapter 4 Option82

4.1 概述

               在传统的DHCP动态分配IP地址的过程中,DHCP服务器无法根据DHCP请求报文获得DHCP客户端的具体物理位置,导致在同一VLAN中DHCP客户端对IP地址的权限是完全相同的。由于网络管理员不能控制同一VLAN中特定的DHCP客户端对网络资源的访问,网络的安全控制将会受到威胁。

               RFC 3046定义了DHCP Relay Agent Information Option(Option82),用来记录DHCP客户端的位置信息。DHCP Snooping设备或DHCP Relay通过在DHCP请求报文中添加Option82选项,将DHCP客户端的精准位置信息发送给DHCP服务器,从而使得DHCP服务器能够为DHCP客户端分配合适的IP地址和其他配置信息,实现对DHCP客户端的安全控制。

               Option82包含两个常用子选项Circuit ID和Remote ID,Circuit ID用来标识客户端所在的VLAN,接口等信息,Remote ID用来标识客户端接入的设备,一般为设备的MAC地址。

               当设备作为DHCP Relay时,开启或关闭DHCP Snooping功能都可以支持Option82选项功能。但是,如果设备在二层网络中作为接入设备时,必须开启DHCP Snooping功能才可以使用Option82的功能。

4.2 实现

               设备作为DHCP Relay或设备在二层网络作为接入设备并使能DHCP Snooping功能时均可支持Option82功能。使能设备的Option82功能有Insert和Rebuild两种方式,使能方式不同设备对DHCP请求报文的处理也不同。

  • Insert方式:当设备收到DHCP请求报文时,若该报文中没有Option82选项,则插入Option82选项;若该报文中含有Option82选项,则判断Option82选项中是否含有remote-id,如果包含,则保持Option82选项不变,如果不包含,则插入remote-id。
  • Rebuild方式:当设备收到DHCP请求报文时,若该报文中没有Option82选项,则插入Option82选项;若该报文中含有Option82选项,则删除该Option82选项并插入管理员自己在设备上配置的Option82选项。

对于Insert和Rebuild两种方式,当设备收到DHCP服务器的响应报文时,处理方式一致。

  • DHCP响应报文中有Option82选项:
  • 如果设备收到了DHCP请求报文中没有Option82选择,则设备将删除DHCP响应报文中Option82选项,之后转发给DHCP Client。
  • 如果设备收到了DHCP请求报文中有Option82选项,则设备将DHCP响应报文中的Option82选项格式还原成DHCP请求报文中的Option82选项,之后转发给DHCP Client。
  • DHCP响应报文不含有Option82选项:直接转发。
  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值