Internet client dans une machine virtuelle isolée QEMU utilisant le tunneling de port sur un canal SPICE

L'approche habituelle pour connecter une machine virtuelle à Internet est similaire à la connexion de tout autre appareil au réseau et consiste à connecter une interface réseau virtuelle virtuelle ou probros, ainsi qu'à configurer et vérifier les connexions réseau, les services, les règles de routage et le filtrage du trafic, etc.


Si la machine virtuelle est un serveur ou un bureau virtuel et affectée à un utilisateur spécifique, cette approche est pleinement justifiée, mais que faire si la machine virtuelle est un bureau virtuel public et que n'importe qui peut s'y connecter gratuitement?


Il est nécessaire de s'assurer que l'Internet dans la machine virtuelle démarre non pas du côté hôte, mais du côté client.


La connexion d'une machine virtuelle au canal Internet du client permettra:


  • Réduisez la charge de calcul de l'émulation réseau et de l'interface réseau.
  • Exclure la possibilité d'une attaque de pirate sur une machine virtuelle à partir d'Internet et du réseau virtuel.
  • Relâchez la responsabilité de l'administrateur de l'hôte pour les actions de l'utilisateur de la machine virtuelle dans les cas suivants:
    • Spamming
    • Télécharger / publier du contenu illégal / interdit,
    • Piratage ou piratage d'attaque sur les ressources Internet de l'administrateur d'hébergement, de tiers,
    • Exploitation minière
    • et ainsi de suite ...
  • Réduisez le temps de vérification et de configuration de l'accès à la machine virtuelle Internet

Le moyen le plus simple d'obtenir Internet du client est de transférer l'adaptateur réseau USB ou le modem. Mais cette méthode est très exigeante sur la qualité du réseau. Si la machine virtuelle est située à l'étranger, il est probable qu'il y aura des retards et des blocages.


Une alternative au transfert de périphériques USB peut être le tunneling de port entre le client et la machine virtuelle via le canal SPICE, similaire au tunneling de port dans SSH.


Dans les machines virtuelles QEMU, il existe un canal pour transmettre des données du client à la machine virtuelle, le soi-disant canal SPICE. Ce canal transfère les données du périphérique d'entrée, le contenu du presse-papiers, etc.


Théoriquement, vous pouvez transférer les ports clients locaux (adresse IP 127.0.0.1) vers la machine virtuelle et les organiser comme locaux.


Un exemple d'algorithme pour se connecter au canal Internet d'un client via le tunneling de port:


  • Côté client, vous pouvez élever un serveur proxy ou un serveur VPN qui fournira l'accès au réseau.
  • Dans le client SPICE, la tunnellisation des ports est configurée de sorte que les ports du serveur proxy ou du serveur VPN de la machine virtuelle ressemblent à des ports locaux.
  • Dans le système d'exploitation et dans le navigateur, un sous-système Proxy local est configuré pour se connecter au serveur Proxy via le port local, ou un client VPN est configuré qui se connecte au serveur VPN sur l'hôte local et émule un périphérique réseau virtuel (tun ou tap dans le cas d'OpenVPN).

Implémentation


Tout ce qui reste à faire pour faire de la tunnelisation des ports une réalité est de modifier le code source du client SPICE et des modules complémentaires invités SPICE, de former des correctifs et de l'envoyer aux développeurs. Tout cela est possible car le code source de SPICE est ouvert.


De plus, lors des négociations avec les développeurs de SPICE, il s'est avéré que cette fonctionnalité était implémentée dans le fork FlexVDI de SPICE. Le code source de fork est partiellement publié dans le référentiel [ https://github.com/flexvdi ], disent-ils, il y a un fragment responsable du tunneling.


L'enregistrement des conversations est disponible sur la liste de diffusion Spice-devel , le sujet est Suggestion de fonctionnalité: Tunnellisation de port entre VM et client sur spice-channel .


Champ d'application


Cette technologie peut être largement utilisée dans les machines virtuelles de démonstration et publiques et dans l'hébergement VDI ordinaire.


Si quelqu'un souhaite aider à implémenter cette fonctionnalité, vous pouvez l'implémenter et créer des correctifs. Si vous avez des commentaires et des suggestions, vous pouvez laisser des commentaires.

Source: https://habr.com/ru/post/fr430592/


All Articles