我有一个测试环境设置,其中有 4 个运行 CentOS 6 的 VirtualBox 客户机。每个客户机都有一个连接到桥接适配器的网络设备,这是我电脑上的主要网络连接,具有静态 IP 地址(范围从 192.168.2.95-98),可由我网络上的任何设备访问。
有时我需要能够分析数据包,原因各不相同。起初,我只是通过 SSH 进入路由器,并使用 tcpdump 捕获来自客户机的所有数据包。但是,它并没有按计划运行...
使用 tcpdump 显示的唯一数据包是 98 与我的网络上除客户机之外的其他设备之间的流量。98 是唯一与我的网络上的其他设备进行通信的客户机(除 SSH 流量之外);其余的客户机与其他客户机进行通信。
我开始根据每个客户机 IP 地址的主机过滤 tcpdump。最后我把它全部剥离到 dump一切。由于所有数据包都经过我电脑上的网络适配器,我捕获了该卡的所有数据包,但仍然没有成功!
使用桥接网络时,VirtualBox 会破坏、注入和删除适配器上的数据包。如果数据包要发送给另一个客户机,VirtualBox 是否会保留该数据包并将其转发给相应的客户机?如果是,我该如何捕获这些数据包?
答案1
当您使用 VirtualBox 的桥接网络模式时,VirtualBox 就像主机物理接口和虚拟网络之间的虚拟交换机。在虚拟网络上的计算机之间传输的数据包永远不会到达主机网络堆栈中 tcpdump 可以拾取它们的点,因此您看不到来自主机的流量。
你可以尝试使用 VirtualBox 内置的网络追踪功能。这是一个调试工具,但它会生成 pcap 文件,并且内置了易于设置的功能。要启用网络跟踪,您可以使用VBoxManage
带有以下选项的命令行--nictrace*
:
VBoxManage modifyvm [your-vm] --nictrace[adapter-number] on --nictracefile[adapter-number] file.pcap