跳转至

捕获数据包跟踪

在诊断问题时,捕获数据包跟踪可能很有用。这允许其他用户准确地看到你的网络上发生了什么,并能大大减少修复问题所需的时间。

如何捕获

捕获数据包跟踪的最简单方法是使用 Wireshark。大多数 Linux 发行版都包含它(只需使用你通常的软件安装机制下载并安装名为 wireshark 的软件包),也可以为 Windows 和 Mac OS X 下载

启动 Wireshark 并开始在适当的网络接口上捕获:

Wireshark welcome screen

在 Wireshark 捕获时,重现你的问题。例如,如果你的问题是 iPXE 无法从你的 iSCSI 目标启动,你应该启动 Wireshark,然后尝试从你的 iSCSI 目标启动。你应该会看到捕获的数据包列表出现在 Wireshark 窗口中:

Wireshark capturing packets

选择 Capture -> Stop 停止捕获,选择 File -> Save As 保存你的捕获文件。

在哪里捕获

你应该设置一台机器来拦截往返于 iPXE 的所有网络流量:

Packet interception

拦截机必须配置两个网络接口。一个接口只连接到 iPXE 机器。另一个接口连接到你的网络。这两个网络接口必须桥接(见下文),以使 iPXE 能够通过拦截机通信。

运行 Linux 的拦截机

在 Linux 下,你可以使用 brctl 命令行工具桥接两个网络接口。(你可能需要安装 bridge-utils 等软件包才能使用此命令。)

关闭你要桥接在一起的两个接口。在本例中,我们将桥接接口 eth0eth1

  ifdown eth0
  ifdown eth1

创建一个新的网桥接口。在本例中,我们将创建网桥接口 br0

  brctl addbr br0
  brctl setfd br0 0

把两个接口添加到你的网桥:

  ifconfig eth0 up
  brctl addif br0 eth0
  ifconfig eth1 up
  brctl addif br0 eth1

你可以使用 brctl show 检查你的网桥配置。你应该会看到类似这样的内容:

  bridge name   bridge id           STP enabled   interfaces
  br0           8000.00270e0d5678   no            eth0
                                                  eth1

你现在可以通过在拦截机上运行 Wireshark 并在接口 br0 上捕获,来拦截往返于 iPXE 的所有网络流量。

运行 Windows 的拦截机

在 Windows 下,你可以使用"网络连接"控制面板桥接两个网络接口。选择两个接口,右键单击,然后选择 桥接

Bridging in Windows

你现在可以通过在拦截机上运行 Wireshark 并在名为 Microsoft MAC Bridge Virtual NIC 的接口上捕获,来拦截往返于 iPXE 的所有网络流量。

拦截虚拟化的 iPXE

如果你在虚拟机内运行 iPXE,那么你可以通过在宿主机上运行 Wireshark 来拦截往返于 iPXE 的所有网络流量,而无需设置单独的拦截机。

使用端口镜像拦截

如果你有一台支持端口镜像的交换机,那么你可以在连接到镜像了 iPXE 机器所连端口的端口的接口上运行 Wireshark,来拦截往返于 iPXE 的所有网络流量,而无需设置单独的拦截机。

不拦截直接捕获

如果你无法拦截网络流量,那么你应该在处理你试图排查的功能的机器上运行 Wireshark。例如,如果问题是 iPXE 无法从你的 DHCP 服务器获取地址,那么你应该在你的 DHCP 服务器上安装并运行 Wireshark。如果问题是 iPXE 成功从 DHCP 获取了地址,但随后无法从你的 iSCSI 目标启动,那么你应该在你的 iSCSI 目标上安装并运行 Wireshark。在相关机器上安装 Wireshark 可能并不总是切实可行的,而且这种方法可能无法捕获所有必需的数据包。

使用你的捕获文件

你可以把捕获文件发送给任何正在帮助诊断你的问题的人。

请注意,数据包捕获文件可能相当大。因此,你通常应该避免把文件通过电子邮件发送给整个邮件列表。你可以在自己的网站上提供你的捕获文件,并把相关 URL 通过电子邮件发送到邮件列表,或者你可以只把捕获文件通过电子邮件发送给个别要求接收的人。

另请注意,数据包捕获可能包含敏感信息,例如你的网络基础设施的详细信息,或者(在极少数情况下)清晰可见的密码。