允许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 规则,但我正在抓住救命稻草。

有人可以提出解决这个问题的正确方法吗?

相关内容