在 QEMU 中,是否可以拦截 Linux Guest OS 发送/接收的数据包?

发布于 2024-11-02 05:53:12 字数 179 浏览 3 评论 0原文

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

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

We are doing a little project that involves monitoring the Guest OS (for example Linux) from the hypervisor layer (i.e. QEMU). One of the things that we want to monitor is network traffic going in/out of the Guest OS. Is it possible to do so without modifying the Guest OS?

One way to do it is to intercept the relevant syscalls which are made when sockets are created and fetch the values from the relevant registers as the instructions are being executed. But we are not too sure if it is easy or if its the right way to do it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

逆夏时光 2024-11-09 05:53:12

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

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

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

In addition to @usr57368 answer -
For devices created with ’-netdev’, use ’-object filter-dump,...’ instead -net dump:

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

Dump the network traffic on netdev dev to the file specified by
filename. At most len bytes (64k by default) per packet are stored.
The file format is libpcap, so it can be analyzed with tools such as
tcpdump or Wireshark.

梦幻的心爱 2024-11-09 05:53:12

来自 QEMU 文档

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

将 VLAN n 上的网络流量转储到文件 file (qemu-vlan0.pcap by
默认)。最多 len 个字节(64k
默认)每个数据包都被存储。这
文件格式是libpcap,所以可以
使用 tcpdump 等工具进行分析
Wireshark。

如果您--net tap,您还应该能够通过在主机上运行 Wireshark 进行实时监控。

From the QEMU documentation:

-net dump[,vlan=n][,file=file][,len=len]

Dump network traffic on VLAN n to file file (qemu-vlan0.pcap by
default). At most len bytes (64k by
default) per packet are stored. The
file format is libpcap, so it can be
analyzed with tools such as tcpdump or
Wireshark.

You should also be able to monitor in real-time by running Wireshark on the host if you --net tap.

云醉月微眠 2024-11-09 05:53:12

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

use a program called wireshark. Enter the search filter (ip.src eq [IP] or ip.dst eq [same ip]) and, it will tell you all the data going to and from that computer. Useful for looking
deeper into it's interaction with the network, or certain actions.

花之痕靓丽 2024-11-09 05:53:12

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

Since qemu is open source, you can get the source and insert code into the network device emulation to capture and log the data packets as they come through the device. For example, see the virtio_net_flush_tx() routine in hw/virtio-net.c.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文