我在路由器 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 规则,但我正在抓住救命稻草。
有人可以提出解决这个问题的正确方法吗?