KVM VM 在 LAN 上不可见/无法 ping

KVM VM 在 LAN 上不可见/无法 ping

我在一台硬连线到我的 LAN 的主机上运行虚拟机。主机出现在我的本地网络上(通过 Wifi 连接的其他主机也是如此),但 VM Guest 没有出现。最初这是因为 VM Guest 与主机进行了 NAT。VM Guest 可以访问互联网和 LAN 上的其他服务器,但其他服务器无法访问它。这是有道理的。我希望 Guest VM 出现在网络上,就像它们像主机一样直接硬连线到网络上一样。我终其一生都无法弄清楚我错过了什么。

我有一个基本的家庭网络设置。它如下图所示:

在此处输入图片描述

  • Netgear Nighthawk 无线网络/路由器
  • 英特尔 NUC 主机硬连线至路由器
    • Ubuntu 服务器操作系统
    • KVM/QEMU 虚拟化

我最初使用 NATed 配置设置了 VM,如下所示(默认网络是 NATed 桥接网络):

在此处输入图片描述

上述方法效果很好,但是,我无法从 LAN 上的其他设备访问虚拟机(因为它们的虚拟机是经过 NAT 的)。

然后,我尝试设置路由配置,以便每个虚拟机都能获得自己的 IP,并且可以:

  • 访问互联网
  • 可从 LAN 上的其他主机访问

我尝试做的是类似这样的事: 在此处输入图片描述

我创建了一个新的虚拟网络,如下所示: 在此处输入图片描述

但是,使用上述设置后,虚拟机无法访问互联网,也无法从网络上的其他主机访问。如果我以某种方式在主机后面的 DMZ 中进行设置,情况几乎就是这样。

从我读到的所有内容来看,设置路由配置(通过 virbr3,如上图所示)应该在主机上创建一个类型为“路由”的虚拟网络,这将导致主机直接通过。我可以在主机的 ARP 表上看到它知道 VM Guest: 在此处输入图片描述

当我登录到我的 Netgear 路由器时,我希望看到的是 VM Guest 被列为有线连接,但实际上并没有列出。我尝试进入路由器并手动为 VM Guest 的 IP(以及 VM Guest 的 MAC 地址)添加一个保留的 IP 地址,以为该 IP 的网络请求将被正确路由,但事实并非如此。这几乎就像主机知道 VM,但没有正确通告路由,而路由器不知道 Guest VM,因此当我尝试从 LAN 上的其他主机 ping Guest 的 IP 时,路由器不知道将其发送到哪里?有什么关于如何补救的建议吗?

编辑

我意识到缺少的一个步骤是在我的 NetGear 路由器中添加静态路由,以便它知道将请求转发到与虚拟机关联的 IP 地址的位置(通过 eth0 网关)。现在我可以从网络上的其他主机 ping 虚拟机,这是一个巨大的进步。唯一剩下的问题是现在虚拟机无法访问互联网(即 google.com)。

编辑2

客户虚拟机上的输出traceroute google.com如下: 在此处输入图片描述

192.168.100.1 是本地网关。
我认为 192.168.1.1 是我的无线网关。我之所以拨打此电话,是因为它在主机和连接到 LAN 的 Mac 上显示为默认网关。

相关内容