我在我的ubuntu 16.04 lts上遇到了KVM/libvirt虚拟化和网络名称空间的问题。我想做的是以下围栏设置:
- 一个网络名称空间(栅栏(
- 名称空间中的两个Linux桥。
- 每个桥都有自己的IP网络。
- 允许这两个桥梁之间的IP转发。
- 两个VM。VM1连接到Bridge1,VM2连接到Bridge2。
- ping vm1至vm2。
目的是在我的笔记本电脑上获得一个小实验室,该实验室完全独立于主机的剩余网络设置,该网络设置与外界有通信,在我看来,网络名称空间是实现这一目标的方法,但我遇到了一些障碍。
到目前为止,我已经设置了以下内容:
ip netns add internalSpielwiese
ip netns exec internalSpielwiese bash
ip addr add 127.0.0.1/8 dev lo
ip link set lo up
ip link add name iBr0 type bridge
ip addr add 172.0.0.1/24 dev iBr0
ip link set iBr0 up
ip link add name iBr1 type bridge
ip addr add 172.0.1.1/24 dev iBr1
ip link set iBr1 up
在命名空间内部ping ping是成功的。IP转发已启用。在名称空间之外,桥梁不可见/存在。现在是时候将桥梁在libvirt中闻名了。但这无效。我尝试了此XML
<network>
<name>internalBr0</name>
<uuid>3f4647d9-0c19-509f-b512-9cac91c7149b</uuid>
<forward mode='bridge'/>
<bridge name='iBr0'/>
</network>
以及适当的virsh net-define and Net-start命令。我编辑了VM的XML文件并启动了VM,但结果是:
virsh # start kirke2
error: Failed to start domain kirke2
error: Cannot get interface MTU on 'iBr0': No such device
显然,libvirt在命名空间InternalSpielwiese中没有找到IBR0,经过一些谷歌搜索,我的印象是Libvirt无法处理网络名称空间。还是有办法?如何?
libvirt只能看到Libvirtd正在运行的同一命名空间中的资源。因此,您的私人名称空间中的设备对于Libvirtd看不见。此时,除了在此自定义网络名称空间中运行libvirtd之外,这也没有一个好方法。然后,主机对libvirtd是看不见的 - 这是否取决于您尝试的东西。