Libvirt 路由网络 - 无法将客户虚拟机连接到外部路由器

Libvirt 路由网络 - 无法将客户虚拟机连接到外部路由器

我正在尝试构建一个虚拟实验室来测试 Cisco ISR 路由器的一些 NAS64 功能。

目标是让仅支持 IPv4 和仅支持 IPv6 的访客通过 Cisco ISR 4321 相互通信。基本思路如下:

实验室基本理念

我在 Linux 机器上使用 KVM/QEMU 来托管环境。我不想使用 NATed 网络,因为这会使进一步的测试更加复杂。

我无论如何也无法在路由器和客户机之间建立连接(我正在用简单的 PING 进行测试),此时,我只能见树木不见森林。

我苦苦挣扎的基本实现如下所示:

简单实验室

我有一个客户机、一个网桥、主机的接口和路由器。

router 192.0.2.3/24
eth0   192.0.2.2/24
br0    192.0.2.1/24
vm     192.0.2.4/24

主持人br0虚拟机可以互相交谈,但是路由器只能与主持人主持人可以和每个人交谈)。

我想将所有内容放在具有相同网络掩码(192.0.2.0/24)的同一网络中,但 libvirt 抛出了错误,即 192.0.2.0/24 已被 eth0 使用(用于与路由器的连接)

所以我尝试将网络分为主机+路由器br0 + 客人 例如:

router 192.0.2.250/25
eth0   192.0.2.240/25
br0    192.0.2.1/25
vm     192.0.2.2/25

并设置如下路线:

# ip r add 192.0.2.250 via 192.0.2.240 dev br0
Error: Nexthop has invalid gateway.

但它会引发给定的错误。

我的路由表如下所示:

192.0.2.0/25 dev virb0 proto kernel scope link src 192.0.2.1 
192.0.2.128/25 dev eth0 proto kernel scope link src 192.0.2.240 metric 101 

我还尝试了其他一些方法(其中很多方法可能不建议采用),比如用重叠网络分割网络,但这只会导致与路由器的连接中断,因为eth0路由至br0(这很有道理)。

我不知所措。我尝试过的所有方法,我所想到的所有失败原因,都没有奏效。我真的不明白为什么每个节点之间都有连接,但从路由器虚拟机。(我也不明白为什么主持人使用 192.0.2.240/25 可以 ping 通虚拟机与 192.0.2.2/25)。

我希望有人能给我一些指点:)

相关内容