DHCP基于接口下发IP地址(客户端与dhcp服务器在同一个子网---->中小型企业),接口地址是在网关上面配置的
DHCP基于接口下发IP地址:
R1 Server:
dhcp enable #使能dhcp功能
int g0/0/0 #进入g0/0/0接口中
ip add 172.16.12.2 24
dhcp select interface #使能dhcp是基于接口下发IP地址
含义:自动创建一个基于接口的ip pool
pool名字: 接口id(g0/0/0)
pool范围: 接口所在子网,172.16.12.0/24. 172.16.12.1,172.16.12.3-172.16.12.254
pool网关: 172.16.12.2(默认被排除)
dhcp server exclude-address 172.16.12.200 172.16.12.254
R2 client:
dhcp enable #使能dhcp功能
int g0/0/0 #进入g0/0/0接口中
ip address dhcp-alloc #配置为动态获取IP地址
针对打印机、游戏机、电视等设备,固定IP
解决方案是绑定
R2:
int g0/0/0
dhcp server static-bind ip-address 172.16.12.11 mac-address 00e0-fc05-3367
这个dhcp select有三种模式
dhcp select global #一种基于全局IP地址下发
dhcp select interface #一种基于接口下发
dhcp selete relay #还有一种基于dhcp中继下发
敲完dhcp select interface之后使用display ip pool就会有一个池子产生了
实验拓扑图

R1:
[R1]dhcp enable #全局开启dhcp服务
Info: The operation may take a few seconds. Please wait for a moment.done.
[R1]int gi0/0/0
[R1-GigabitEthernet0/0/0]dhcp select ?
global Local server #一种基于全局IP地址下发
interface Interface server pool #一种基于接口下发
relay DHCP relay #还有一种基于dhcp中继下发
[R1-GigabitEthernet0/0/0]dhcp select interface #我们选择基于dhcp接口下发IP地址
R1:
display ip pool #查看地址池
-----------------------------------------------------------------------
Pool-name : GigabitEthernet0/0/0 #这个地址池是这个接口的名字
Pool-No : 0
Position : Interface Status : Unlocked
Gateway-0 : 172.16.12.1 #网关就是接口的IP地址
Mask : 255.255.255.0 #掩码24位
VPN instance : --
IP address Statistic
Total :253 #默认从253开始下发地址,默认不下发254,它会默认把网关排除掉,分地址的时候会从172.16.12.1一直分到172.16.12.253这些IP地址
Used :0 Idle :253
Expired :0 Conflict :0 Disable :0

R2测试
[R2]dhcp enable #全局开启dhcp服务
Info: The operation may take a few seconds. Please wait for a moment.done.
[R2]int gi0/0/0
[R2-GigabitEthernet0/0/0]ip address dhcp-alloc
抓包,抓R2的G0/0/0口,也就是获取IP地址的那一个接口

首先收到一个比特流,那么我是以太口,格式化成以太帧

看以太帧里面目的地址的第七位IG位等于1,它是组播或者广播地址,它这个时候就会去看,我是不是要加组,发现是广播地址,收不收,收,收了给IPV4

把二层拆掉,让IP来读取我们的进程,来转发

读进去,会发现有源IP四个0,目的IP 255.255.255.255,收不收,收,收之后给谁,给UDP,除了全f之外,都是组播,广播就这一个全f,所以整个MAC地址要读完的,单播的话,读的第一个字节就是单播

这个时候就会给到UDP的67端口,源端口是68,PC侦听68,服务器侦听67,67<68(服务器访问客户端),68去访问67

这个时候就给到了DHCP
首先Message type不是DHCP,是Boot Request,它是封装在Bootp里面的
Hardware type是以太接口
Hardware address它的硬件地址是6个字节的MAC地址
这有个Transaction id不用管
还有这个option 53代表的是DHCP Message Type(Discover),是一个类型
option 61 Client identifier代表的是客户的ID,客户的标识,客户的标识就是01+一段MAC地址,合成了客户ID

AR1查看地址池
[R1]display ip pool interface GigabitEthernet0/0/0

[R1]display ip pool interface GigabitEthernet0/0/0 used
这个Lease是租期,默认从0开始往上加,加到24小时,也就是一天

Client MAC address: HuaweiTe_ca:73:c7 (00:e0:fc:ca:73:c7) #这个时候就获取到Client MAC address地址了

对方收到Offer报文之后,这个包里面就是67访问68,什么播,单播,分给他的单播,目的MAC这个是单播,收进来之后我们直接看DHCP了,在DHCP Offer报文里面会增加地址是172.16.12.254

在DHCP Offer报文里面会收到掩码信息,路由信息,还会增加一个DHCP Server Identifier的标识

DHCP Request里面它是广播报文,DHCP Server看到之后就会放弃掉

最后会发送一个DHCP ACK报文,发完DHCP ACK报文之后,会立马做地址冲突检测,就没问题了

添加排除地址
[R1]int gi0/0/0
[R1-GigabitEthernet0/0/0]dhcp server excluded-ip-address 172.16.12.200 172.16.12.253 #排除172.16.12.200-253地址
Warning:Some of addresses not be excluded are not idle,or not in the pool. #警告:未排除的某些地址不是空闲的,或者不在池中,配置过一次了,如果在配置一次相同的配置会出现此报错信息
[R1-GigabitEthernet0/0/0]

如果把要获取IP地址的这个接口shutdown掉,就会发送DHCP Release报文

绑定地址
R2:
查看客户的接口mac地址
[R2]display interface GigabitEthernet 0/0/0
00e0-fc05-3367

R1 DHCP服务器配置:
int gi0/0/0
dhcp server static-bind ip-address 172.16.12.11 mac-address 00e0-fc05-3367 #客户端接口下发固定IP地址,mac地址绑定的是客户的mac地址
R2测试:
int gi0/0/0
ip address dhcp-alloc
R2:display ip int brief
