全国直销电话:4006-854-568
IT-technology
以人为本,众志成城,以“用户至上”.“服务上乘”为原则,
追求产品和服务高质量,努力实现与客户之间真诚有效的沟通,
不断地圆梦、奔跑与腾飞。
新闻动态   NEWS
华为设备充当DHCP服务器(减轻IT人员的负担)-北京赛维博信科技发展有限公司
来源:本文摘自网络,如有侵权请联系删除 | 作者:svbx001 | 发布时间: 2022-11-14 | 1868 次浏览 | 分享到:

在TCP/IP协议体系中,IP地址作为通信的核心,一个运行了TCP/IP的终端,如果没有地址,什么都做不了,之前的环境中,我们都是用的静态方式,人为的去设置,因为我们还没有讲解DHCP服务器的配置,所以一直用的静态方式,加上工作量不大,但是实际中可不一样,一个小的环境里面常见也有10~30终端,中小环境可能50~300,这样弊端就出现了。

  • 终端越多,手动设置工作量越大

  • 容易出现错误,如果地址冲突,导致冲突部分无法上网

  • 网络位置改变,需要重新设置,可能在这边用的是192.168.10.0/24网段,到了对方用的则是192.168.20.0/24的网段了

  • 除了地址以外,还需要知道掩码信息、网关、DNS,对于非专业人员来说特别的困难

  • 不适合于中小、中大型网络的维护跟管理


DHCP(动态主机配置协议)

DHCP作为一个老牌协议,解决了手动设置地址带来的困扰,这也是必须推出的一个协议,否则TCP/IP协议栈会非常的难用,DHCP 是基于C/S(服务器客户端)模式的 ,Client使用UDP 68,server使用UDP 67。详细的理论我们在计算机网络基础已经讲解过了,但是那时候没有讲解配置,那这里先了解下DHCP服务应该部署在哪,然后接着配置跟抓包来回顾下理论

DHCP应该部署在哪

在实际工作中DHCP部署的位置肯定是在用户的网关上面,这里的网关指的就是VLAN网关,也就是核心交换机,,核心设备通常支持的特性多,性能也属于网络中最好的一台设备,又充当内网的网关,所以它充当DHCP服务器,这样也是比较合理的。

另外一种就是如果企业里面有虚拟化服务器,或者有域控(Windows企业解决方案)等,那很大可能性会用服务器来运行DHCP服务,这个时候核心需要做好中继功能,把DHCP的请求交给服务器(这个我们下一篇会讲解)

华为设备DHCP配置

对于华为设备来说,DHCP支持两种方式,一种基于接口,一种基于全局,那平时我们使用基于接口的会更多,因为这个确实非常方便。

以这个拓扑为例,核心充当内网的网关,把DHCP运行在核心交换机上面(其余的配置都已经OK,引用的是13篇的配置,现在内网都是可以互通的)

(1)基于接口的DHCP配置

1、[Core]dhcp enable                      //全局开启DHCP服务,如果没开,下面的操作无法进行

2、[Core]interface  vlan 10             

3、[Core-Vlanif10]dhcp select   interface      //开启接口DHCP

4、[Core-Vlanif10]dhcp server dns-list 223.5.5.5 114.114.114.114      //分配DNS

 

5、[Core]interface  vlan 20

6、[Core-Vlanif20]dhcp select   interface

7、[Core-Vlanif20]dhcp server   dns-list  223.5.5.5  114.114.114.114

8、[Core-Vlanif20]int vlan 30

9、[Core-Vlanif30]dhcp select   interface 

10、[Core-Vlanif30]dhcp server dns-list 223.5.5.5 114.114.114.114

基于接口的配置是最简单的,这也是华为用的最多的一种方式,它只需要开启基于接口的模式,然后分配DNS就完事了,我们来测试下。

通过ipconfig能看到获取的IP、DNS、网关,但是跟实际有点差别,Windows实际的命令是ipconfig /all,才能看到DNS之类的

可能疑惑的地方:

  • 在获取的参数里面可以看到,掩码是255.255.255.0、网关是192.168.253.254,这正是VLANIF 30的网关地址,那交换机怎么知道要分配这个参数给它们呢?dhcp     select  interface  , 关键就在于这个命令,当启用DHCP接口模式后,它会以这个VLANIF接口下配置的地址充当网关、掩码作为下发给客户端的掩码信息,这也是简化了配置,所以客户端能够正常获取到地址等参数信息。

  • 华为设备在老版本(V1R5~V2R5,具体范围不太记得了)它的分配方式就是从DHCP最后一位开始分配的,但是到了新版本,它就成了随机分配。


(2)基于全局的配置方式

 [Core]ip pool vlan20

Info:It's successful to create an IP address pool. //提示创建成功

[Core-ip-pool-vlan20]network  192.168.254.0 mask 24

Error:The subnet of  the pool cannot be overlapped with that of other pools. 

这里可以看出来,基于全局的配置方式跟接口是有冲突的,这里报错,这个地址池在其他地方已经配置了,所以需要先删除之前的。

 

[Core]interface  vlan 20

[Core-Vlanif20]undo  dhcp select  interface           //删除对应功能

 

[Core]ip  pool  vlan20                    //回到地址池

[Core-ip-pool-vlan20]network  192.168.254.0 mask 24      //分配网段以及掩码

[Core-ip-pool-vlan20]gateway-list  192.168.254.254         //分配网关地址

[Core-ip-pool-vlan20]dns-list  223.5.5.5 114.114.114.114    //分配DNS信息

 

[Core-ip-pool-vlan20]interface  vlan 20

[Core-Vlanif20]dhcp  select  global              //接口下调用,调用方式为全局

这里也可以看出来基于全局配置方式对比与基于接口要繁琐一点点。

开启抓包

改成自动获取

四个包,这个就是我们基础里面介绍到的。

(3)回顾DHCP流程

  • DHCP Discover     :  通常情况下,Windows、苹果、安卓都过程在自动获取方式,接入网络后,会发送Discover来发现(寻找)该局域网中是否有DHCP存在

客户端默认情况下没有地址,二层、三层都以广播形式(二层源是自己的MAC,三层由于没有地址为0.0.0.0,四层UDP源是68、目的端口号是67),相当于就是在一个广播域内寻找DHCP服务器,客户端默认只有MAC地址信息,没有IP,想请求对应的信息,以option 55列出来(请求列表,通常是请求掩码、网关、DNS等等)

  • DHCP Offer:DHCP服务器收到以后响应包

服务器以客户端支持的形式进行回应(在之前客户端flag写了支持单播),这里以单播的形式回应,所以会发现三层的目的地址回应里面不在是0.0.0.0了,0.0.0.0不是一个有效的单播,服务器只能以分配给客户端的IP作为目的地址进行回应,支持单播形式的客户端是可以处理这种报文的(虽然目前它没有地址),然后回应信息里面还包含了分配给客户端的IP,以及服务器所支持的信息,其实就是我们配置的,比如掩码、网关、DNS,其余没有配置在内的,虽然客户端请求了,但是服务器没有配置,自然就不会响应,另外一个就是时间,默认情况下、华为、思科、华三的设备租期是一天,也就是这个地址你获取后,可以使用一天,在50%、85%的时候都可以进行续约,来继续使用该地址。

  • DHCP Request:客户端觉得没有问题,请求这些信息

客户端请求服务器支持的参数,包括地址信息,另外还包含了服务器的地址,这是因为如果网络中存在多个服务器,而目前的Request报文又是以广播形式方式的,客户端需要明确告诉是请求哪台服务器的,否则会出现错误的分配。

  • DHCP ACK:告诉客户端,你租用成功了


服务器最终会回应ACK,告诉客户端,这个地址以及参数你现在可以使用了,并且包含使用的时间跟续期时间,以及服务器的地址标识。

最终PC4获取到了自己的地址

实际中通过ipconfig /all,能看到的信息更多

  • 通常情况下网卡出于DHCP自动获取模式

  • 会写明获取地址的时间以及到期时间

  • 会写明DHCP的服务器是多少,这个很关键,可以用于确认是不是我们自己的DHCP服务器分配的


(4)其他细节补充

  • 由于DHCP属于广播形式请求,如果一个广播域内存在多台服务器,那么客户端会选择最先响应的那个,这也是为什么在第三个包Request中要包含服务器地址的原因,解决办法,会在后面的局域网安全里面讲解。

  • 客户端支持两种接收方式,一种广播(老的方式),一种单播(新的方式),单播功能的支持是为了减少局域网内无用的广播报文出现,算是优化。

  • 对于租期来说,常见的厂商都是一天,也够使用了,但是如果是无线网络场景,人流移动比较频繁的商场、食堂等场景,建议租期修改成3~4小时,方便回收。基于接口形式配置:dhcp     server lease day 0 hour 3     基于地址池形式配置 :lease day 0 hour 3

  • DHCP在下发地址的时候还会做一件事情就是来确认这个地址在网络中是否有存在的(地址冲突检测),因为可能有人静态设置了这个地址,华为 华三 以及思科等设备默情况下会进行确认(确认的方式版本不一样,形式也不太一样,有的版本以ARP请求方式、有的版本以ICMP方式)


确认的方式是在服务器发送DHCP Offer之前,会先发送一个ARP的请求,询问当前局域网中是否有254.253存在,如果没人回应,就回应Offer,如果有人响应,则把该地址标记成冲突地址,重新等待客户端的请求,这里自然是没有冲突。

另外客户端收到地址以后,会发送三次 Gratuitous ARP(通常叫无故ARP、免费ARP都可以),它的作用是操作系统来确认该网络中是否有人使用了254.253,如果有人使用则直接提示IP地址冲突。(这也是为什么Windows系统能够检测到IP地址冲突的原因,不过如果系统精简的太厉害,可能不会有这个过程)


实际中使用的一些经验分享

(1)一个网段中存在服务器,打印机这些需要固定IP怎么办?

像上面该网段中,server已经用了192.168.255.6,而且使用的是固定地址,服务器通常是使用静态,不可能今天是一个地址,明天是一个,这样别人就没法访问了(普通用户可记不住地址),会遇到的问题就是可能会导致地址冲突。

比如服务器由于某种情况关机了,正好客户端请求地址分配的是192.168.255.6,虽然DHCP服务器有检测机制,目前服务器处于关机状态,自然就检测不到冲突,地址下发了,后面服务器开机后,结果服务没法访问了,因为有电脑跟服务器的地址冲突了,所以需要做一个操作,排除掉使用的地址。

[Core]interface  vlan 10

[Core-Vlanif10]dhcp  server excluded-ip-address 192.168.255.6

该命令的意思是排除掉192.168.255.6不分配(保留下来不分配),但是实际中还会遇到一种突发情况。

比如想保留的地址已经分配出去了,那这个时候怎么办呢?

[Core]interface  vlan 30

[Core-Vlanif30]dhcp  server excluded-ip-address 192.168.253.253

Error:Only  idle or expired IP address can be disabled.

//错误提示,只有空闲或者到期的地址可以被关闭(保留),那这个时候怎么办呢?

 

-----------------------------

<Core>reset  ip pool interface vlanif30 192.168.253.253

Warning: If the IP  addresses that are being used are reclaimed, may influence normal user in the  network. Are you sure to continue?[Y/N]:y

//通过清空地址池的对应这个需要保留的IP数据,然后在进行保留,需要注意,清空要在用户视图下

 

-----------------------

[Core]int vlan 30

[Core-Vlanif30]dhcp  server excluded-ip-address 192.168.253.253

 

这个时候就OK了,如果是在地址池下面配置的,就进入地址池配置,清空也是reset ip pool name 【地址池名字】 192.168.255.253,这个就是实际中需要注意的地方。

 

---------------------------------

<Core>reset   ip pool   name  vlan20 192.168.254.253            //清空地址池 vlan20中192.168.254.253的状态

Warning: If the IP  addresses that are being used are reclaimed, may influence normal user in the  network. Are you sure to continue?[Y/N]:y

 

 

[Core]ip pool vlan20

[Core-ip-pool-vlan20]excluded-ip-address  192.168.254.253

通过ipconfig /renew后,让客户端重新获取地址,因为192.168.253.253已经被保留了,所以就无法获取,只能重新分配新的,这里顺便也说下,保留地址成功后,已经分配出去的地址是不会立马释放的,因为客户端已经获取到地址了,在DHCP的机制里面,并没有从在线从客户端即时回收的功能,所以必须占用的主机那边把地址通过释放或者重新获取来把需要的地址释放出来。(保留是可以支持批量设置的 dhcp server excluded-ip-address 192.168.254.241 192.168.254.253 )

(2)想固定IP地址方便管理,应该如何操作

在实际中可能为了方便管理,想把客户端的地址绑定起来,每次分配的都是这个IP,不让它变化,或者方便做策略,这个时候就需要用到DHCP的静态绑定功能了。

DHCP的分配完全是根据客户端的MAC地址来的,根据这个原理,我们需要先收集客户端的MAC地址,然后进行绑定。

比如PC1想让他一直获取的是192.168.253.252

 

[Core]interface  vlan 30

[Core-Vlanif30]dhcp  server static-bind ip-address 192.168.253.252 mac-address 5489-98ee-0a0f

Error:The IP address's status is error.         //提示地址状态错误,原因跟上面的一样

 

<Core>reset  ip pool  interface   vlanif30 192.168.253.252

Warning: If the IP  addresses that are being used are reclaimed, may influence normal user in the  network. Are you sure to continue?[Y/N]:y

 

[Core]interface  vlan 30

[Core-Vlanif30]dhcp  server static-bind ip-address 192.168.253.252 mac-address 5489-98ee-0a0f

 

这样就绑定上了,下次它不管怎么获取都是会分配该地址,除非硬件MAC发生了改变。

 

----------------------

地址池信息绑定方式一样,如果地址被占用(有提示),则先清空,然后在地址池中进行绑定

(3)为什么我要很久才能获取到地址?

这个原因通常就是我们在20篇里面提到的,如果是可配置的接入交换机,接入终端的接口必须开启边缘端口功能,否则会造成30秒的等待时间。

现在接口是没有开启边缘端口的

把PC1关闭后开启

会发现一直获取不到IP

STP状态变成转发后,地址才慢慢获取到,这个对于客户来说是不能接受的,更加麻烦的是如果客户的系统是精简过的,可能不会在重新去获取,导致一直没法获取地址,客户会认为网络不稳定。  [bg1-Ethernet0/0/3]stp edged-port enable    接终端接口一定记得要开边缘端口。

4)新版本的支持

新版本里面开始支持一个新的命令,就是范围

1、地址池里面形式

ip pool 1

section  0 192.168.255.1 192.168.255.240

 

2、基于接口的形式

interface  vlan 1

dhcp  server ip-range 192.168.255.1  192.168.255.240

 

//这样配置范围,就可以省去保留的配置了

(5)华为的维护命令

  • 查看地址池配置,用于检查是否正常:display     current-configuration configuration ip-pool   | display current-configuration interface  Vlanif 10

  • 查看地址池分配情况 display ip poo     interface vlanif10 used (接口形式)     display  ip pool name  vlan20 used (Pool形式)

查看信息里面包含几个有用的内容

  • 包含地址池的租期、网关、DNS、掩码

  • start与End表示该地址池的范围

  • Totol表示总共有多少地址可以分配

  • Used:表示分配了几个地址出去,会在下面列表中列出来

  • Idle(Expired)表示目前空闲或者已经超时回收的总数量地址

  • Conflict表示冲突的地址

  • Disable:表示保留的地址数量



 

服务热线

1391-024-6332