允許virsh虛擬網路上的KVM來賓存取真實的內部網絡

允許virsh虛擬網路上的KVM來賓存取真實的內部網絡

我在路由器 192.168.1.1 後面有一個家庭網路 192.168.1.0。該網路上有一組現有的 Linux 和 Windows 主機,其中大部分透過有線乙太網路連接。我正在配置一台執行 KVM 虛擬機器管理程式和 3 個 Debian 用戶機的新伺服器。新伺服器使用 wifi 進行網路連線。

在虛擬機器管理程式上,我曾經virsh這樣設定虛擬網路:

<network>
  <name>virtual</name>
  <forward mode='route'/>
  <ip address='192.168.2.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.2.2' end='192.168.2.255'/>
      <host mac='52:54:00:00:00:01' ip='192.168.2.2'/>
      <host mac='52:54:00:00:00:02' ip='192.168.2.3'/>
      <host mac='52:54:00:00:00:03' ip='192.168.2.4'/>
    </dhcp>
  </ip>
</network>

然後,我在路由器中建立了一條從 192.168.2.0/24 到虛擬機器管理程式的 IP 位址 192.168.1.41 的靜態路由。

當我建立 Debian 來賓時,我指定了虛擬網路名稱和虛擬網路的 MAC 位址virsh,如下所示:

--network network=virtual,mac=52:54:00:00:00:01

/etc/network/interfaces每位客人的結果如下:

iface eth0 inet static
   address 192.168.2.2
   netmask 255.255.255.0
   network 192.168.2.0
   broadcast 192.168.2.255
   gateway 192.168.2.1

有了這個配置,一切就基本上正常了。我可以:

  • 從 192.168.1.0 上的主機連接到兩個虛擬機器管理程式 IP 位址(.2.1 和 .1.41)
  • 從 192.168.1.0 上的主機連接到每個來賓
  • 從虛擬機器管理程式連接到每個來賓
  • 從每個來賓連接到虛擬機器管理程式 (.2.1) 以及每個其他來賓
  • 從每位客人連接到公共互聯網
  • 將外部(網際網路)連線從路由器轉送到各個訪客

但是,我不能從訪客連接到 192.168.1.0 網路上的任何主機。例如,我無法從 192.168.2.2 到 192.168.1.31。

Atraceroute顯示類似這樣的內容:

traceroute to 192.168.1.31 (192.168.1.31), 30 hops max, 60 byte packets
 1  sol (192.168.2.1)  0.295 ms  0.252 ms  0.243 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *

我不確定我的配置是否不正確,或者無線接入點是否遇到問題。

我嘗試過添加ebtables配置(如所討論的這裡)進行 MAC 轉換,但這沒有任何區別。我嘗試在 之外添加單獨的橋接網路設備virsh,但現有的虛擬設備無法連接到任何其他橋接器。我考慮過其他選項,例如virsh過濾器或一些 iptables 規則,但我正在抓住救命稻草。

有人可以提出解決這個問題的正確方法嗎?

相關內容