暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为交换技术_DHCP的深入剖析

爱婷如命一生一世 2021-08-13
899

众所周知DHCP的出现就是为了自动分配IP地址,当然这只是最浅显的应用,配合桌面管控的软件来确保本地网络的安全。
接下来我会针对华为的网络设备对DHCP服务进入深入分析,表面看起来DHCP服务没有什么可讲的,DHCP服务说容易很容易,说难也,DHCP也是组网中不可或缺的一部分。
本章的需要分享知识点如下:我以思维导图方式先概况一下,后续我会分享windows sever 2016的DHCP的技能点。这次先讲解在网络设备中是如何部署及其工作原理。

思维导图很长很长~~~~~~~~~~~



本章的思路先分享DHCP的基础配置,再从报文分析DHCP协议。


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_discove广播穿透(vlan或者区域)发现DHCP服务器,三层路由是不转发广播的,因此客户端是无法获取到地址。若是需要达到需求,两者间必须首先路由可达(通讯正常)启用区域放行或者vlanif接口,最后需要DHCP中继解决该问题。


DHCP中继试验拓扑

从这张拓扑上来看,pc1和pc2默认情况下是和dchp服务器通讯不了了,因此需要设置双方的路由可达和DCHP中继来满足需求。

具体配置如下:

  1. 二层交换中创建vlan1,vlan2,vlan10,连接的客户端的端口设置成access;机联口设置成trunk;

  2. 三层交换上创建 vlan 10;15号口设置成trunk;19号口设置成access,并加入到vlan10中; 并且vlan1 vlan2 vlan10 启用三层vlanif接口。

  3. DCHP服务器上创建 vlan10 ; 创建vlan10的地址;19号口设置成access并加入到vlan10中;以上三步为基础配置,不在分享。


  4. 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服务器发生变化,只需要改组名里的地址即可


文章转载自爱婷如命一生一世,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论