我有一台有 5 个网卡的服务器。我想将其中 3 个用于我的虚拟机。所以我在我的 debian 主机中设置了这样的东西作为我的默认网络:
<network>
<name>default</name>
<forward mode='private'>
<interface dev='eno2'/>
<interface dev='eno3'/>
<interface dev='eno4'/>
</forward>
</network>
我将其设置为私有,因为我不需要我的客人进行通信,而且他们大多只运行一项服务(邮件/网络服务器、CTF 测试虚拟机、带有 sage jupyter 的计算服务器...)。我从路由器和 ipv6 子网中正确分配了 ipv4 地址。但只有 ipv4 有效。由于某种原因,主机也在接口上分配了 ipv6 地址(不确定是否应该发生这种情况)。但无法通过 ipv6 访问任何内容。在访客上,所有地址都标记为 noprefixroute。
例如,它看起来像这样: 访客:
─$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether ff:23:00:ff:23:ae brd ff:ff:ff:ff:ff:ff
inet 10.0.7.86/24 brd 10.0.7.255 scope global dynamic noprefixroute eth0
valid_lft 86236sec preferred_lft 86236sec
inet6 2a02:5:0:0:0:0:0:1/64 scope global temporary dynamic
valid_lft 604637sec preferred_lft 85668sec
inet6 2a02:5:0:0:0:2:0:1/64 scope global mngtmpaddr noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::beef:beef:beef:bded/64 scope link noprefixroute
valid_lft forever preferred_lft forever
主持人:
ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
(..)
10: eno3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether ff:fe:cc:dd:bb:e3 brd ff:ff:ff:ff:ff:ff
altname enp2s0f0
inet6 2a02:5:0:0:1:2:3:4/64 scope global dynamic mngtmpaddr
valid_lft forever preferred_lft forever
inet6 fe80::beef:beef:beef:57e3/64 scope link
valid_lft forever preferred_lft forever
12: macvtap2@eno3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 500
link/ether 52:54:00:87:e7:ae brd ff:ff:ff:ff:ff:ff
inet6 fe80::acab:acab:acab:beef/64 scope link
valid_lft forever preferred_lft forever
(出于隐私考虑,我更改了示例中的 IP,但你明白了。)
现在,如果我完全忽略 libvirt 的网络并通过使用相关的 pci id 直接连接 NIC,则一切正常:但是在这种情况下,我只能使用 1 个虚拟机,因为两个端口始终形成一个(IOMMU 组)我想将第一个端口用于主机,另一个端口用于配置接口。在这种情况下,性能似乎也会受到影响。所以这不是一个理想的解决方案。
理想情况下,我希望每个虚拟机的行为就像我通过电缆将其物理连接到交换机一样。每个都应该获得一个公共可路由的 ipv6 网络和分配的地址(以及来自路由器的 nat 的 ipv4)。目前,所有端口都连接到同一个交换机,并且交换机正在进行隔离,以确保每个连接的设备只能与互联网通信,并且每个端口都被分配不同的 ip4 和 ip6 子网。
我有点困惑为什么这是一项如此令人困惑的任务。如果我只是以相同的方式将 3 个物理服务器连接到交换机,则一切都会按预期工作。
我还尝试了桥接网络的配置示例,但它也不起作用,而且我不喜欢在配置中设置任何 IP,因为它们可能会更改,并且路由器会更好地正确分配它们(我猜是使用 dhcpv6)。