我有两个debian9.1-VM在一台KVM主机上运行。
如果他们都在VLAN1上,我可以从一个VM到另一个VM。
如果他们都在另一个VLAN上,他们可以ping但不能相互ssh。
如果另一个KVM主机上的该VLAN中有第三个VM,则该VM可以ssh其他两个VM,并且可以ssh该VM。
什么原因,为什么ssh不工作,如果虚拟机运行在相同的虚拟机pipe理程序?
在KVM主机上需要做些什么才能使虚拟机相互连接,而不需要在该虚拟机上安装KVM主机?
作为一个testing,我做了一个新的安装debian9.1。 然后:
apt-get install vlan modprobe 8021q echo "8021q" >>/etc/modules
之后,我修改了虚拟机上的/etc/network/interfaces ,如下所示:
allow-hotplug ens3 #iface ens3 inet dhcp auto ens3.23 iface ens3.23 inet static address 192.168.23.11 # .12 / .21 on the other ones netmask 255.255.255.0 vlan-raw-device ens3
现在虚拟机正在标记VLAN23的所有数据包。 如果在不同的KVM主机上的虚拟机之间有通信,我可以在交换机上看到这些标签。
结果是:(虚拟机.11和.12在KVM1上,.21在KVM2上)
.11 <-> .12 ==> no connect .11 <-> .21 ==> connect .12 <-> .21 ==> connect
编辑:它不再重要。 我find了一个解决方法 。
NICs是virtio 。
将它们设置为rtl8139一切正常…现在可以从一个VM ssh到另一个VM – 即使它们在相同的pipe理程序上运行。
切换到旧的模拟NIC不能解决问题。
实际上,如果你的虚拟机在不同的VLAN上,他们根本就不能通信,而且他们做的事情是一个明显的错误。
话虽如此,标记虚拟机的正确方法不在虚拟机本身内部,而是通过在主机上创build标记接口,在标记接口的顶部创build网桥(因此您有类似标记的v-交换机)并将虚拟机到那些标记的桥梁。