A abordagem usual para conectar uma máquina virtual à Internet é semelhante à conexão de qualquer outro dispositivo à rede e consiste em conectar uma interface de rede real virtual ou probros, além de configurar e verificar conexões de rede, serviços, regras de roteamento e filtragem de tráfego, etc.
Se a máquina virtual for um servidor ou uma área de trabalho virtual e atribuída a um usuário específico, essa abordagem será totalmente justificada, mas e se a máquina virtual for uma área de trabalho virtual pública e alguém puder se conectar a ela gratuitamente?
É necessário garantir que a Internet na máquina virtual inicie não no lado do host, mas no lado do cliente.
A conexão de uma máquina virtual ao canal da Internet do cliente permitirá:
- Reduza a carga computacional da emulação e da interface de rede.
- Exclua a possibilidade de um ataque de hackers em uma máquina virtual da Internet e da rede virtual.
- Liberte a responsabilidade do administrador do host pelas ações do usuário da máquina virtual nos seguintes casos:
- Spamming
- Faça o download / publique conteúdo ilegal / proibido,
- Hacking ou ataque de hackers nos recursos da Internet do administrador de hospedagem, de terceiros,
- Mineração
- e assim por diante ...
- Reduza o tempo para verificar e configurar o acesso à máquina virtual da Internet
A maneira mais fácil de obter a Internet do cliente é encaminhar o adaptador ou modem de rede USB. Mas esse método é muito exigente na qualidade da rede. Se a máquina virtual estiver localizada no exterior, é provável que haja atrasos e congelamentos.
Uma alternativa ao encaminhamento de dispositivos USB pode ser o tunelamento de portas entre o cliente e a máquina virtual através do canal SPICE, semelhante ao tunelamento de portas no SSH.
Nas máquinas virtuais QEMU, há um canal para transmitir dados do cliente para a máquina virtual, o chamado canal SPICE. Este canal transfere dados do dispositivo de entrada, conteúdo da área de transferência e muito mais.
Teoricamente, você pode encaminhar as portas locais do cliente (endereço IP 127.0.0.1) para a máquina virtual e organizá-las como locais.
Um exemplo de algoritmo para conectar-se ao canal da Internet de um cliente através do túnel de porta:
- No lado do cliente, você pode criar um servidor proxy ou um servidor VPN que fornecerá acesso à rede.
- No cliente SPICE, o encapsulamento de porta é configurado para que as portas do servidor Proxy ou VPN na máquina virtual pareçam portas locais.
- No sistema operacional e no navegador, um subsistema Proxy local é configurado para conectar-se ao servidor Proxy por meio da porta local ou um cliente VPN é configurado para conectar-se ao servidor VPN no host local e emular um dispositivo de rede virtual (ajuste ou toque no caso do OpenVPN).
Implementação
Tudo o que precisa ser feito para tornar o encapsulamento de portas uma realidade é ajustar o código-fonte do cliente SPICE e dos complementos convidados do SPICE, formar patches e enviá-lo aos desenvolvedores. Tudo isso é possível porque o código fonte do SPICE está aberto.
Além disso, durante as negociações com os desenvolvedores do SPICE, verificou-se que essa funcionalidade foi implementada na bifurcação FlexVDI do SPICE. O código-fonte do fork é parcialmente publicado no repositório [ https://github.com/flexvdi ], e, segundo eles, existe um fragmento responsável pelo encapsulamento.
A gravação de conversas está disponível na lista de discussão Spice-devel , o tópico é " Sugestão de recurso: encapsulamento de porta entre VM e cliente pelo canal de especulação ".
Campo de aplicação
Essa tecnologia pode ser amplamente usada em máquinas virtuais públicas e de demonstração e em hospedagem VDI comum.
Se alguém desejar ajudar a implementar essa funcionalidade, você poderá implementá-la e criar patches.Se você tiver algum comentário ou sugestão, deixe-o.