KVM 虛擬機器在 LAN 中不可見/無法 ping 通

KVM 虛擬機器在 LAN 中不可見/無法 ping 通

我正在硬連線到 LAN 的主機上運行虛擬機器。主機顯示在我的本地網路上(與透過 Wifi 連接的其他主機一樣),但 VM Guest 卻沒有。最初這是因為 VM Guest 是從主機進行 NAT 的。 VM Guest 可以存取網際網路和 LAN 上的其他伺服器,但其他伺服器無法存取它。這是有道理的。我希望發生的是來賓虛擬機器顯示在網路上,就好像它們像主機一樣直接硬連線到它。我一生都無法弄清楚我錯過了什麼。

我有基本的家庭網路設定。它看起來如下圖所示:

在此輸入影像描述

  • Netgear 夜鷹 wifi/路由器
  • 英特爾 NUC 主機硬體連線到路由器
    • Ubuntu 伺服器作業系統
    • KVM/QEMU虛擬化

我最初使用 NATed 配置設定虛擬機,如下所示(預設網路是 NATed 橋接網路):

在此輸入影像描述

上面的方法效果很好,但同樣,我無法從 LAN 上的其他裝置存取虛擬機器(因為它們的虛擬機器已進行 NAT)。

然後,我嘗試設定路由配置,以便每個虛擬機器都可以獲得自己的 IP,並且可以:

  • 到達網路
  • 可從 LAN 上的其他主機存取

我想做的事情與此類似: 在此輸入影像描述

我創建了一個新的虛擬網絡,如下所示: 在此輸入影像描述

然而,透過上述設置,虛擬機器無法存取互聯網,也無法從網路上的其他主機存取。如果我以某種方式在主機後面的 DMZ 中進行設置,那幾乎就是這樣。

根據我讀到的所有內容,設定路由配置(透過 virbr3,如上圖所示)應該在主機上建立一個「路由」類型的虛擬網絡,這將導致主機直接通過。我可以在主機的 ARP 表中看到它了解 VM Guest: 在此輸入影像描述

當我登入 Netgear 路由器時,我希望看到的是列為有線連接的 VM Guest,但它並未列出。我嘗試進入路由器並手動為 VM Guest 的 IP 添加保留的 IP 位址(以及 VM Guest 的 MAC 位址),認為該 IP 的網路請求將被正確路由,但事實並非如此。幾乎就像主機知道虛擬機,但沒有正確通告路由,而且路由器不知道訪客虛擬機,因此當我嘗試從 LAN 上的其他主機 ping 訪客的 IP 時,路由器不會這樣做不知道發送到哪裡?關於如何解決這個問題有什麼建議嗎?

編輯

我意識到缺少的一步是在我的 NetGear 路由器中新增靜態路由,以便它知道將請求轉送到與虛擬機器關聯的 IP 位址(透過 eth0 閘道)。現在我可以從網路上的其他主機 ping 虛擬機,這是一個巨大的進步。唯一剩下的問題是現在虛擬機器無法存取網路(即 google.com)。

編輯2

Guest VM 上的輸出traceroute google.com如下: 在此輸入影像描述

192.168.100.1是本地網關。
我相信192.168.1.1是我的無線網關。我之所以撥打此電話,是因為它在主機和我的 Mac(也連接到 LAN)上顯示為預設閘道。

相關內容