DHCP抓包-Wireshark分析

1、DHCP协议

  • DHCP(动态主机配置协议)是一个局域网的网络协议。
  • 指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
  • DHCP采用UDP的68(客户端)和67(服务器)端口进行通信。

2Wireshark抓包分析工具

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

3、Tcpdump抓包命令详解

tcpdump是Linux下一种网络抓包命令。

【常用选项】

-i    tcpdump -i eth0       指定网络接口,any表示所有接口;

-nn  tcpdump -nn          不解析IP地址和端口号的名称;

-c   tcpdump -c 10          指定抓取包的数量;

-s   tcpdump -s 0(不限制) 指定抓取包的大小;

-w  tcpdump -w /1.pcap      指定保存的文件,后缀一般是.pcap;

【常用过滤条件】

host,src host,dst host  

tcpdump -i eth0 host 10.10.10.30  抓取本机eth0网卡和主机10.10.10.30相关的包;

port,src port,dst port  

    tcpdump -i eth0 port 22  抓取本机eth0网卡和端口22相关的包;

and,or,not

    tcpdump -i eth0 host 10.10.10.30 and port 22  抓取本机eth0网卡和主机10.30端口22相关的包;

4DHCP报文类型

主要类型:

DHCP Discover(发现)、DHCP Offer(提供)、DHCP Request(请求)、DHCP Ack(确认)

其他类型:

DHCP Nak(拒绝)、DHCP Decline(IP冲突)、DHCP Release(释放)、DHCP Inform(网络配置)

DHCP Discover(发现)

此数据包由DHCP Client发送,采用广播的形式通知网络内的DHCP服务器自己需要获得一个IP地址。

DHCP Offer(提供)

DHCP服务器返回的DHCP offer,此报文携带了各种配置信息,包含了一个可以分配的IP地址,也可以包含DNS服务器的地址。

网络内可能有多个DHCP服务器,因此也可能收到多个offer。

DHCP Request(请求)

此数据包用于申请offer中给出的IP地址,此时仍然没有真正获得IP地址,所以仍然是广播形式发送。

DHCP Ack(确认)

DHCP服务器对客户端的REQUEST报文的确认,客户端收到此报文后,才算获得了 IP 地址和相关的配置信息。

DHCP Nak(拒绝)

服务器对客户端的 DHCP REQUEST 报文的拒绝响应报文。

比如:服务器对客户端分配的 IP 地址已超过使用租借期限(服务器没有找到相应的租约记录)

   由于某些原因无法正常分配 IP 地址,则发送 DHCP NAK 报文作为应答(客户端移到了另一个新的网络)。

   通知 DHCP 客户端无法分配合适 IP 地址。DHCP 客户端需要重新发送DHCP DISCOVERY 报文来申请新的 IP 地址。

DHCP Decline(IP冲突)

当客户端发现服务器分配给它的 IP 地址发生冲突时会通过发送此报文来通知服务器,并且会重新向服务器申请地址。

DHCP Release(释放)

客户端可通过发送此报文主动释放服务器分配给它的 IP 地址,当服务器收到此报文后,可将这个 IP 地址分配给其它的客户端。

DHCP Inform(网络配置)

客户端已经获得了 IP 地址,发送此报文的目的是为了从服务器获得其他的一些网络配置信息,比如网关地址、DNS 服务器地址等。

5、IP地址租期
DHCP服务器提供的每个IP地址都有租用期,在Offer报文中的IP Address Lease Time中可以看到。

租期时间过长会导致地址资源长期被占用;

租期过短会导致DHCP请求包过多,增加网络负担;

通常情况下,对DHCP客户端数量较大,且断开网络比较频繁的公共场所,一般把DHCP租期配置较短,这样IP地址能很快被回收,比如机场、商铺等。

6IP地址续租过程
在租期还有1/2时,向DHCP服务器发送第一次DHCP Request报文;

1)如果收到服务器的DHCP Ack后,客户端的IP地址租期重新回满;
2)如果未收到Ack,可以继续使用该IP;

在租期还有1/4时,向DHCP服务器发送第二次DHCP Request报文;

1)如果收到Ack,租期回满;
2)如果未收到Ack,可以继续使用该IP;

在租期还有1/8时,向DHCP服务器发送第三次DHCP Request报文;

1)如果收到Ack,租期回满;
2)如果未收到Ack,租期结束后IP被回收;

7、DHCP抓包过程及包分析

[过程描述]

释放IP:DHCP Release

获取IP:DHCP Discover -- DHCP Offer -- DHCP Request -- DHCP Ack

1)安装tcpdump命令

  # apt -y install tcpdump

2)开始抓包,指定保存路径

  # tcpdump -i ens18 port 67 and port 68 -w /home/uos/Desktop/1.pcap

3)打开一个新的命令终端

释放dhcp获取的IP地址

    # sudo dhclient -r

    # ip a

从DHCP重新新获取IP地址

   # sudo dhclient  

   # ip a

4)结束抓包命令后,用Wireshark工具打开保存的文件1.pcap

5)DHCP Release(释放)

客户端释放IP地址时产生的报文

 6)DHCP Discover(发现)

客户端从DHCP获取IP地址时,客户端发送DHCP Discover广播报文,所以dst目标地址是255.255.255.255;此时客户端是没有IP的,所以src源IP地址是0.0.0.0;客户端src源端口68,dst目标端口67;另外,客户端会随机产生一个Transaction ID,之后收到的Offer报文中的Transaction ID如果与客户端的不一致,客户端会将Offer报文丢弃。

7)DHCP Offer(提供)

DHCP服务器收到来自客户端的报文后,会发送一个DHCP Offer包给客户端。

 8)DHCP Request(请求)

9)DHCP Ack(确认)

<think>嗯,用户询问的是DHCP抓包工具的使用教程。结合之前的引用资料,用户已经对DHCP协议有基本了解,现在需要具体操作指引。用户明确提到“使用教程”,说明需要的是实战指导而非理论。注意到引用[4]详细描述了Windows环境下的抓包流程,而用户没有指定操作系统。需要覆盖主流的Wireshark工具,同时补充跨平台方案。用户作为网络学习者,可能更关注命令行工具作为进阶选项。用户引用的材料都聚焦DHCP交互过程而非其他协议,回复应严格限定在DHCP抓包范畴。引用[3]提到的五个报文(Discover/Offer/Request/Ack/Release)是核心分析对象,这个流程必须完整展示。考虑到用户可能进行实验室环境测试,需要增加过滤技巧和常见错误排查。引用[2]提到的租约机制相关报文也很重要,建议单独设置租期续约的过滤条件示例。用户没有提特定应用场景,可能是普通学习需求。保留IPv4DHCP分析逻辑即可,暂时无需扩展IPv6DHCPv6内容。但要注意引用[4]提到的UDP端口67/68是基础知识点,需要在过滤条件部分强调。最后用户可能需要后续学习路径,相关问题的设计要侧重操作深度(如租期调整后的抓包差异)而非协议扩展(如与DNS交互)。工具使用类问题优先于协议理论问题。</think> 下面是根据您的要求整理的DHCP抓包分析工具及Wireshark操作指南,结合引用资料关键细节: --- ### **📌 一、抓包工具推荐与准备工作** 1. **Wireshark(跨平台首选)** - 官网下载:https://www.wireshark.org/ - 支持实时抓取/解析DHCP报文(端口UDP 67/68)[^4] 2. **tcpdump(Linux命令行)** ```bash tcpdump -i eth0 port 67 or port 68 -w dhcp.pcap # 抓包保存到文件 ``` --- ### **🔧 二、Wireshark抓包教程(以DHCP为例)** #### **步骤1:启动捕获** 1. 打开Wireshark → 选择正在使用的网络接口(如Wi-Fi/Ethernet) 2. 在过滤栏输入 **`bootp`**(DHCP协议在Wireshark中的显示名称)[^4] #### **步骤2:触发DHCP交互** - **手动更新IP**(触发完整流程): ```bash # Windows ipconfig /release && ipconfig /renew # Linux dhclient -r eth0 && dhclient eth0 ``` #### **步骤3:分析核心报文(四步交互)[^3][^4]** | 报文类型 | 发送方 | 目的地址 | 作用 | 关键字段 | |----------------|----------|----------------|-------------------------------|------------------------| | **DHCP Discover** | 客户端 | 255.255.255.255 | 广播寻找DHCP服务器 | `Client MAC` | | **DHCP Offer** | 服务器 | 255.255.255.255 | 提供IP配置参数 | `Your IP`、`Subnet Mask` | | **DHCP Request** | 客户端 | 255.255.255.255 | 确认使用某服务器提供的IP | `Requested IP` | | **DHCP ACK** | 服务器 | 255.255.255.255 | 最终确认分配IP | `IP Address`、`Lease Time` | > ⚠️ **注意**:客户端在收到`ACK`前IP始终为`0.0.0.0`[^4] #### **步骤4:租约管理分析** - **租期续约**(50%时间点自动触发): - 客户端直接向原服务器发送 **`DHCP Request`** 请求延长租期[^2] - **释放IP**: - 主动断开网络时发送 **`DHCP Release`** 报文[^3] --- ### 🔎 **三、高阶分析技巧** 1. **过滤特定报文**: - `bootp.option.dhcp == 1` → 仅显示Discover - `bootp.option.dhcp == 5` → 仅显示ACK 2. **租期跟踪**: - 在`ACK`报文中查看 **`IP Address Lease Time`** 字段(默认8小时)[^3] 3. **异常诊断**: - 重复`Discover`无响应 → 检查服务器可达性 - `Offer`后无`ACK` → IP冲突或服务器故障 --- ### 📚 **四、补充学习建议** 1. **模拟环境搭建**: 使用GNS3/EVE-NG构建包含DHCP服务器的虚拟网络进行测试 2. **RFC文档**: 查阅RFC 2131了解DHCP协议设计细节 --- **📌 推荐学习路径** `基础抓包 → 报文结构分析 → 租约机制验证 → 故障场景复现` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值