华为数通笔记-DHCP

DHCP背景

随着网络规模的不断扩大,网络复杂度不断提升,网络中的终端设备例如主机、手机、平板等,位置经常变化。终端设备访问网络时需要配置IP地址、网关地址、DNS服务器地址等。采用手工方式为终端配置这些参数非常低效且不够灵活。

IETF1993年发布了DHCPDynamic Host Configuration Protocol,动态主机配置协议)。DHCP实现了网络参数配置的自动化,降低客户端的配置和维护成本。

本课程介绍DHCP工作原理、应用场景和简单配置。

手工配置主机IP地址、网络掩码、网关地址、DNS服务器地址等网络参数时,需要经过地址规划、地址分配、地址配置、地址维护等复杂的操作流程。这使地址分配灵活性差,IP地址资源利用低,同时较大的工作量导致配置容易出错,对人员素质要求较高。

 

DHCP的基本概念

DHCP是一种用于集中对用户IP地址进行动态管理和配置的协议。

DHCP采用C/S(Client/Server,客户端/服务器)通信模式协议报文基于UDP的方式进行交互,采用67DHCP服务器)和68DHCP客户端)两个端口号

  • 正常工作时由客户端向服务器提出配置申请。
  • 服务器返回为客户端分配的IP地址等相应的配置信息。

DHCP相对于手工配置有如下优点:

  • 效率高
  • 灵活性强
  • 易于管理

网络终端设备,例如主机、打印机、笔记本电脑、手机和AP,作为DHCP客户端,向DHCP服务器请求分配相关网络参数。DHCP服务器响应DHCP客户端请求进行动态分配。

DHCP工作原理

DHCP客户端首次接入网络的工作原理

发现阶段,即DHCP客户端发现DHCP服务器的阶段。

  • DHCP客户端发送DHCP DISCOVER报文来发现DHCP服务器。DHCP DISCOVER报文中携带了客户端的MAC地址、需要请求的参数列表选项、广播标志位等信息。

    2. 提供阶段,DHCP服务器提供网络配置信息的阶段。

  • 服务器接收到DHCP DISCOVER报文后,选择跟接收DHCP DISCOVER报文接口的IP地址处于同一网段的地址池,并且从中选择一个可用的IP地址,然后通过DHCP OFFER报文发送给DHCP客户端。

    3. 选择阶段,即DHCP客户端选择IP地址的阶段。

  • 如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCP服务器标识符和客户端IP地址。

    4.确认阶段,即DHCP服务器确认所分配IP地址的阶段。

  • DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址。(检测是否有冲突)

在确认阶段,两种情况可能出现IP地址的冲突:

  • DHCP服务器收到DHCP DISCOVER报文时,给客户端分配IP地址前会发送Ping探测如果能Ping通则标识该地址不可用,并选择其他IP地址分配给客户端。
  • DHCP客户端获取IP地址成功后,会立即发送免费ARP报文,如果收到响应,则发送DHCP DECLINE报文通知DHCP服务器该IP地址冲突,DHCP服务器标识该地址不可用,客户端发送DHCP DISCOVER报文重新申请IP地址。

两次检测地址冲突,客户端ARP免费报文,服务端ping探测

DHCP报文格式

重要字段说明:

  • Opop code):表示报文的类型,取值为12,含义如下:
    • 1:客户端请求报。
    • 2:服务器响应报文。
  • Secsseconds):由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数,缺省值为3600s
  • Flags:客户端请求服务器发送响应报文的形式,只有最高位有意义,其余15位置0最高位为0时请求发送单播响应,最高位为1时请求发送广播响应。
  • Yiaddryour client ip address):表示服务器分配给客户端的IP地址。当服务器进行DHCP响应时,将分配给客户端的IP地址填入此字段。
  • Siaddrserver ip address):DHCP服务器的IP地址。
  • Chaddrclient hardware address):客户端的MAC地址。
  • OptionsDHCP通过此字段包含了服务器分配给终端的配置信息。
    • DHCP报文中Options字段为可变长度字段,最多为312Byte,此字段包含了DHCP报文类型,服务器分配给终端的配置信息,如网关IP地址,DNS服务器的IP地址,客户端可以使用IP地址的有效租期等信息。
    • Options字段由TypeLengthValue三部分组成。其中Type字段取值范围1~255。常见的Options如下表所示:

 

Htype hardware type: 表示硬件地址的类型

Hlenhardware length: 表示硬件地址的长度。

Hopshops: 表示当前DHCP报文经过的DHCP Relay数目该字段由客户端设置为0,每经过一个DHCP Relay时,该字段加1。此字段的作用是限制DHCP报文所经过的DHCP Relay数目。

Xid:表示DHCP客户端选取的随机数,使DHCP服务器的回复与DHCP客户端的报文相关联。

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

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

DHCP的消息类型

DHCP报文通过Options选项中的Type=53来表示DHCP的报文类型。如下图所示,Type=53Length=1Value取值从0108分别表示不同的DHCP报文类型

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

2-DHCP OFFER:DHCP服务器用来响应DHCP DISCOVER消息,此消息携带了各种配置信息。   

3-DHCP REQUEST:DHCP客户端广播请求回应DHCP服务器OFFER消息;DHCP客户端重启广播确认之前的IP地址等配置信息;续租。

4-DHCP DECLINE:当客户端发现服务器分配给它的IP地址发生冲突时会通过发送此消息来通知服务器。

5-DHCP ACK:DHCP服务器对客户端的DHCP REQUEST消息的确认响应消息。

6-DHCP NAK:服务器对客户端的DHCP REQUEST消息的拒绝响应消息

7-DHCP RELEASE客户端可通过发送此消息主动释放服务器分配给它的IP地址。

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

 

Options自定义选项字段介绍

除了标准协议中规定的字段选项外,还有部分选项内容没有统一规定,统称为用户自定义选项,例如Option 82和Option 43。

  • Option 82称为中继代理信息选项。
    • Option 82中可以包含最多255Sub-Option,若定义了Option 82,至少要定义一个Sub-Option
    • DHCP中继或DHCP Snooping设备接收到DHCP客户端发送给DHCP服务器的请求报文后,在该报文中添加Option 82并转发给DHCP服务器。管理员可以从Option 82中获得DHCP客户端的信息,例如DHCP客户端所连接交换机端口的VLAN ID、二层端口号、中继设备的MAC地址等。
  • Option 43称为厂商特定信息选项。
    • DHCP服务器和DHCP客户端通过Option 43交换厂商特定的信息。当DHCP服务器接收到请求Option 43信息的DHCP请求报文(Option 55中带有Option 43参数)后,将在回复报文中携带Option 43,为DHCP客户端分配厂商指定的信息。
    • WLAN组网中,AP作为DHCP客户端,DHCP服务器可以为AP指定ACIP地址,以方便APAC建立连接。

目前option 82中常用的Sub-Option如下:

  • Sub-Option 1:为代理id(即circuit id)子项。子选项通常在DHCP中继设备上配置,定义了在传输报文的时候要携带DHCP客户端所连接交换机端口的vlan-id及二层端口号。通常Sub-Option 1Sub-Option 2子选项要共同使用来标识DHCP源端的信息。
  • Sub-Option 2:代理远程id(即remote id)子项。该子选项也通常在DHCP中继设备上配置,定义了在传输报文的时候要携带中继设备的mac地址信息
  • Sub-Option 5:为链路选择(link selection)子项,该选项中包含了DHCP中继添加的ip地址。这样DHCP server在分配ip地址给DHCP客户端的时候就可以分配与该地址同网段的ip地址。

Option 43应用举例

在WLAN三层组网中,当AP上线时,需要获取AC的IP地址,并与AC之间建立CAPWAP隧道。

AP的IP地址通过DHCP服务器分配,当AC的IP地址与AP不在同一个广播域,AP无法通过广播的方式获取AC的IP地址,则CAPWAP隧道无法建立成功。

AP通过DHCP报文中的Option 43选项字段获取AC的IP地址,当AP获取AC的IP地址后,可以进一步完成CAPWAP隧道的建立,从而实现AP上线。

DHCP地址续租

DHCP客户端根据IP地址的剩余租期的不同而产生不同形式的续租请求。

当租期达到50%T1时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功。

当租期达87.5%T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功。

如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址重新发送DHCP DISCOVER报文请求新的IP地址。

 

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

DHCP客户端无论在T1还是T2时刻发送DHCP REQUEST报文后,如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。

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

思考:为什么每次电脑被分配的IP地址都是同一个呢?

DHCP客户端重用曾经使用过的地址

DHCP客户端非首次接入网络时,可以重用曾经使用过的地址。例如,网络中的主机作为DHCP客户端,在关机再开机的过程中,需要重新获取相关网络参数,则可以请求分配曾经使用过的IP地址。

  1. 选择阶段
    • 客户端广播发送包含前一次分配的IP地址的DHCP REQUEST报文,报文中的Option 50(请求的IP地址选项)字段填入曾经使用过的IP址。
  2. 确认阶段
    • DHCP服务器收到DHCP REQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录。如果有则返回DHCP ACK报文,通知DHCP客户端可以继续使用这个IP地址,如果没有租约记录,则不响应。

DHCP分配IP地址顺序

DHCP服务器按照如下次序为客户端选择IP地址:

  • DHCP服务器的数据库中与客户端MAC地址静态绑定的IP地址。
  • 客户端以前曾经使用过的IP地址,即客户端发送的请求报文中请求IP地址选项的地址。
  • DHCP地址池中,顺序查找可供分配的空闲IP地址,最先找到的IP地址。
  • 如果在DHCP地址池中未找到可供分配的空闲IP地址,则依次查询超过租期、发生冲突的IP地址,如果找到可用的IP地址,则进行分配,否则报告错误。

 

DHCP Relay

随着网络规模的不断扩大,网络设备不断增多,企业内不同的用户可能分布在不同的网段,一台DHCP服务器在正常情况下无法满足多个网段的地址分配需求。如果还需要通过DHCP服务器分配IP地址,则需要跨网段发送DHCP报文。

DHCP RelayDHCP中继,它是为解决DHCP服务器和DHCP客户端不在同一个广播域而提出的,提供了对DHCP广播报文的中继转发功能,能够把DHCP客户端的广播报文“透明地”传送到其它广播域的DHCP服务器上,同样也能够把DHCP服务器端的应答报文“透明地”传送到其它广播域的DHCP客户端。

DHCP Relay报文格式

DHCP Relay主要负责转发DHCP客户端与DHCP服务器之间的DHCP报文,所以DHCP Relay的报文格式只是把DHCP的报文部分字段做了相应的修改,报文格式没有发生变化,如下图所示:

Hops:表示当前的DHCP报文经过的DHCP中继的数目。该字段由客户端或服务器设置为0每经过一个DHCP中继时,该字段加1

Giaddr(gateway ip address)表示第一个DHCP中继的IP地址。当客户端发出DHCP请求时,第一个DHCP中继在将DHCP请求报文转发给DHCP服务器时,会把自己的IP地址填入此字段。

Hops字段的作用是限制DHCP报文所经过的DHCP中继数目。服务器和客户端之间的DHCP中继数目不能超过16也就是Hops值不能大于16,否则DHCP报文将被丢弃。

Giaddr字段,dhCP服务器会根据此字段来判断出客户端所在的网段地址,从而选择合适的地址池,为客户端分配该网段的IP地址。服务器还会根据此地址将响应报文发送给此DHCP中继,再由DHCP中继将此报文转发给客户端。若在到达DHCP服务器前经过了多个DHCP中继,该字段作为客户端所在的网段的标记,填充了第一个DHCP中继的IP地址后不会再变更,只是每经过一个DHCP中继,hops字段的数值会加1

DHCP Relay工作原理

有中继场景时DHCP客户端首次接入网络的工作原理:

发现阶段:DHCP中继接收到DHCP客户端广播发送DHCP DISCOVER报文后,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继

提供阶段:DHCP服务器根据DHCP DISCOVER报文中的Giaddr字段选择地址池为客户端分配相关网络参数DHCP中继收到DHCP OFFER报文后,以单播或组播方式发送给DHCP Client

选择阶段:中继接收到来自客户端的DHCP REQUEST报文的处理过程同“发现阶段”。

确认阶段:中继接收到来自服务器的DHCP ACK报文的处理过程同“提供阶段”。

 

1.DHCP中继收到DHCP DISCOVER报文后,处理规则为:

  • 检查DHCP报文中的Hops字段,如果大于16,则丢弃DHCP报文;否则,Hops字段加1(表明经过一次DHCP中继),并继续下面的操作。
  • 检查DHCP报文中的Giaddr字段。如果是0,将Giaddr字段设置为接收DHCP DISCOVER报文的接口IP地址。如果不是0,则不修改该字段,继续下面的操作。
  • DHCP报文的目的IP地址(开始为广播地址)改为DHCP服务器或下一跳中继的IP地址,源地址改为中继连接客户端的接口地址,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继。

2.DHCP服务器接收到DHCP DISCOVER报文后,选择与报文中Giaddr字段为同一网段的地址池,并为客户端分配IP地址等参数,然后向Giaddr字段标识的DHCP中继单播发送DHCP OFFER报文,DHCP中继收到DHCP OFFER报文后,会进行如下处理:

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

DHCP配置

基于全局地址池配置

基于接口配置

 

dhcp中继

DHCP Snooping

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值