我有一个系统运行QEMU / KVM(通过libvirt)。 其中一个VM需要在VM主机不在本地的子网上。 我在远程子网上有一个Linux系统。 有没有办法设置某种隧道桥,使虚拟机出现在远程系统上? 这将是一个暂时的情况(希望只有在VM拥有者可以configuration他们的系统之前),networking性能和长期可维护性并不是真正的问题。
给一些更具体的信息:
我的VM主机有IP地址192.168.54.155/24。 虚拟机的IP地址为192.168.65.71/24。 我有一个远程系统在192.168.65.254/24。 VM主机和远程系统都运行Scientific Linux 6.5。 我不控制VM主机和远程系统之间的networking或路由。 我无法访问VM上的来宾操作系统。 即使主机没有直接连接到适当的networking,我也希望stream量到虚拟机的IP地址,最终到达虚拟机。
我尝试过使用iproute2
的隧道,但Linux不会让我添加隧道到桥。 我曾经考虑过使用某种iptables
来改变隧道的stream量,使虚拟机认为它在正确的networking上,但我不确定是否有更好的方法。 什么是完成这个黑客的最好方法?
你有几个select,但他们都在屁股疼痛。
为了帮助你,你正在寻找一个“第二层隧道”(知道要search的是战斗的一半!)
选项1:使用“gretap”隧道。 这在大多数现代Linux发行版中是天真地支持的。
scheme2:在主机上安装openvswitch,在主机间configurationGRE隧道。 你也许可以configurationopenvswitch来做到这一点,但“更简单”的方法是使用OpenFlow控制器(如Ryu,它带有一个简单的开关模块)将它们连接成一个大的虚拟交换机。
我做了选项2,但选项1将是更简单的方法(虽然我从来没有得到它的function,由于其他限制)。