使用 Wireshark 捕获 IPv4 与 IPv6 下的 PXE 启动流量

一、前言

PXE(Preboot Execution Environment)启动通常涉及 DHCP(IPv4)或 DHCPv6(IPv6)协商,以及 TFTP(或相关协议)传输引导镜像。Wireshark 是一款强大的抓包与分析工具,可以准确捕捉并定位 PXE 启动过程中的问题。此文档适用于同时支持 IPv4 和 IPv6 的混合网络环境。


二、前期准备

  1. 确认硬件与网络环境支持

    • IPv4 PXE 启动需要 DHCP Server 和 TFTP Server 支持。
    • IPv6 PXE 启动则依赖 DHCPv6 或 RA + Boot Service 配置。
  2. Wireshark 安装与权限配置

    • Linux:sudo apt install wireshark,并将用户加入 wireshark 组以非 root 权限使用软件。
    • Windows/macOS:下载并安装 Wireshark,同时确保安装了抓包驱动(如 Npcap)。

三、捕获设置——捕获过滤器(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 流程捕获,需选择对应过滤器:

  1. 启动 Wireshark,选择目标网卡接口(建议与 PXE 客户端在同一子网)。
  2. 在 “Capture Filter” 输入相应过滤器(详见第三条)。
  3. 点击 “Start” 开始捕获。
  4. 重启客户端并触发 PXE 启动流程(IPv4 或 IPv6)。
  5. 抓包完成后点击 “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 流程是否完整