如何让Linux网桥充当集线器而不是虚拟交换机?

如何让Linux网桥充当集线器而不是虚拟交换机?

我正在使用virt-managerqemu运行虚拟机。我需要完成一项任务,涉及从 Kali Linux VM 嗅探来自另一个 VM 的流量。因为桥接网络充当交换机,所以这是不可能的(因为它处于 VMWare 的“混杂模式”)。我在网上找到了这个教程:https://techglimpse.com/convert-linux-bridge-hub-vm-interospection/

这表明您可以用来brctl更改网桥的某些设置,使其充当集线器而不是交换机(并将所有帧转发到虚拟网络中的所有主机)。

桥启动后我运行了以下命令,如文章所示:

brctl stp virbr0 off
brctl setageing virbr0 0
brctl setfd virbr0 0

然后,我在 Kali 上打开 Wireshark,虚拟网卡处于混杂模式。然后,在一个单独的虚拟机中,我运行了ping 8.8.8.8.

当我返回 Kali VM 并尝试查看网络流量时,我可以看到来自 8.8.8.8 的 ICMP 回显回复,但看不到来自虚拟机的回显请求。

我在虚拟机上打开了一个 Web 浏览器并进行了导航,我再次只能看到发往该虚拟机的数据包,而看不到源自该虚拟机的数据包。

我猜测这是因为 virbr0 接口中的默认网关以某种方式直接发送数据包,并且它们没有被转发到每个接口。

我还能做些什么来解决这个问题吗?我读到有关 Open Vswitch 的内容,有没有办法使用这个或其他软件来创建类似集线器的虚拟网络?

我认为这可能与 libvirt 为每个虚拟机创建单独的虚拟接口 vnet* 的事实有关,并且默认网关为何192.168.122.1会将用于互联网的数据包转发回桥接网络是没有意义的。

相关内容