DHCP

稚 发布于 2024-08-26 31 次阅读


DHCP采用C/S通信模式,协议报文基于UDP的方式进行交互,采用67(DHCP服务器)和68(DHCP客户端)两个端口号,正常工作时由客户端向服务器提出配置申请,服务器返回为客户端分配的IP地址等相应的配置信息。

DHCP报文格式

Options预定义选项字段介绍

DHCP报文中Options字段为可变长度字段,最多为312Byte,此字段包含了DHCP报文类型,服务器分配给终端的配置信息,如网关IP地址,DNS服务器的IP地址,客户端可以使用IP地址的有效租期等信息。

Options字段由Type、Length和Value三部分组成。其中Type字段取值范围1~255。常见的Options如下表所示:

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

Option 82称为中继代理信息选项。

Option 82中可以包含最多255个Sub-Option,若定义了Option 82,至少要定义一个Sub-Option。

DHCP中继或DHCP Snooping设备接收到DHCP客户端发送给DHCP服务器的请求报文后,在该报文中添加Option 82,并转发给DHCP服务器。管理员可以从Option 82中获得DHCP客户端的信息,例如DHCP客户端所连接交换机端口的VLAN ID、二层端口号、中继设备的MAC地址等。

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

▫Sub-Option 1:为代理电路id(即circuit id)子项。子选项通常在DHCP中继设备上配置,定义了在传输报文的时候要携带DHCP客户端所连接交换机端口的vlan-id及二层端口号。通常Sub-Option 1与Sub-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称为厂商特定信息选项。

DHCP服务器和DHCP客户端通过Option 43交换厂商特定的信息。当DHCP服务器接收到请求Option 43信息的DHCP请求报文(Option 55中带有Option 43参数)后,将在回复报文中携带Option 43,为DHCP客户端分配厂商指定的信息。

在WLAN组网中,AP作为DHCP客户端,DHCP服务器可以为AP指定AC的IP地址,以方便AP与AC建立连接。

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上线。即 AC与AP不在一个广播域其他设备为AP分配IP地址,此时AC与AP不在同一个网段需要指明AC的地址

|500

DHCP的消息类型

DHCP报文通过Options选项中的Type=53来表示DHCP的报文类型。当Type=53,Length=1,Value取值从01到08分别表示不同的DHCP报文类型。

Value 类型 作用
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 INFORM DHCP客户端获取IP地址后,如果需要向DHCP服务器获取更为详细的配置信息(网关地址、DNS服务器地址),则向DHCP服务器发送DHCP INFORM请求消息

DHCP客户端接入网络

HT_DHCP

DHCP客户端非首次接入网络时,可以重用曾经使用过的地址

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

DHCP分配IP地址顺序

DHCP中继

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


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中继检查报文的广播标志位。如果广播标志位为1,则将DHCP OFFER报文广播发送给DHCP客户端;否则将DHCP OFFER报文单播发送给DHCP客户端。

配置

### 全局地址池
[Huawei]ip pool pool1  创建地址池poo1

Info: It's successful to create an IP address pool.

[Huawei-ip-pool-pool1]gateway-list 10.0.12.1 设置网关为10.0.12.1

[Huawei-ip-pool-pool1]network 10.0.12.0 mask 24 设置可分配网段范围 

[Huawei-ip-pool-pool1]excluded-ip-address 10.0.12.2 10.0.12.5 剔除不参与自动分配的地址

[Huawei-ip-pool-pool1]lease day 1 hour 10 设置租期

[Huawei-ip-pool-pool1]static-bind ip-address 10.0.12.10 mac-address 5489-9811-39
D4 固定分配地址

[Huawei-GigabitEthernet0/0/0]dhcp select global  接口开启全局地址池

### 接口地址池

与全局地址池基本相同 

[Huawei-GigabitEthernet0/0/1]dhcp select interface 

[Huawei-GigabitEthernet0/0/1]dhcp server excluded-ip-address 10.0.13.10

### 中继

[Huawei-GigabitEthernet0/0/0]DHCP select relay 接口使能中继

[Huawei-GigabitEthernet0/0/0]DHCP relay  server-ip   10.0.12.1 指定DHCP服务器的地址

[R1-GigabitEthernet0/0/0]ip address DHCP-alloc 接口使用DHCP获取地址

使用组

[Huawei]DHCP server group group-name 创建组

[Huawei-DHCP-server-group-HW]DHCP-server ip-address [ ip-address-index ] 配置DHCP服务器成员

[Huawei-GigabitEthernet0/0/0]DHCP relay server-select group-name 应用组
最后更新于 2024-08-26