13

我们正在做一个涉及从管理程序层(即 QEMU)监控来宾操作系统(例如 Linux)的小项目。我们要监控的一件事是进出访客操作系统的网络流量。是否可以在不修改访客操作系统的情况下这样做?

一种方法是拦截在创建套接字时进行的相关系统调用,并在执行指令时从相关寄存器中获取值。但我们不太确定这是否容易,或者它是否是正确的方法。

4

4 回答 4

7

除了@usr57368 答案 - 对于使用“-netdev”创建的设备,请使用“-object filter-dump,...”而不是-net dump:

-object filter-dump,id=id,netdev=dev,file=filename][,maxlen=len]

将 netdev dev 上的网络流量转储到 filename 指定的文件。每个数据包最多存储 len 个字节(默认为 64k)。文件格式为libpcap,因此可以使用tcpdump或Wireshark等工具进行分析。

于 2016-06-01T11:27:28.530 回答
5

来自QEMU 文档

-net dump[,vlan=n][,file=文件][,len=长度]

将 VLAN n上的网络流量转储到文件文件qemu-vlan0.pcap默认情况下)。每个数据包最多存储len个字节(默认为 64k)。文件格式为libpcap,因此可以使用tcpdump或Wireshark等工具进行分析。

如果您--net tap.

于 2011-04-24T04:02:55.780 回答
1

由于 qemu 是开源的,您可以获取源代码并将代码插入到网络设备仿真中,以捕获和记录通过设备的数据包。例如,参见 hw/virtio-net.c 中的 virtio_net_flush_tx() 例程。

于 2011-06-10T07:53:09.387 回答
0

使用一个名为wireshark的程序。输入搜索过滤器(ip.src eq [IP] 或 ip.dst eq [same ip]),它将告诉您进出该计算机的所有数据。有助于深入了解它与网络的交互或某些操作。

于 2011-04-24T02:44:26.017 回答