本帖最后由 莫冷 于 2022-10-21 08:19 编辑
哈喽,大家好,我是纯洁的小莫冷~
今天咱们来讲讲DHCP,经过前面的文章,大家应该已经对网络有了初步的了解,网络通信是离不开IP地址的,而一般网络里电脑的数量一定不少,而IP地址每台电脑都需要一个,电脑太多了怎么办,一个一个配IP地址太麻烦,而且容易造成IP地址冲突,而IP地址一旦冲突了,那存在冲突的这两台电脑就都无法上网了。
DHCP正好可以解决这一问题,对于网络要求不太严格的区域,完全可以使用DHCP来给网络里的电脑提供IP地址,DHCP叫做动态主机配置协议,是一个局域网的网络协议,指的是由服务器控制一段IP的地址范围,客户机登录时就可以自动获取服务器分配的IP地址和子网掩码。
DHCP工作在四层,采用UDP 67 68端口,客户端请求服务器时使用的是67端口,服务器返回给客户端则是使用的68端口
DHCP请求过程
1、DHCP Client以广播的方式发出DHCP Discover报文
2、所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文
DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCPServer会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server。DHCP Server在发出此报文后会存在一个已分配IP地址的纪录
3、DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文
DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址
4、DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息
5、DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程
6、DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配
在使用租期超过50%时刻处,DHCP Client会以单播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址
在使用租期超过87.5%时刻处,DHCP Client会以广播形式向DHCP Server发送DHCPRequest报文来续租IP地址。如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址,直到IP地址使用租期到期时,DHCP Client才会向DHCP Server发送DHCP Release报文来释放这个IP地址,并开始新的IP地址申请过程
需要说明的是:DHCP客户端可以接收到多个DHCP服务器的DHCPOFFER数据包,然后可能接受任何一个DHCPOFFER数据包,但客户端通常只接受收到的第一个DHCPOFFER数据包。另外,DHCP服务器DHCPOFFER中指定的地址不一定为最终分配的地址,通常情况下,DHCP服务器会保留该地址直到客户端发出正式请求
正式请求DHCP服务器分配地址DHCPREQUEST采用广播包,是为了让其它所有发送DHCPOFFER数据包的DHCP服务器也能够接收到该数据包,然后释放已经OFFER(预分配)给客户端的IP地址
如果发送给DHCP客户端的地址已经被其他DHCP客户端使用,客户端会向服务器发送DHCPDECLINE信息包拒绝接受已经分配的地址信息
在协商过程中,如果DHCP客户端发送的REQUEST消息中的地址信息不正确,如客户端已经迁移到新的子网或者租约已经过期,DHCP服务器会发送DHCPNAK消息给DHCP客户 端,让客户端重新发起地址请求过程。
DHCP也支持自定义选项,即option选项,此选项是一个可变长的字段,option选项中包含了部分的租约信息、报文类型等,option选项最多可以包含255各option,最少为1各option,其中除了协议指定的option字段,其他的字段厂商都可以自定义,比如我们经常使用的无线场景,如果想要让无线AP自动获取无线控制器的地址的话,厂商一般使用option 43字段或者option 138字段,这两个字段是厂商自定义的,它可以告诉无线AP所在网络的控制器的地址。
综上所述,DHCP可以大大简化网络配置的复杂度以及运维难度,但是大家有没有想过这样一个问题,就是如果网络里边有两个甚至很多个DHCP服务器呢,比如很多单位都存在私接小路由器的环境,那这样的话他们该怎么获取地址呢,其实上面已经讲过了,DHCP是采用的UDP协议,而UDP协议是非面向性的连接,也就是它的安全性没有办法保障,也就是我发送广播报文之后,任何人获取到了这个广播报文都可以回话,而计算机只认最先到达自身的报文,那这样就存在一个问题了,就是我不能控制计算机使用哪个DHCP服务器分配的IP地址,而这显然是不符合我们的预期的,因为一旦网络中发生了安全事件,我们没有办法溯源,家用小路由一般都是带地址转换功能的,而一旦存在地址转换,那我们看到的小路由下面的IP地址都只显示一个,也就死小路由的WAN口地址,那我们想溯源或者做策略封堵的话只能是针对小路由的WAN口IP进行封堵,因为家用的小路由是不带防火墙、安全事件等功能的,我们在小路由上也看不出是哪台电脑存在安全事件。
这显然偏离了我们的初衷,我们是想方便管理,而不是让网络充满漏洞,那这种场景该如何解决呢,说到这里我们就需要一种技术了,他就是DHCP snooping,它是DHCP的一种安全特性,主要应用在交换机上,也就是说它的配置不在DHCP服务器上配置,而是交换机,而且需要二层交换机,它的作用就是屏蔽网络中的非法的DHCP服务器,启用了DHCP Snooping的交换机,必须将端口设置为信任状态或者非信任状态,交换机只转发信任口的DHCP OFFER/ACK/NAK报文,对于非信任端口的报文则直接丢弃,从而达到阻断非法DHCP服务器的目的。
至于信任口要配置哪个端口,我们可以这样理解,对于DHCP服务器直连交换机的场景下,我们可以将信任口设置为服务器直连的那个网口,而对于非直连的情况,比如核心交换机下联汇聚,汇聚下面又接了一堆接入交换机,我们可以将这些交换机级联的网口设置为信任口,这样就不会存在非法DHCP服务器给计算机提供IP地址的情况了。
DHCP配置举例 AF
华为路由器配置DHCP命令
#开启DHCP服务 dhcp enable #创建DHCP地址池 ip pool 1 #设置网关 gateway-list 192.168.1.1 #设置分配地址段 network 192.168.1.0 mask 255.255.255.0 #设置DNS dns-list 114.114.114.114 #接口启用dhcp interfaceEthernet0/0/0 ip address 192.168.1.1 255.255.255.0 dhcp select global
华为交换机配置DHCP Snooping #开启DHCP服务 dhcp enable #开启DHCP Snooping dhcp snoopingenable #进入VLAN开启DHCP Snooping vlan 1 dhcp snooping enable
此时我们可以做下测试,因为一旦开启了DHCP Snooping,那默认此VLAN下的所有接口都为非信任口,所以我们可以做下测试看看PC还能不能获取到IP
交换机配置信任口 # interfaceGigabitEthernet0/0/1 dhcp snooping trusted 这样我们的电脑就可以获取到IP地址啦~
好了,今天的分享就到这里啦,有不足的地方欢迎大家补充哦,感谢大家的观看,记得点赞分享加关注哦~ |