一次 DHCP 连接示意:
介绍
DHCP 又称动态主机设置协议,是一个用于 IP 网络的网络协议,使用 <font style="color:#DF2A3F;">UDP</font> 协议工作
在我们的设备连接到网络时,并没有分配 IP 地址等信息,那么我们的设备是如何获取 IP 、默认网关、子网掩码等信息的?这一切都靠 DHCP 协议进行获取
:::info
- DHCP 常用于客户端设备: PC 、手机
- 路由器、服务器等设备通常都是手动配置
:::
在小型 LAN 中,路由器充当 DHCP Server
分析
查看当前信息
C:\Windows\System32>ipconfig /all以太网适配器 VMware Network Adapter VMnet8:连接特定的 DNS 后缀 . . . . . . . :描述. . . . . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet8物理地址. . . . . . . . . . . . . : 00-50-56-C0-00-08DHCP 已启用 . . . . . . . . . . . : 是自动配置已启用. . . . . . . . . . : 是本地链接 IPv6 地址. . . . . . . . : fe80::a860:21d1:6131:a716%20(首选)IPv4 地址 . . . . . . . . . . . . : 10.0.173.192(首选)子网掩码 . . . . . . . . . . . . : 255.255.255.128获得租约的时间 . . . . . . . . . : 2023年2月24日 8:40:58租约过期的时间 . . . . . . . . . : 2023年2月24日 20:40:58默认网关. . . . . . . . . . . . . : fe80::c2b8:e6ff:fe51:3166%2010.0.173.129DHCP 服务器 . . . . . . . . . . . : 10.0.173.129DHCPv6 IAID . . . . . . . . . . . : 106169819DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-26-DB-F1-8D-54-05-DB-2B-8F-7BDNS 服务器 . . . . . . . . . . . : 202.207.177.3202.207.177.4114.114.114.114TCPIP 上的 NetBIOS . . . . . . . : 已启用
- 首选:PC 在上次请求 IP 时从 DHCP 处获取的 IP 地址,在下一次请求中还希望获得的 IP 地址
- 租约时间: 客户端会在租约到期之前释放该地址
- DHCP Server、DNS Server
释放当前 IP 地址
C:\Windows\System32>ipconfig /release未知适配器 本地连接:媒体状态 . . . . . . . . . . . . : 媒体已断开连接连接特定的 DNS 后缀 . . . . . . . :
该命令将会先 DHCP Server 发出请求,请求释放我们当前的 IP 地址
WireShark 分析

获取 IP 地址
C:\Windows\System32>ipconfig /renew本地链接 IPv6 地址. . . . . . . . : fe80::a860:21d1:6131:a716%20IPv4 地址 . . . . . . . . . . . . : 10.0.173.192子网掩码 . . . . . . . . . . . . : 255.255.255.128默认网关. . . . . . . . . . . . . : fe80::c2b8:e6ff:fe51:3166%2010.0.173.129

从 DHCP Server 获取 IP 地址涉及四个阶段:
- DHCP Discover : 来自客户端的广播
- DHCP Offer : DHCP Server 发送到客户端,提供客户端使用的 IP 、网关、DNS Server
- DHCP Request : DHCP 客户端发送,告诉服务器使用哪一个 IP 地址,因为可能会有多个返回
- DHCP ACK : 服务器到客户端,确认客户端可以使用请求的 IP 地址,只有当收到这个消息后,客户端才会配置 IP 地址
WireShark 分析
- DHCP Discover

- DHCP Offer

- DHCP Request

- DHCP ACK

DHCP 分析
| 笔记 | Wireshark 过滤器 |
|---|---|
| 全局搜索 | + dhcp 或者 bootp |
| 过滤正确的 DHCP 数据包选项对于找到感兴趣的事件至关重要 + “DHCP Request”数据包包含主机名信息 + “DHCP ACK”数据包表示已接受的请求 + “DHCP NAK”数据包代表被拒绝的请求 由于协议的性质,只有“选项 53”(请求类型)具有预定义的静态值。您应该首先过滤数据包类型,然后您可以通过“应用为列”或使用“包含”和“匹配”等高级过滤器来过滤其余选项。 |
+ 要求:dhcp.option.dhcp == 3 + 确认:dhcp.option.dhcp == 5 + 否定:dhcp.option.dhcp == 6 |
| “DHCP Request”选项可轻松获取唾手可得的果实: + 选项 12:主机名。 + 选项 50:请求的 IP 地址。 + 选项 51:请求的 IP 租用时间。 + Option 61:客户端的MAC地址。 |
+ dhcp.option.hostname contains “keyword” |
| “DHCP ACK”选项用于抓住低垂的果实: + 选项 15:域名。 + 选项 51:分配的 IP 租用时间。 |
+ dhcp.option.domain_name contains “keyword” |
| “DHCP NAK”选项用于抓住低垂的果实: + 选项 56:消息(拒绝详细信息/原因)。 |
由于根据情况/情况,消息可能是唯一的,建议阅读消息而不是过滤消息。因此,分析师可以通过了解事件情况来创建更可靠的假设/结果。 |

