29-应用层,DHCP协议

1.DHCP的技术背景
终端设备,如pc、手机等,需要联网;
联网需要给网卡配置ip地址;
ip地址的配置有两种方式:静态、动态;
为了方便,经常使用动态方式配置ip地址;
动态ip地址就来自于DHCP协议;
 
查看交换机ip地址信息的命令:
dis ip pool
可以看到:
    交换机提供了1265个理论上可分配的地址;
        计算方式:子网掩码=24,有254个可用地址(0~255共256个ip地址,首尾两个地址不可用【网络地址和广播地址】,1~254,共254个地址);
        交换机有5个vlan,每个vlan都有254个可用地址; 254 * 5 = 1270个可用地址;
        每个vlan各需要一个网关地址(也就是说作为网关的交换机自己也得分配一个该网段的地址),可用地址 = 1270 - 5 = 1265 ;
    使用了44个地址;
    剩余723个地址;
    过期209个;
    冲突2个;
    禁用了496个地址;
 
查看三层交换机可以分配的地址:
dis ip pool interface vlanif108
 
 
2.DHCP:Dynamic Host Configure Protocol 动态主机配置协议
  • 从BOOTP(Bootstrap Protocol)协议发展而来(DHCP是基于BOOTP的,抓包时用BOOTP为关键字过滤来找到DHCP的包)
  • UDP封装,服务器使用端口67,客户端使用端口68
  • 动态分配网络信息(IP地址、子网掩码、网关、DNS服务器等)
  • 分配给客户端的网络信息是有租约的
 
1)关于租约
租约是从小到大的累计的;
如图:地址192.168.108.200快过期了,因为租期是1天=86400s,这个地址从拿到开始共使用了81282s,距租期到期只有几千s了;  
 
windows系统的pc查看租约:
ipconfig /all
 
也可以在网络连接详细信息中看到:
 
2)DHCP角色组成
0
DHCP Cilent  客户端
请求网络信息的用户
DHCP Server 服务器
能够提供DHCP功能的设备
DHCP Relay  中继
一般为路由器或三层交换机等设备
DHCP是通过广播发送的;
DHCP客户端和服务端可能不属于同一个广播域,导致服务端收不到;
因此需要通过DHCP中继转发;
 
终端设备可以通过DHCP服务器获取ip地址;
家庭网络经常使用网关路由器作为DHCP服务器;
0
 
3)开启DHCP
DHCP是应用层协议,基于UDP协议;
DHCP服务提供在三层接口上;要开启DHCP服务需要在三层接口上输入命令;
dhcp enable        #交换机允许DHCP
sys
int vlanif 10      #进入交换机的三层接口  
dhcp select interface    #开启DHCP
 
 
3.DHCP报文
1)抓包
将终端设备的地址配置成DHCP时,可以用wireshark抓到DHCP的包;(用BOOTP为关键字过滤)
 
DHCP数据包的类型:
报文类型
备注
DHCP Discover 发现
客户端寻找DHCP服务器
DHCP Office 提供
服务器响应DHCP Discover报文,该报文也携带了网络信息(地址、网关、掩码、租期)
DHCP Request 请求
客户端请求服务器对网络信息确认,或者续约租期
DHCP ACK 确认
服务器对DHCP Request报文确认响应
DHCP NAK 不确认
服务器对DHCP Request报文的拒接响应
DHCP Release 释放
客户端释放网络信息通知服务器
2)数据包结构
0
 
0
 
 
4.DHCP工作流程:
1)工作流程
终端设备通过DHCP协议得到ip地址时,必然会经历4个过程:
    1】主机A发送DHCP Discover广播(主机A:我要ip地址,谁有);
    2】DHCP服务器收到广播后,给主机A回复一条DHCP Offer包;(DHCP服务器:我有,这是ip地址的信息,地址、掩码、租期等)
    3】主机A收到DHCP Offer包后,发送DHCP Request广播,用来请求使用DHCP服务器提供的ip地址;(主机A:这个地址我要了)
    4】DHCP服务器收到广播后,给主机A发送一条DHCP ACK包,用来确认主机A的请求;(DHCP服务器:成交,这地址给你了)
0
注:Offer和ACK报文也可以说是广播包,因为服务器只是根据MAC地址回应,根本没有看三层
        (这时主机A还没ip地址,三层ip协议头中封装的目标地址是服务器提供的地址;在ACK确认之后才是真正的使用地址)
 
2)为何终端设备发送的DHCP包是广播:
    可能有多个DHCP服务器;
    主机A发送DHCP Discover包后,可能收到多个DHCP服务器的DHCP Offer;
    A会选择其中一个服务器提供的ip地址,选取规则是先到先得;
    然后A给所有的服务器发送DHCP Request,告诉这些服务器,我选了服务器1的ip地址,其它的地址不要了;(其它服务器就知道了自己提供的地址没被需求,因可以把这个地址提供给别人)
    DHCP 服务器提供的 DHCP Offer 、DHCP ACK可能是单播,也可能是广播,根据平台环境决定;
 
3)安全隐患:
    1】伪造DHCP服务器    
    2】饿死攻击    ->不停给DHCP服务器发DHCP Discover,并且不给DHCP服务器发DHCP Request,导致DHCP服务器提供的地址全部被占用;
 
4)DHCP Release包
如果不想要ip地址了,可以退掉;
退掉ip地址的命令:
ipconfig /release
 
此时抓包,可以看到终端设备给DHCP服务器发送的DHCP Release包:(终端设备告诉DHCP服务器:这个ip地址我不要了还给你,地址的信息是xxx)
DHCP服务器收到后,修改该地址的状态(这个地址没使用了,可以分配给其它人)
 
5)DHCP NAK包
DHCP服务器对DHCP Request的拒绝;
NAK报文出现:
    1.IP地址可能已经被使用
    2.租期未到网络信息还存在,换了DHCP服务器 (请求续约,但是服务器根本不存在该网络信息) 
 
 
5.DHCP租期更新
1)租期相关字段
 在DHCP包中,有租期相关的字段;
    Lease Time    ->租期,表示地址多久过期;
    Rebinding Time    ->重绑定时间,表示续租失败的情况下,多久发广播重新绑定ip地州;
    Renewal Time    ->续租时间,表示过多久之后给DHCP服务器发续租请求; (是租期的一半)   
0
 
2)续租流程
在租期时间过50%后,主机会自动发送DHCP Request报文请求DHCP服务器重新续租;
如果DHCP服务器在,就会回一条DHCP ACK;
0
 
 
可以配置租期:(在三层交换机的接口)
sys
int vlanif 10
dhcp server lease day 10 hour 1 minute 1    #将租期改为10天1小时1分钟,最小单位是分
dhcp server lease unlimited    #将租期改为无限,无限 = 2的32次方 - 1 = 4294967295秒
 
 3)DHCP重绑定
在租期时间过50%一直请求服务器,如果服务器在会发送一条DHCP ACK;
如果服务器不在,也就是DHCP服务器没响应时;客户端在87.5%租期时会发送DHCP Request报文请求所有DHCP服务器分配网络信息 (注:是以广播的形式发送)
0
 
4)自动保留IP
无法获取到DHCP服务器分配的网络信息时,Windows客户端会自动使用169.254.0.0/16地址,供临时通信
0
  
 
6.DHCP地址池
  • 所分配地址的集合
 
  • 地址池有两种:
    • 接口地址池  
    • 全局地址池  
  • 同时配置,接口地址池生效
 
接口地址池:
    如图,网关路由器作为DHCP服务器;
    主机A给DHCP服务器的左接口发送DHCP请求,DHCP服务器(这里是网关路由器)就给主机A分配其左接口所在网段的地址;
0
 
全局地址池:
    如图,DHCP服务器不作为网关时;
    设备向DHCP服务器请求地址,DHCP服务器就不能将自己接口所在网段的地址分给设备;
    需要分配的设备网关所在网段的地址;
    这时就需要使用全局地址池;    
 
7.DHCP配置:
命令
备注
Dhcp enable
开启DHCP功能
 dhcp selcet interface
地址池关联接口(在三层接口配置vlanif、路由器接口)
 dhcp server dns-list 114.114.114.114 223.5.5.5
配置接口地址池的DNS服务器
 dhcp server lease day 1 hour 12 
配置接口地址池的租期,默认1天
 dhcp server excluded-ip-address 192.168.10.100
配置接口地址池排除的地址
 dhcp server static-bind-ip-address 192.168.10.100 mac-address 0000.0000.0001
配置静态绑定
 dhcp select global
关联接口和全局地址池绑定
 dhcp select relay
关联接口开启中继代理
 dhcp relay server-ip 192.168.10.254
指定DHCP服务器的地址
 display ip pool interface vlanif10
验证接口地址池的信息
 display ip pool name huawei used
验证全局地址池的信息


 
 
posted @ 2021-05-19 15:18  L丶银甲闪闪  阅读(344)  评论(0编辑  收藏  举报