HCNA Routing&Switching之DHCP服务
前文我们了解了STP的端口状态、计时器以及端口状态切换和网络拓扑变化相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15140672.html;今天我们来聊一下DHCP相关话题;
DHCP(Dynamic Host Configure Protocol,动态主机配置协议)是应用层协议,使用UDP封装,服务端工作在UDP的67号端口,客户端工作在68号端口;它是BOOTP(Bootstrap Protocol)协议发展而来;主要作用是动态分配TCP/IP信息(ip地址,子网掩码,网关,DNS等等),分配出去的信息是由一个时间使用期限,这个期限我们叫租期;我们知道在大型网络环境中,会有大量的主机和设备需要获取ip地址等网络参数;如果采用手工配置,工作量大且容易出错,导致ip地址冲突;使用DHCP来分配ip地址等网络参数,可以极大减少网络管理员的工作量,同时也用户手动配置网络参数时导致的ip地址冲突等问题;
提示:主机A和主机B要动态获取ip地址等网络参数,首先它会向dhcp服务器发送ip地址分配的请求,服务收到请求,就分配ip地址,然后对应主机就会收到对应的ip地址等网络参数;
DHCP系统组成
提示:DHCP Client (客户端) ,需要动态获取ip地址的主机;DHCP Server(服务器)是能提供DHCP功能的服务器或网络设备;DHCP Relay (中继),一般为路由器或三层交换机等网络设备,中继设备的主要作用是arp代理和dhcp信息转发;
DHCP报文结构
先来看一个实验,如下拓扑主机A和主机B分别使用DHCP动态获取ip地址信息,我们抓包看看对应数据包长什么样?
配置s1


sys
sys s1
vlan batch 10 20
int eth0/0/1
p l a
p d v 10
int eth0/0/2
p l a
p d v 20
int eth0/0/3
p l t
p t a v 10 20
配置s2


sys
sys s2
vlan batch 10 20
dhcp en
int g0/0/1
p l t
p t a v 10 20
int vlanif 10
ip add 192.168.10.254 24
dhcp select interface
int vlanif 20
ip add 192.168.20.254 24
dhcp select interface
在pc1上开启dhcp,并在pc1上抓包
提示:可以看到在pc1开启dhcp以后,对应在pc上就能抓到4个DHCP的包;从上面的抓包信息可以看到,在pc1启动dhcp客户端时,首先它会发送DHCP discover包,该包的员源ip是0.0.0.0(原因是pc1目前没有ip地址)源端口是68,目标ip是255.255.255.255(全网广播),目标端口是67;这种类型的DHCP包主要作用是寻找DHCP服务端;如果有DHCP服务端收到此类消息,那么DHCP服务端会向该客户端发送DHCP offer类型的包,该包主要作用就是给客户端ip地址等网络参数信息;随后,客户端收到服务端的offer以后,又会广播发送dchp request类型的包,该类型包的主要作用是告诉其他服务端(可能不止一个服务端)有服务端给我发offer,你们发的offer我就不要了;除此之外,也告诉发offer服务端,我就要使用这个ip地址等网络信息;最后当服务端收到客户端发送的广播dhcp request包以后,服务端发送ACK,意思就是告诉客户端,服务端已经知晓这个事情,你把地址拿去使用吧;
DHCP报文类型
DHCP工作流程
提示:首先客户端发送DHCP discover类型的包,作用就是寻找DHCP服务端;如果有服务端响应客户端,此时服务端就会发送DHCPoffer类型的包,就是告诉客户端,我是DHCP服务端,我这里有ip地址等等信息;如果没有服务端响应客户端,则客户端会一直发送DHCP discover类型的包;当服务端响应客户端并发送DHCP offer 以后,对应客户端收到服务端发送的offer,此时客户端会发送DHCP request类型的包,其目的是告诉其他dhcp服务端,有服务端给我发offer,你们就不要再发送offer给我了;其次就是告诉服务端,我要用这个ip地址等网络信息;如果其他dhcp服务端收到此类消息,一看报文里的dhcp server identifier 不是自己的ip地址,此时该服务端就不会再回应客户端;只有报文里的dhcp server identifier 是自己ip地址的服务端会发送ack,表示确认客户端信息;
DHCP租期更新
提示:DHCP动态获取的IP 地址等网络信息是有租期的,华为默认是1天;这个租期还剩下50%时,客户端会想服务端请求续租;如果服务端收到,此时服务端就会恢复一个ack,表示同意续租;此后,该客户端的租期就会向后延续对应租期的一半;
实验:如下拓扑,我们把上述拓扑桥接在物理回环网卡上,然后把对应dhcp服务端租期修改为1分钟,在云上抓包,看看对应续租的过程
桥接cloud1到本地loop网卡
把s1的eth0/0/4口加入到vlan 20里
修改DHCP服务端的租期为1分钟
提示:租期最小单位是分钟,如果租期是day 0 hour 0 minute 0 表示无限期;
验证:查看loop网卡的是否获取到ip地址,看看租期是多少?
提示:可以看到对应物理loop网卡获取到对应的ip地址,并且租期也是一分钟;
在云上抓包
提示:可以看到在云上抓包,可以抓到很多dhcp requset和ack的包;这些包就是客户端向服务端申请续租的报文,每当租期还剩下租期的一半时,客户端就会向服务端发起续租请求,只有服务端回复确认ack,对应租期又会往后延期租期的一半;
验证:再次查看loop网卡的租期情况
提示:可以看到经过一段时间以后,租期结束时间从14:26:11变成了14:31:12,这意味着客户端续租了的;
DHCP重绑定
提示:如果在租期还剩下50%时,客户端向服务端发送续租请求,如果服务端没有响应,此时对于客户端来说,它的ip地址等网络信息还是可以正常使用的;如果租期还剩下租期的1/8时,如果此时还是没有服务端响应,此时客户端就会申请重新绑定ip地址;重新绑定ip地址,客户端又会发送dhcp discover报文,和最开始的流程一样;
IP地址释放
提示:如果ip租约到期前都没有服务端响应客户端的续租请求,客户端会停止使用此ip地址;如果DHCP客户端不再使用分配的ip地址,也可以主动向DHCP服务端发送DHCP RELEASE报文,告诉服务端释放该ip地址;这里注意一点主动释放ip地址是客户端告知服务端,让服务端做好记录对于ip地址已经释放,可再分配给其他客户端;服务端并不会发送什么报文给客户端;
DHCP地址池(Pool)
什么是地址池?所谓地址池就是所有能分配地址的集合;在DHCP中我们可以建立地址池,让DHCP客户端,在地址池中获取任意ip地址进行使用;
提示:接口地址池的优先级高于全局地址池;默认接口地址池会把对应接口地址当作网关信息发送给客户端;全局地址池一般用于对应网关不是自己接口地址的场景,比如专用的DHCP服务器;
DHCP配置命令
1、全局开启dhcp功能
[s2]dhcp en
Info: The operation may take a few seconds. Please wait for a moment.done.
[s2]
2、关联接口和接口地址池
提示:DHCP必须在三层接口上关联地址池;
3、配置接口地址池的DNS服务器地址
提示:dns可以是多个;
4、配置接口地址池的租期,默认1天
提示:租期最小时长单位为秒;配置永不过期就是0天0小时0秒;
5、配置接口地址池的排除地址范围
提示:如果要排除一个范围的ip地址,必须前边开始地址小于后面结束地址;该命令可以运行多次,如果排除单个ip地址,直接后面接ip地址即可;
6、创建全局地址池
7、配置全局地址池的可分配的网段地址
8、配置全局地址池的网关地址
9、配置全局地址池的DNS服务器地址
10、配置全局地址池下的租期,默认1天
11、配置全局地址池下的排除地址范围
12、关联接口和全局地址池
提示:对应三层接口必须要有一个同dhcp分配地址里同网段的地址;否则对应三层接口起不来;
13、查看地址池的属性
提示:该命令用于查看一个设备上的所有地址池信息,不区分接口地址池和全局地址池;
14、查看指定接口地址池信息
查看指定全局地址池信息
提示:不管是查看接口地址池还是全局地址池,后面都可以跟过滤条件,如下
提示:如果后面接一个ip地址,是用于查询对应地址所属地址池相关信息;all表示显示对应地址池所有ip地址分配情况;expired用于过滤过期的ip地址,used用于过滤已经使用的ip地址;conflict用于过滤冲突的ip地址;
15、在接口地址池下静态绑定ip地址
提示:后面的mac地址必须是4位一组;这样绑定以后,对应mac地址的设备来拿ip,此时就会把对于ip地址分配出去况且没有租期限制;
16、在全局地址池下静态绑定ip地址
HCNA Routing&Switching之DHCP服务的更多相关文章
- HCNA Routing&Switching之访问控制列表ACL
前文我们了解了DHCP服务相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15147870.html:今天我们来聊一聊访问控制列表ACL: ACL(ac ...
- HCNP Routing&Switching之DHCP中继
前文我们聊了下BFD相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16487842.html:今天来聊一聊DHCP中继相关话题: DHCP的作用 DH ...
- HCNP Routing&Switching之DHCP安全
前文我们了解了MAC地址防漂移技术,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16632239.html:今天我们来了解下DHCP安全相关话题: 回顾DHC ...
- HCNA Routing&Switching之PPPoE协议
前文我们了解了广域网中的HDLC和PPP协议相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15174240.html:今天我们来聊一聊PPPoE协议相 ...
- HCNA Routing&Switching之动态路由协议RIP
前文我们了解了动态路由的基本概念,以及动态路由和静态路由的区别,优缺点,动态路由的分类,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14995317.html ...
- HCNA Routing&Switching之静态路由
前文我们聊到了路由的相关概念和路由基础方面的话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14947897.html:今天我们聊聊静态路由相关话题: 回顾 ...
- HCNA Routing&Switching之路由基础
在开始聊路由之前,我们首先要明白在网络通讯里,什么是路由?什么是路由表.路由器以及网关的相关术语:路由简单讲就是指网络数据包从源头到目标的路径,主要用来为不同网络间通讯提供数据包转发依据:路由表就是多 ...
- HCNA Routing&Switching之地址转换技术NAT
前文我们了解了包过滤工具ACL相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15156308.html:今天我们来聊一聊地址转换技术NAT相关话题: ...
- HCNA Routing&Switching之动态路由基本概念
前文我们了解了静态路由的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14965433.html:今天我们来聊一聊动态路由相关概念: 首先我们要清楚什 ...
随机推荐
- MySQL原理 - InnoDB引擎 - 行记录存储 - Off-page 列
本文基于 MySQL 8 在前面的两篇文章,我们分析了 MySQL InnoDB 引擎的两种行记录存储格式: Compact 格式 Redundant 格式 在这里简单总结下: Compact 格式结 ...
- flyway实现java 自动升级SQL脚本
flyway实现java 自动升级SQL脚本 为什么要用Flyway 在日常开发中,我们经常会遇到下面的问题: 自己写的SQL忘了在所有环境执行: 别人写的SQL我们不能确定是否都在所有环境执行过了: ...
- python之set集合,基础篇
集合:set 特点:1>.无序 ,因为集合是无序的,所以不可用下标值查询,也不可切片2>.去重 ,一个集合内不能有两个相同的元素3>.可添加,可删除,不可修改等等4>.集合内的 ...
- Docker单机网络上
前言 Docker系列文章: 此篇是Docker系列的第六篇,大家一定要按照我做的Demo都手敲一遍,印象会更加深刻的,加油! 为什么要学习Docker Docker基本概念 Docker镜像基本原理 ...
- springcloud gateway(hystrix filter)
参考 https://blog.csdn.net/forezp/article/details/83792388 1.依赖pom.xml <project xmlns="http:// ...
- 学习/etc/group /etc/passwd 和 /etc/shadow
/etc/passwd 管理用户信息的系统文件 /etc/shadow 管理用户密码信息的系统文件 /etc/group 管理用户组信息的系统文件 1./etc/group 将用户分组是Linux系统 ...
- 分享一份550多个Linux命令的文档,按照命令首字母索引排序
输入一个命令,让我给你一个关于它的完美解释! 众所周知,Linux命令是IT人必须掌握的一个技能,有了它,我们可以部署和维护各种各样的服务和应用.但是,大部分的Linux命令我们不一定记得住,而别是各 ...
- python使用笔记16--操作redis
操作redis应先引入第三方模块 执行以下命令 pip install redis 1.redis常用方法 1 import redis 2 #decode_responses=True将bytes转 ...
- 个人博客开发之blog-api 项目全局日志拦截记录
前言 大型完善项目中肯定是需要一个全局日志拦截,记录每次接口访问相关信息,包括: 访问ip,访问设备,请求参数,响应结果,响应时间,开始请求时间,访问接口描述,访问的用户,接口地址,请求类型,便于项目 ...
- urllib库中的URL编码解码和GETPOST请求
在urllib库的使用过程中,会在请求发送之前按照发送请求的方式进行编码处理,来使得传递的参数更加的安全,也更加符合模拟浏览器发送请求的形式.这就需要用urllib中的parse模块.parse的使用 ...