Wireshark抓包分析DHCP

这篇具有很好参考价值的文章主要介绍了Wireshark抓包分析DHCP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、DHCP简介


动态主机设置协议(英语:Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:用于内部网或网络服务供应商自动分配IP地址;给用户用于内部网管理员作为对所有计算机作中央管理的手段。

DHCP是一个典型的Client/Server模型的协议,使用UDP传输

  • DHCP Server端,使用UDP端口:67
    DHCP Server可以在很多设备上部署,如Cisco、H3C、Juniper、Windows、Linux……都可以

  • DHCP Client端,使用UDP端口:68
    客户端(主机、路由器、交换机、网络打印机、网络摄像头……都可以作为DHCP客户端)

DHCP有三种机制分配IP地址:

  1. 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。

  1. 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

  1. 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。

2、DHCP状态机


如下图所示是比较常见的DHCP状态机

DHCP的实现分为4步,分别是:

第一步:Client端在局域网内发起一个DHCP Discover包,目的是想发现能够给它提供IP的DHCP Server。

第二步:可用的DHCP Server接收到Discover包之后,通过发送DHCP Offer包给予Client端应答,意在告诉Client端它可以提供IP地址。

第三步:Client端接收到Offer包之后,发送DHCP Request包请求分配IP。

第四步:DHCP Server发送ACK数据包,确认信息。

第五步:重新请求获取

第六步:重新发送ack包,确认信息

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

3、wireshake抓包分析


正常来说,一次DHCP过程只需要上面状态机的前四步,后面的续约是在DHCP的租期到达1/2和7/8的时候进行的。

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

打开任意一个数据包,我们可以看到wireshark已经把里面的数据分层显示。

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

从上到下依次为物理层、数据链路层、网络层、传输层和应用层。

tcpdump抓包命令:

tcpdump -i eth0 -c 8 -s 0 -w /mnt/sdcard/dhcp.pcap ‘udp and port 67 and port 68’ &

-i 选择网卡

-c 数据包个数

-s 数据包长度,默认只抓包头,0代表完整数据包

-w 写入文件

udp and port 67 and port 68:dhcp报文的过滤条件,udp协议,端口67和68

&使进程后台运行

3.1 发现阶段——DHCP Discover(广播)


3.1.1 DHCP Discover 理论分析

DHCP Discover(广播)是第一个阶段即DHCP客户端寻找DHCP服务端的阶段。

由于DHCP服务端的IP地址等信息对于DHCP客户端来说是未知,此时就需要使用广播的方式进行发送消息,基于UDP的源端口号68,目的端口号67来发送DHCP Discover发现信息来寻找DHCP服务器。

由于是广播包,在同一个广播域中的每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

在二层中,广播地址是12个f即ff:ff:ff:ff:ff:ff
在三层中,广播地址是4个255(IPv4)即255.255.255.255
换算成二进制,即全为1。

3.1.2 DHCP Discover 物理层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

物理层给出的有用信息并不多,但是我们能够看到网卡相关信息和这个是DHCP的数据包且使用了UDP协议。

3.1.3 DHCP Discover 数据链路层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

数据链路层中我们可以看到本机的MAC地址和目标MAC地址(广播)。

3.1.4 DHCP Discover 网络层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

网络层的参数较多,我们对其进行一一解析:

  • 版本(Version):4,表明这里使用IPv4

  • 头部长度(Header Length):20 bytes,即20个字节

  • 区分服务字段(Differentiated Services Field):0x00,十六进制,换算成二进制正好是下面的8个0,表明当前的IP数据报中没有使用服务类型字段,采用默认的“尽力传输”优先级别

  • 总长度(Total Lenth):328,表明该数据报的总长度是328个字节

  • 标识(Identification):0xe752,十六进制,换算成十进制正好是括号中的59218,表明该数据报的标识为0xe752

  • 分段标识(Flags):
    保留位(Reserved bit)为0,Don’t fragment为0表示该数据报可以被分段,More fragments为0表明后面没有分段

  • 分段偏移(Fragment offset):0,表明没有被分段

  • 生存时间(Time to live):128,表明该数据报最多可以经过128个路由

  • 上层协议(Protocol): UDP,值为17

  • 头部校验(Header checksum): validation disabled,表示没有进行校验

  • 校验状态(Header checksum status):Unverified,同上,没有进行校验

  • 源IP地址(Source):0.0.0.0,表明当前尚未获得DHCP服务端分配的IP地址,只能使用0.0.0.0

  • 目标IP地址(Destination):255.255.255.255,广播IP地址,对同一广播域内的所有TCP/IP协议客户端进行广播

3.1.5 DHCP Discover 传输层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

传输层这里可以看到源端口为68,目的端口为67,且校验状态为未校验。

2.1.6 DHCP Discover 应用层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

应用层的报文也有很多重要数据,我们截取重要的进行分析。

  • Bootp flags:0表示单播,1表示广播,这里为0,即DHCP服务端回复的DHCP Offer报文应为单播形式

部分书上讲述的DHCP四个包都是使用广播的方式进行,实际上DHCP Offer和DHCP Ack这两个数据包是广播还是单播是由DHCP的客户端发送的数据包来决定的。
  • Ciaddr即客户端IP地址(Client IP address)、

Yiaddr即被分配的DHCP客户端IP地址( Your(client) IP address)、

Siaddr即下一个为DHCP客户端分配IP地址的DHCP服务器地址(Next server IP address )、

Giaddr即DHCP中继IP地址(Relay agent IP address)、

这四个IP地址均为0.0.0.0,因为此时还处于DHCP的发现阶段,DHCP客户端对这些信息还是一无所知。

  • 我们还可以看到请求信息里面需要请求获取包括子网掩码(Subnet Mask)、路由网关(Router)、 DNS服务器(Domain Name Server) 、以及域名(Domain Name)等信息

3.2 提供阶段——DHCP Offer(单播/广播)


3.2.1 DHCP Offer 理论分析

提供阶段,即DHCP服务器向DHCP客户端提供预分配IP地址的阶段。网络中的所有DHCP服务器接收到客户端的DHCP Discover报文后都会根据自己的DHCP地址池中IP地址分配的优先次序选出一个IP地址,然后与其他参数一起通过传输层的UDP67号端口在DHCP Offer报文中以单播/广播方式发送给客户端的UDP68号端口。

DHCP服务器在分配这个地址之间会ping一下这个分配的ip地址,如果没有Response就才会预分配这个地址

客户端通过封装在帧中的目的MAC地址(也就是DHCP Discover报文中的CHADDR字段值)的比对来确定是否接收该帧。但这样以来,理论上DHCP客户端可能会收到多个DHCP Offer报文(当网络中存在多个DHCP服务器时),但DHCP客户端只接收第一个到来的DHCP Offer报文。

3.2.2 DHCP Offer 数据链路层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

这时可以看到根据之前的DHCP报文,这里使用了单播的形式。而源MAC地址就是DHCP服务器的MAC地址且目的MAC地址是之前发送DHCP Discover报文的客户端MAC地址。

3.2.3 DHCP Offer 网络层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

网络层报文中我们可以看到这时候目的IP地址和源IP地址都已经有了数据,10.22.25.118就是即将要分配的IP地址,而10.22.25.254就是DHCP服务器的地址又或者是DHCP中继代理服务器的IP地址,具体要看应用层的报文。

通过DHCP中继代理服务,与DHCP服务器不在同一子网的DHCP客户端可以通过DHCP中继代理(通常是路由器或三层交换机设备开启DHCP中继功能)与位于其他网段的DHCP服务器通信,最终是DHCP客户端获取到从DHCP服务器上分配而来的IP地址。
此时的DHCP中继代理就位于DHCP客户端和DHCP服务器之间,负责广播DHCP报文的转发。

3.2.4 DHCP Offer 应用层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

这个时候我们再看应用层的报文:

  • Ciaddr即客户端IP地址(Client IP address):此时还没有分配,所以还是0.0.0.0

  • Yiaddr即被分配的DHCP客户端IP地址( Your(client) IP address):10.22.25.118,这个IP即将分配给该客户端

  • Siaddr即下一个为DHCP客户端分配IP地址的DHCP服务器地址(Next server IP address ):192.168.112.240,这个是分配IP地址的DHCP服务器

  • Giaddr即DHCP中继IP地址(Relay agent IP address):10.22.25.254,这个是DHCP的中继代理服务器的IP地址,在这里应该是一个开启了DHCP中继的三层交换机

  • 子网掩码(Subnet Mask)、路由网关(Router)、 DNS服务器(Domain Name Server) 、以及域名(Domain Name)等信息均已经包含在里面

  • 租约时间是需要注意的一个问题,这里我们可以看到DHCP租约时间(IP Address Lease Time)实际上是8天,单位是s,wieshark换算成了天方便我们查看

  • 而Renewal Time Value就是初次续约的时间,这个时间是租约时间的1/2,这里就是4天,这个时候一般客户端会以单播的方式向DHCP服务器发送报文请求续约

  • 而Rebinding Time Value就是第二次续约时间,这个时间是租约时间的7/8,这里也就是7天,只有在初次续约失败之后,才会在这个时间以广播的方式向网络中的DHCP服务器再次申请IP地址

3.3 选择阶段——DHCP Request(广播)


2.3.1 DHCP Request 理论分析

选择阶段,即DHCP客户端选择IP地址的阶段。

如果有多台DHCP服务器向该客户端发来DHCPOFFER报文,客户端只接收第一个收到的DHCP Offer报文,然后以广播方式发送DHCP Request报文。在该报文的Requested Address选项中包含DHCP服务器在DHCP Offer报文中预分配的IP地址、对应的DHCP服务器IP地址等。

这样也就相当于同时告诉其他DHCP服务器,它们可以释放已提供的地址并将这些地址返回到可用的地址池中。

在DHCP REQUEST报文封装的IP协议头部中,客户端的Source Address仍然是0.0.0.0,数据包的Destination仍然是255.255.255.255。但在DHCP Request报文中Ciaddr、Yiaddr、Siaddr、Giaddr 字段的地址均为0.0.0.0

3.3.2 DHCP Request 数据链路层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

这时候又变回了广播。

3.3.3 DHCP Request 网络层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

由于是广播,所以目标IP地址是255.255.255.255,而源IP地址还是0.0.0.0是因为还没有完成整个DHCP过程,本机尚未获取到IP地址。

3.3.4 DHCP Request 应用层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档
  • Bootp flags:0表示单播,1表示广播,这里为0,即DHCP服务端回复的报文应为单播形式

  • Ciaddr、Yiaddr、Siaddr、Giaddr 字段的地址均为0.0.0.0

3.4 确认阶段——DHCP Ack(单播/广播)


3.4.1 DHCP Ack 理论分析

确认阶段,即DHCP服务器确认分配级DHCP客户端IP地址的阶段。

某个DHCP服务器在收到DHCP客户端发来的DHCP REOUEST报文后,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地址分配给该客户端,则以单播/广播方式返回DHCP ACK报文;否则返回DHCP NAK报文,表明地址不能分配给该客户端。

3.4.2 DHCP Ack 数据链路层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

可以看到这里是单播,源MAC地址是DHCP服务器(此处为中继代理)的MAC地址,目标MAC地址是DHCP客户端的MAC地址。

3.4.3 DHCP Ack 网络层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

10.22.25.118就是即将要分配的IP地址,而10.22.25.254就是DHCP服务器的地址(此处为DHCP中继代理服务器)

3.4.4 DHCP Ack 应用层

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

在DHCPACK报文中Yiaddr字段包含要分配给客户端的IP地址,而Chaddr和DHCP:Client Identifier字段是发出请求的客户端中网卡的MAC地址。

同时,在选项部分也会把在DHCPOFFER报文中所分配的IP地址的子网掩码、默认网关、DNS服务器、租约期、续约时间等信息加上。

4、DHCP的IP地址租约更新


3.1 DHCP服务IP地址租约更新原理


如果采用动态IP地址分配策略,则DHCP服务器分配给客户端的IP地址都是有一定租约期限的,当租约期满后DHCP服务器又会收回原来分配的这个IP地址。

如果DHCP客户端希望继续使用该地址,则需要向DHCP服务器提出更新IP地址租约的申请,也就是前面所说到的“续约”。

IP地址租约更新或者IP地址续约也就是更新服务器端对IP地址的租约信息,使其恢复为初始状态。

3.2 申请续约的方法


  1. 在DHCP客户端的IP地址租约期限达到1/2时,由DHCP客户端向为它分配IP地址的DHCP服务器以单播方式发送DHCP REOUEST请求报文,以期进行IP租约的更新。

  1. 如果DHCP服务器同意续约,则DHCP服务器向客户端以单播方式返回DHCP ACK报文,通知DHCP客户端已经获得新IP租约,可以继续使用此IP地址;相反,如果DHCP服务器不同意续约,则DHCP服务器以单播方式返回DHCP NAK报文,通知DHCP客户端不能获得新的租约,此IP地址不可以再分配给该客户端。

  1. 如果上面的续约申请失败,则DHCP客户端还会在租约期限达到7/8时再次以广播方式发送DHCP REQUEST请求报文进行续约。DHCP服务器的处理方式同上,不再赘述。

  1. 如果第二次续约请求还是失败,则原来租约的IP地址将被释放。

4、DHCP中继代理服务


在前面我们已经说过,在DHCP客户端初次从DHCP服务器获取IP地址的过程中,所有从DHCP客户端发出的请求报文均是以广播方式(目的地址为255.255.255.255)进行发送的,所以DHCP服务只适用于DHCP客户端和DHCP服务器处于同一个子网(也就是DHCP服务器至少有一个端口与DHCP客户端所在的子网是直接连接的)的情况,因为广播包是不能穿越子网的。

基于DHCP服务的以上限制,这样一来,如果DHCP客户端与DHCP服务器之间隔了路由器设备,不在同一子网,就不能直接通过这台DHCP服务器获取IP地址,即使DHCP服务器上已配置了对应的地址池。这也就意味着,如果想要让多个子网中的主机进行动态IP地址分配,就需要在网络中的所有子网中都设置一个DHCP服务器。这显然是很不经济的,也是没有必要的。

DHCP中继功能可以很好地解决DHCP服务的以上难题。通过DHCP中继代理服务,与DHCP服务器不在同一子网的DHCP客户端可以通过DHCP中继代理(通常也是由路由器或三层交换机设备担当,但需要开启DHCP中继功能)与位于其他网段的DHCP服务器通信,最终使DHCP客户端获取到从DHCP服务器上分配而来的IP地址。此时的DHCP中继代理就位于DHCP客户端和DHCP服务器之间,负责广播DHCP报文的转发。

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

从前面的报文分析我们可以轻松的看出10.22.25.118和192.168.112.240是明显不属于同一个子网的,他们之间通信肯定需要使用路由器进行路由,而10.22.25.254就是担任着DHCP中继代理的角色。

至于和DHCP服务器之间经过了多少个路由,我们可以tracert一下。

wireshark抓dhcp包,服务器运维,wireshark,网络,测试工具,Powered by 金山文档

从图中我们可以看到,从10.22.25.254这个DHCP中继代理到DHCP服务器之间需要经过5个路由节点。

而实际上,在很多的大型园区网络中,都会使用一个DHCP服务器集群+多个DHCP中继代理这样的方式进行DHCP分配。

ref:

https://tinychen.com/20190609-wireshark-dhcp/

https://developer.aliyun.com/article/278172

https://blog.csdn.net/qq_24421591/article/details/50936469文章来源地址https://www.toymoban.com/news/detail-791794.html

到了这里,关于Wireshark抓包分析DHCP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建RTSP流媒体服务器(用于测试分析RTSP协议)(rtsp-simple-server+FFmpeg+vlc+wireshark)

    本文所搭建的流媒体服务器是在虚拟机centos7中安装rtsp-simple-server充当服务器,在windows本机中安装FFmpeg用于推流,使用vlc播放器播放rtsp-simple-server中的视频充当拉流,并用wireshark抓包分析RTSP协议。 在https://github.com/aler9/rtsp-simple-server/releases下载linux版本,进入文件夹解压 tar

    2024年02月09日
    浏览(54)
  • 测试DHCP服务器

    1.准备三台虚拟机,不要配ip。 都改成仅主机模式,这样它们和DHCP才会相连 2.进入有DHCP服务器的虚拟机,更改虚拟网络编辑器 (编辑→虚拟网络编辑器(N)) 不勾选使用本地DHCP服务器,修改子网IP为192.168.1.0 勾选是使用虚拟的dhcp服务器来给虚拟机分配ip,我们已经拥有一个

    2024年03月22日
    浏览(56)
  • 如何搭建DHCP服务器

    DHCP作用是给连入网络的没有IP的计算机随机分配IP,作为一个服务器,IP地址一定不能随意改动,因此要设置自己的服务器IP为静态IP。 1.取消虚拟机DHCP服务 首先打开虚拟机界面上方的编辑–虚拟网络编辑器,取消“使用本地DHCP服务将IP地址分配给虚拟机”这个选项,保存设置

    2024年02月09日
    浏览(38)
  • Centos 配置DHCP服务器

    1 DHCP服务相关知识 1.1 DHCP是什么? DHCP是Dynaminc Host CrationProtocol(动态主机配置协议)的缩写,主要作用是为网络客户机自动动态分配IP地址 1.2 DHCP作用 DHCP服务器能够动态地为网络中的其他计算机提供IP地址,通过使用DHCP,可以给网络中除DHCP、DNS服务器外的其他服务器设置

    2024年02月04日
    浏览(55)
  • linux配置dhcp服务器

    作用:为局域网内的电脑分配IP地址 架构 C/S;客户端/服务器模式 实现方式:           1.为相同网段的电脑分配IP地址—DHCP           2.跨网段为另一网段的电脑分配IP地址—DHCP中继 DHCP使用UDP协议,67号是客户机使用的,68号是服务器端的端口号 减少管理员的工作量 避免输

    2024年02月04日
    浏览(71)
  • 【Windows Server 2019】DHCP服务器配置与管理——安装和配置DHCP服务 Ⅱ

    (1)调整虚拟机配置 将虚拟机网卡更改为仅主机模式(或自定义(U):特定虚拟网络)。网络连接调整为仅主机模式的作用是让DHCP服务器存在于一个LAN中,后续的DHCP客户端也需要将网卡模式改为仅主机模式(或自定义(U):特定虚拟网络)。 (2)检查IP地址 2.2 安装DHCP服务 (1)

    2024年02月11日
    浏览(50)
  • “配置DHCP服务器和DHCP中继的网络自动配置实验“

    \\\"配置DHCP服务器和DHCP中继的网络自动配置实验\\\"   【实验目的】 部署DHCP服务器。 熟悉DHCP中继的配置方法。 验证拓扑。 【实验拓扑】 实验拓扑如图所示。 设备参数如下表所示。 设备 接口 IP地址 子网掩码 默认网关 DHCPSERVE S0/3/0 192.168.10.1 255.255.255.0 N/A R2 S0/3/0 192.168.10.2 255.

    2024年02月08日
    浏览(56)
  • 银河麒麟服务器安装wireshark

     双击打开即可  上图为抓包工作界面 使用方法跟windows系统下一致

    2024年02月15日
    浏览(54)
  • 为一台计算机配置Web服务器,DNS服务器与DHCP服务器

    实验目的:为一台计算机配置Web服务器,DNS服务器与DHCP服务器 事先准备:三台纯净虚拟机(以下简称为虚拟机A,虚拟机B,虚拟机C)和一台主机 一、配置静态IP 因为要保证实验畅通,所以必须把四台机器配置成同一网段,使用同一网卡 1、首先保证三台虚拟机的网络适配器

    2024年02月11日
    浏览(53)
  • DHCP服务器+静态路由+动态路由

    DHCP服务器配置 配置代码 全局配置

    2024年02月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包