我可以让 KVM 来宾与主机位于同一子网中吗?

Try*_*hen 11 networking kvm-virtualization

使用“默认”虚拟网络,我让来宾位于自己的子网上,并通过 NAT 连接到主机的子网。

使用单独的网桥,似乎可以让来宾与主机位于同一子网上,但显然这需要主机上有一个专用的物理网卡?

我已经尝试过 macvtap vepa 或bridge,但无法通过这种方式获得链接。

是否可以让来宾机像主机一样位于同一子网上的任何其他物理机?如果是这样,怎么办?我需要这个,因为我的应用程序使用广播通信。

我在 rhel 和 ubuntu 上使用 QEMU/KVM。客人也是rhel或者ubuntu。我使用 virt-install、virsh(以及用于测试/调试的 virt-manager)定义/管理虚拟机。服务器没有任何额外的网卡可用于这些目的,只有主机本身使用的网卡。

Mik*_*l H 6

Ubuntu 20.04上的流程:

在主机上设置逻辑网桥

创造/etc/netplan/01-kvmbridge.yaml。例子:

network:
  ethernets:
    enp2s0f0:
      dhcp4: false
  bridges:
    br0:
      interfaces: [enp2s0f0]
      dhcp4: true
      mtu: 1500
      parameters:
        stp: true
        forward-delay: 15
Run Code Online (Sandbox Code Playgroud)

注意: NIC 名称会根据驱动程序而有所不同。地址分配不一定由 DHCP 进行。

运行sudo netplan try以测试配置并sudo netplan apply在您满意它的工作效果后应用它。请注意,通过 ssh 更改网络配置可能不是一个好主意。

告诉 KVM 如何访问连接

创建包含以下内容的文件 ~/kvmbridge.xml:

<network>
  <name>host-bridge</name>
  <forward mode="bridge"/>
  <bridge name="br0"/>
</network>
Run Code Online (Sandbox Code Playgroud)

启用桥接:

virsh net-define ~/kvmbridge.xml
virsh net-start host-bridge
virsh net-autostart host-bridge
Run Code Online (Sandbox Code Playgroud)

您现在应该能够host-bridge为虚拟机选择网络,使它们与主机共存于同一网络上。