使用 Wireshark 捕获 IPv4 与 IPv6 下的 PXE 启动流量 (Draft)
使用 Wireshark 捕获 IPv4 与 IPv6 下的 PXE 启动流量
一、前言
PXE(Preboot Execution Environment)启动通常涉及 DHCP(IPv4)或 DHCPv6(IPv6)协商,以及 TFTP(或相关协议)传输引导镜像。Wireshark 是一款强大的抓包与分析工具,可以准确捕捉并定位 PXE 启动过程中的问题。此文档适用于同时支持 IPv4 和 IPv6 的混合网络环境。
二、前期准备
确认硬件与网络环境支持:
- IPv4 PXE 启动需要 DHCP Server 和 TFTP Server 支持。
- IPv6 PXE 启动则依赖 DHCPv6 或 RA + Boot Service 配置。
Wireshark 安装与权限配置:
- Linux:
sudo apt install wireshark,并将用户加入wireshark组以非 root 权限使用软件。 - Windows/macOS:下载并安装 Wireshark,同时确保安装了抓包驱动(如 Npcap)。
- Linux:
三、捕获设置——捕获过滤器(Capture Filter)
在 Wireshark 启动抓包前设置过滤器,精准捕获目标数据包,减少噪音。
3.1 IPv4 PXE 流量捕获
推荐使用如下过滤器:
1 | port 67 or port 68 or port 69 or port 4011 |
- 端口 67/68:DHCP Discover / Offer / Request / ACK
- 端口 69:TFTP 文件下载
- 端口 4011:proxyDHCP 回应(若网络使用 proxyDHCP 架构)([Support Portal][1], [FOG Project][2])
你也可以使用保守写法 bootp,Wireshark 会捕捉与 DHCP 相关所有数据包([Super User][3])。
3.2 IPv6 PXE(DHCPv6)流量捕获
对于 IPv6,使用如下过滤策略:
捕获所有 IPv6 流量(可进一步优化过滤):
1
ip6 and (udp port 546 or udp port 547)
- UDP 546/547 是 DHCPv6 的标准端口
或者仅抓原生 IPv6:
1
ip6 and not ip proto 41
用于排除诸如 IPv6-over-IPv4 等隧道流量。
四、抓包执行流程
以下步骤适用于 IPv4 和 IPv6 流程捕获,需选择对应过滤器:
- 启动 Wireshark,选择目标网卡接口(建议与 PXE 客户端在同一子网)。
- 在 “Capture Filter” 输入相应过滤器(详见第三条)。
- 点击 “Start” 开始捕获。
- 重启客户端并触发 PXE 启动流程(IPv4 或 IPv6)。
- 抓包完成后点击 “Stop” 停止录制。
五、分析方法——显示过滤器(Display Filter)
捕获后使用以下显示过滤器查看关键报文:
5.1 IPv4 分析
bootp:查看 DHCP Discover / Offer / Request / ACK;tftp:查看 TFTP 请求与传输过程。
5.2 IPv6 分析(DHCPv6)
dhcpv6:查看 DHCPv6 Solicit / Advertise / Request / Reply 等流程;- 也可使用
ipv6 && dhcpv6组合过滤。
此外,还可以使用 ipv6 查看全部 IPv6 包,或通过 Wireshark 帮助查看相关字段。
六、常见问题与抓包诊断示例
| 问题类型 | 抓包分析思路 |
|---|---|
| 无 DHCP Offer 或 Solicit 无响应 | 确认客户端是否发出 Discover/Solicit,服务器是否响应。抓包端是否拓扑正确(镜像端口或旁听主机)。 |
| 多个 PXE Server Offer 混乱 | IPv4 环境下可能收到多个 Offer,客户端响应第一个,查看抓包是否存在多 Offer 情况。 |
| ACK 包无 Bootfile(IPv4) | DHCP ACK 包中缺少引导文件名,导致 PXE-E53 错误,可能 DHCP Option 配置有误或封包被拦截。 |
| 客户端收不到 DHCPv6 回应 | IPv6 中 DHCPv6 Solicit 后无 Reply,需确认 DHCPv6 服务是否运行正常,网络是否允许 IPv6 广播/组播。 |
| TFTP 未下载引导镜像 | 若 DHCP 阶段正常但 TFTP 阶段失败,可通过 tftp 显示过滤器确认哪一步断裂 |
七、流程对照
| 步骤 | IPv4(bootp) | IPv6(dhcpv6) |
|---|---|---|
| 1 | 安装 Wireshark,选择接口 | 同左 |
| 2 | 设置 Capture Filter:port 67 or 68 or 69 or 4011 |
ip6 and (udp port 546 or 547) |
| 3 | 开始抓包 | 同左 |
| 4 | 客户端触发 PXE 启动 | 同左 |
| 5 | 停止抓包,用 Display Filter 分析 (bootp, tftp) |
用 dhcpv6, ipv6 && dhcpv6 分析 |
| 6 | 定位 DHCP Offer、Bootfile、TFTP 是否完成 | 同 IPv4,重点看 DHCPv6 流程是否完整 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 FrankTest!
评论
