






DHCP全局配置配置


按照拓扑,具体配置如下
①配置vlan1地址

②启用DHCP服务
S1]dhcp enable

③配置地址池
根据企业内部需求配置,先定义地址池名字,这里我取名为dis1

根据需求定义地址池的地址段和掩码
[S1-ip-pool-dis1]network 10.0.1.0 mask 24

定义网关 (不定义网关如何上网呢)
[S1-ip-pool-dis1]gateway-list 10.0.1.1
定义DNS地址:pool-dis1]dns-list 223.5.5.5


④接口下启用DHCP
在vlan接口模式下[S1-Vlanif1]dhcp select global

在客户端上启用DHCP功能,并抓取s1的G0.0.1端口

在客户端上查看IP地址

在客户端上Ping 交换机网关


DHCP报文分析
DHCP报文四部曲,如图所示:


dhcp discover---发现阶段
客户端由于启用了DHCP功能,就会不停的发DHCP discover发现报文,作用在于在同一网络中寻找DHCP服务器。
dhcp 发现报文的中的源IP 0.0.0.0(任意地址) 目标IP 255.255.255.255 广播地址

dhcp 发现报文的中的源mac地址是客户端自己,目标mac地址是全F (广播地址)这是符合逻辑关系的。

在抓取的报文中发现,在discover之后出现了一个ARP报文,这个报文是DHCP服务器发出的。(4c1f-cccf-41a9)
观察这个ARP报文,源地址是 10.0.1.1网关地址
原因在于当服务器收到客户端发来的discover报文,准备发送10.0.1.254这个地址,但是DHCP服务器不知道客户端对于这个地址是否有冲突!因此,DHCP发送一个ARP检测报文,若是网络中有这个地址将会回应,那么这个新分配的地址会被作废!

DCHP OFFER--请求阶段

对于这个报文要站在DHCP服务器的角度上去考虑,当DHCP服务器收到discover报文后,在地址池中选择未用的IP地址提供给客户端。
从报文中可以看到提供的IP地址是10.0.1.254

dhcp request 选择报文

对于这个报文要站在客户端上,何为选择,选择的不单单是 IP地址,还可以选择DHCP服务器。
在DHCP协议中规定,客户端在收到多个offer报文,以第一个收到的为准!

当然,DHCP requst的报文还有一个双重选择含义的功能,避免了地址池的浪费,此环节下,用户现在是没有IP地址的!

既然有request有双重含义,能发给多个DHCP服务器,从报文中可以看到,该报文属于广播报文。一是告诉确认使用和未使用。
此处有一个逻辑上的疑惑:既然offer已经提供了地址,客户端已经确认要使用了,为何rquest里的源地址还是0.0.0.0?因为要顾及静态IP地址冲突。

DCHP服务器收到request报文,查看其中携带的mac地址是否存在租约时间,若是有就给予客户端确认的地址信息,没有就不确认
主要是三层无信息导致要在二层封装中寻找源mac地址,从而对应客户端。

其中request中包含了要给的网关,客户端IP等信息

DHCP的ack报文---确认阶段
比对request报文中的mac地址,查看租约,后是否确认,其中里面携带了很多地址的参数,如图所示:
DHCP四部曲工作原理到此结束

ack报文信息发送完毕后,我们可以看到还有两个无故arp报文的出现,原因在于探测局域网中有没有和自己地址冲突!这个报文是由客户端发送!无故ARP的特征就是源和目标地址都是自己

同理,跟DHCP服务器发ARP目的是一样的

Bootstrap(引导程序)协议字段含义

1代表了客户端发起 2代表了服务端发起

硬件类型

硬件地址长度 6个字节

经历了多少个DHCP中继,华为官方规定,DHCP中继最大为16,超过后丢弃。

这个字段有着DHCP服务器回复和客户端请求对应的作用,在discover中就已经被标注

Sceonds 客户端开始获取地址到目前所用的时间

bootp flages 的字段中,一共有16个比特位,高位变为0代表了客户端要求服务器以单播的形式发送回应报文;高位变为1要求以组播形式发送

Cleant IP 客户端的IP地址

Your client IP 服务器准备给客户端的地址

Next server ip 下一个查找的DHCP服务器地址
Relay agent ip 最后一个经历过DHCP中继的地址
ser hostname 服务器的主机名

Option DCHP可选字段,每个option代表了不同的含义,也是一个单独的个体。

除了报文4部曲外,DHCP一共8种报文:

NAK报文,表示DHCP服务器拒绝响应客户端请求
DHCP release 客户端主动释放服务器分配的IP地址 演示
在客户端上执行PC>ipconfig /release
和renew(重新获取)有一些区别

这个报文的意思就是一旦客户端释放地址,DHCP就会将option50里的地址回收


基于接口DHCP配置演示
用的没有全局场景广泛。

先清一下之前的配置<S1>reset saved-configuration

按照之前的拓扑
开启dhcp功能S1]dhcp enable
指定dhcp方式[s1-Vlanif1]dhcp select interface

定义dhcp服务域名[s1-Vlanif1]dhcp server domain-name dis1.com

配置完成


回到全局配置中

修改租约时间,默认租约时间是24小时,这里我修改了租约时间为5天
[S1-ip-pool-dis01]lease day 5 hour 0 minute 0

在企业内网中存在这服务器,有一些IP地址固定地被服务器所使用,管理员通常不希望这些地址被分配出去。
这里举例为10.0.1.2到10.0.1.20这些地址不分配
[S1-ip-pool-dis01]excluded-ip-address 10.0.1.2 10.0.1.20
或者你定义了网关地址自动排除这个网关地址


在企业内网中存在不同的vlan,那么这样分布的客户端如何配置?拓扑如下

先建立vlan,并加入端口

在vlan2和vlan3下配置 全局的dhcp方式
[S1-Vlanif2]dhcp select global
[S1-Vlanif3]dhcp select global

针对不同的vlan建立不同的地址池


最终每个vlan下的客户端获得地址


DHCP负载均衡配置

基础DHCP配置不在讲解
两个DHCP服务器划分不同的地址池,并且vlan1下 全局使能。


互相指向对方的地址
[S1-ip-pool-dis01]next-server 10.0.100.1
[DHCP2-ip-pool-dis0100]next-server 10.0.1.1


通过客户端获取到的IP地址,能知道是谁提供的

在不停的renew下,客户端获取到了来自不同DHCP服务器的分配地址,获取到的地址是一边取一次的规律

在实际的的企业组网中,应该是同一个网络内的负载均衡,

这里只需要改一下地址池里的地址和next server
别忘记在vlan1下使能全局的DHCP



最终客户端获取地址,形成了DHCP的负载均衡,从DNS和网关地址不同可以分辨


DHCP中继

DHCP中继试验拓扑

具体配置如下:
二层交换中创建vlan1,vlan2,vlan10,连接的客户端的端口设置成access;机联口设置成trunk;
三层交换上创建 vlan 10;15号口设置成trunk;19号口设置成access,并加入到vlan10中; 并且vlan1 vlan2 vlan10 启用三层vlanif接口。
DCHP服务器上创建 vlan10 ; 创建vlan10的地址;19号口设置成access并加入到vlan10中;以上三步为基础配置,不在分享。
DHCP服务器上部署
开启dhcp服务
dhcp enable
配置地址池
[DHCP]ip pool dis001

[DHCP]ip pool dis002

在vlan10下指定 dhcp的全局模式

到此为止,DHCP基本配置就结束了
但是,我们来看下通讯
由于s1启用 vlan1. vlan2 . vlan10的三层接口。PC1和pc2双方的可以互相通讯(pc1.2目前是静态IP)

客户端到DHCP服务器通讯出现了问题,涉及到了路由技术

需要在dhcp服务器上设置一个回程的静态路由即可
[DHCP]ip route-static 0.0.0.0 0.0.0.0 10.0.10.1

双方通讯正常

目前,所有客户端都能够与DHCP服务器取得通讯。

接下来解决三层不转发广播的问题(DHCP_discove属于广播)-----DHCP中继:将广播转发成单播。
在不配置DHCP中继前,分别抓取三层交换机的G0/0/15和19号端口,客户端采用DHCP方式获取,观察目前的报文情况
如图所示:15号端口中出现了discove报文

说明dhcp广播是无法穿越三层。
如图所示:19号端口中除了STP报文没有其他的报文。
说明dhcp广播是无法穿越三层,从拓扑中可以看到,vlan10和vlan1 2不在同一个子网中,需要转发必须要经过路由功能,路由是不转发广播的。

DHCP中继配置,针对这个拓扑图,一定要配置在三层交换上,很多人认为是在DHCP服务器上创建,这是错误的!
第一种配置方式:
现在三层交换机上开启DHCP功能
dhcp enable
在vlan1下选择 中继
[S1-Vlanif1]dhcp select relay

意思就是明确通知客户端自己不是DHCP服务器,将客户端的请求转发给真正的DHCP服务器

因为discove的报文中目标mac地址和目标ip地址都是广播和任意地址,因此,需要在三层交换机下指定谁是dhcp服务器。
[S1-Vlanif1]dhcp relay server-ip 10.0.10.188

测试客户端能够正常获取IP地址,按照配置可在vlan2下配置


第二种配置方式:(华为官方推荐)
好处在于根据dhcp server的名字,来更好的引用
也是在三层交换机上操作,先开启DHCP功能
在全局模式下启用dhcp 服务组的名字
[S1]dhcp server group dhcpzhj01

指定DHCP服务器地址
[S1-dhcp-server-group-dhcpzhj01]dhcp-server 10.0.10.188

在相关vlan下,启用dhcp中继
dhcp select relay
[S1-Vlanif2]dhcp relay server-select dhcpzhj01

华为推荐第二种方式在于当vlan众多时,只需要调用一个dhcp服务名,当dhcp服务器发生变化,只需要改组名里的地址即可






