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

| 我们正在做一个小项目,涉及从管理程序层(即QEMU)监视Guest OS(例如Linux)。我们要监视的事情之一是传入/传出Guest OS的网络流量。是否可以不修改来宾操作系统而这样做? 一种方法是拦截在创建套接字时进行的相关系统调用,并在执行指令时从相关寄存器中获取值。但是我们不太确定这是否简单,或者它是否是正确的方法。     
已邀请:
除了@ 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。     
从QEMU文档中:   
-net dump[,vlan=
n
][,file=
文件
][,len=
len
]
     将VLAN n上的网络流量转储到文件文件中(由   默认)。最多len字节(64k   默认)存储每个数据包。的   文件格式为libpcap,因此可以   使用tcpdump或   Wireshark。 如果您是
--net tap
,则还应该能够通过在主机上运行Wireshark进行实时监视。     
由于qemu是开放源代码,因此您可以获取源代码并将代码插入网络设备仿真中,以捕获并记录通过设备的数据包。例如,请参阅hw / virtio-net.c中的virtio_net_flush_tx()例程。     
使用一个名为wireshark的程序。输入搜索过滤器(ip.src eq [IP]或ip.dst eq [same ip]),它将告诉您所有往返该计算机的数据。对寻找有用 更深入地了解它与网络的互动或某些操作。     

要回复问题请先登录注册