QEMU隔离虚拟机中的客户端Internet使用SPICE通道上的端口隧道

将虚拟机连接到Internet的常用方法类似于将任何其他设备连接到网络,并且包括连接虚拟或probros真实网络接口,以及建立和检查网络连接,服务,路由规则以及过滤流量等。


如果虚拟机是服务器或虚拟桌面并分配给特定用户,则此方法是完全合理的,但是如果虚拟机是公共虚拟桌面并且任何人都可以免费连接到该虚拟机怎么办?


必须确保虚拟机中的Internet不是从主机端启动,而是从客户端端启动。


将虚拟机连接到客户端的Internet通道将允许:


  • 减轻网络仿真和网络接口的计算负担。
  • 排除通过Internet和虚拟网络对虚拟机进行黑客攻击的可能性。
  • 在以下情况下,免除主机管理员对虚拟机用户的操作的责任:
    • 垃圾邮件
    • 下载/发布非法/禁止的内容,
    • 对托管管理员,第三方的Internet资源进行的黑客攻击或黑客攻击,
    • 挖矿
    • 等等...
  • 减少检查和配置对Internet虚拟机访问的时间

从客户端获取Internet的最简单方法是转发USB网络适配器或调制解调器。 但是这种方法对网络质量要求很高。 如果虚拟机位于国外,则可能会出现滞后和冻结。


转发USB设备的替代方法是通过SPICE通道在客户端和虚拟机之间建立端口隧道,类似于SSH中的端口隧道。


在QEMU虚拟机中,有一个用于将数据从客户端传输到虚拟机的通道,即所谓的SPICE通道。 此通道传输输入设备数据,剪贴板内容等。


从理论上讲,您可以将本地客户端端口(IP地址127.0.0.1)转发到虚拟机,并将它们安排为本地。


通过端口隧道连接到客户的Internet通道的示例算法:


  • 在客户端,您可以提升将提供对网络访问权限的代理服务器或VPN服务器。
  • 在SPICE客户端中配置了端口隧道,以便虚拟机中的代理服务器或VPN服务器的端口看起来像本地端口。
  • 在操作系统和浏览器中,将本地代理子系统配置为通过本地端口连接到代理服务器,或者将VPN客户端配置为连接到本地主机上的VPN服务器并模拟虚拟网络设备(对于OpenVPN,则为Tun或Tap)。

实作


要使端口隧道成为现实,要做的所有工作就是调整SPICE客户端和SPICE guest虚拟机插件的源代码,形成补丁并将其发送给开发人员。 所有这些都是可能的,因为SPICE的源代码是开放的。


此外,在与SPICE开发人员进行谈判期间,事实证明,这种功能是在SPICE的FlexVDI分支中实现的。 他们说,fork源代码部分发布在其中的存储库[ https://github.com/flexvdi ]中,他们说,其中有一个片段负责隧道传输。


可以在Spice-devel邮件通道上记录对话,主题是“ 功能建议:通过香料通道在VM和客户端之间建立端口隧道 ”。


应用领域


该技术可以广泛用于演示和公共虚拟机以及普通的VDI托管中。


如果有人希望帮助实现此功能,则可以实现此功能并创建补丁;如果有任何意见和建议,则可以留下评论。

Source: https://habr.com/ru/post/zh-CN430592/


All Articles