Pular para o conteúdo principal

Permitir acesso via Remote Desktop a um guest KVM/qemu em uma rede privada

Eu tenho algumas VMs em meu pequeno cluster KVM. Estas VMs estão interligadas via uma rede privada com NAT, isto é, as podem falar entre si e para acessar a Internet o KVM fornece a elas um gateway. Contudo da minha rede local, eu não consigo acessá-las.

O KVM me oferece algumas opções:

  1. Converter a rede privada em uma rede privada roteável e assim acessar as VMs que desejo;
  2. Usar o iptables no host e criar encaminhamentos para os IPs privados;
  3. Usar vnc para acessar as máquinas;
  4. Usar rdp para acessar as VMs.
Neste post vou mostrar como fazer a quarta opção.
O primeiro passo é habilitar o RDP no seu computador.

Se ele for um Ubuntu (mais novo) o processo é relativamente simples. Abra a janela de configurações (Settings), selecione a opção de compartilhamento (sharing) na lista à esquerda, indica na figura abaixo como (1).

Você precisa ativar o compartilhamento (2) e então selecionar a opção de acesso remoto (3). Com isto uma tela semelhante a mostrada na image abaixo será mostrada. Selecionando (4), você permite que um cliente remoto (utilizando as credenciais em 6) possa ver o conteúdo da tela. Para que ele possa interagir com a tela, é necessário ativar também a opção (5).

Pronto. Sua estação está com RDP ativado.

Agora você precisa alterar o domínio XML da VM que você ativou o RDP.
Você pode fazer isto utilizando o comando 

sudo virsh edit <nome da vm>
ou se possuir o programa virt-manager instalado, fazer a alteração utilizando a interface gráfica.

Vou mostrar a segunda opção, contudo as linhas a serem inseridas são as mesmas via virsh edit.
Como você vai editar o XML é preciso habilitar esta opção no virt-manager, pois por dafault ela fica desabilitada para evitar que cometamos algum erro sem querer. Recomendo que depois da alteração você desabilite a edição novamente.

Selecione a opção de preferencias no menu (como indicado abaixo) e na tela de preferência habilite a edição.



Selecione a VM e clique em mostrar detalhes do hardware virtual (botão em azul com "i" no toolbar).
Note que à direita existem duas abas. Vamos editar diretamente na aba XML.

A primeira coisa a fazer é acrescentar uma definição de esquema ao domínio (XML namespace).
A linha original é:

<domain type='kvm'>

e vamos trocá-la para:


<domain xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0' type='kvm'>


IMPORTANTE: Isto não acrescenta nenhum risco de segurança ao seu ambiente. A única diferença é que agora novas tags (que pertencem ao qemu) podem ser inseridas na configuração.

Acrescentamos agora ao final do arquivo de configuração as linhas que permitem o redirecionamento das portas


<qemu:commandline>
    <qemu:arg value='-netdev'/>
    <qemu:arg value='user,id=mynet.0,net=10.0.10.0/24,hostfwd=tcp::22222-:22,hostfwd=tcp::3389-:3389'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='e1000,netdev=mynet.0'/>
  </qemu:commandline>

Estas linhas fazem dois redirecionamentos:

  1. a porta SSH (22) da VM é redirecionada para a porta 22222 do host
  2. a porta RDP (3389) da VM é redirecionada para a porta 3389 do host

Assim se o host (computador onde as VMs estão rodando) tem o endereço 192.168.10.10, você pode acessar a VM usando

Perceba que a configuração de rede da VM não é importante. Por exemplo, neste caso a VM em questão tem a seguinte configuração:


Outra abordagem

Pode ser o caso que ao tentar fazer as alterações da forma indicada acima o virsh não aceite as alterações. Ao tentar adicionar o namespace na tag de dominio, quando o xml é gravado, o namespace não é inserido.
Neste caso, mantive a tag original do domínio, isto é,

<domain type='kvm'>


e acrescentei as linhas finais com a definição do esquema na tag de commandline

<commandline xmlns="http://libvirt.org/schemas/domain/qemu/1.0">
   <arg value='-netdev'/>
   <arg value='user,id=mynet.0,net=10.0.10.0/24,hostfwd=tcp::22222-:22,hostfwd=tcp::3389-:3389'/>
   <arg value='-device'/>
   <arg value='e1000,netdev=mynet.0'/>
 </commandline>

Ao tentar gravar desta forma, funcionou.


Comentários

Postagens mais visitadas deste blog

Como colocar o PyCharm no launcher do Ubuntu

Atualizei recentemente meu pycharm para a versão 2018.1. A atualização basicamente consiste em baixar do site da Jetbrains  dedicado ao PyCharm, e depois do download basta descompactar e mover o diretório criado para você você achar mais adequado. No meu caso está em ~/bin/pycharm. Para rodar o pycharm é só executar o script pycharm.sh que está no diretório bin dentro do diretório do pycharm, isto é, no meu caso ~/bin/pycharm/bin/pycharm.sh. Eu queria ter o ícone do pycharm no launcher (aquela barra lateral do Ubuntu) para ficar mais fácil chamá-lo. O PyCharm pode criar seu próprio ícone de lançador, contudo ele não é cria por padrão. A gente tem que executar alguns comandos: 1) Comece chamando o PyCharm em um terminal. 2) No menu Ferramentas, selecione "Criar entrada da área de trabalho ..." 3) Se você já tem o PyCharm, ele irá perguntar se você quer reaproveitar as configurações da versão anterior: 4) Marque a caixa correspondente, se você quiser o lanç...

Configurar a ação do Ubuntu 20 ao fechar a tela do notebook

Este post mostra como alterar a ação quando a tampa do laptop é fechada no Ubuntu 20.04 - por exemplo, desligar, hibernar, não fazer nada ou travar a tela. A ação padrão do Ubuntu é suspender a atividade do notebook. Até onde eu sei, até o momento deste post não existe uma opção gráfica para fazer esta configuração, portanto você precisa editar o arquivo logind.conf para alterar a ação. Esta configuração deve funcionar em instalações tipo desktop ou servidor do Ubuntu. Você precisa abrir o terminal (normalmente isto pode ser feito pressionando simultaneamente Ctrl + Alt + T). Com o terminal aberto você pode utilizar um editor para alterar as linhas que controlam a ação. Por exemplo, digite na linha de comando: sudo vi /etc/systemd/logind.conf No arquivo procure a linha (note the # indica que a linha está comentada) # HandleLidSwitch = suspend e altere-a para uma das seguintes opções (note que agora a linha não começa mais com #) - trava o desktop quando a tampa está fechada: HandleLidS...

Resetando a senha do administrador local no Windows Server 2012

Existem diversas formas de redefinir a senha em seu servidor Windows 2012 quando você esqueceu ela. Neste post mostraremos como alterar a senha do usuário administrador, quando você tem acesso físico à ele. Você precisará do DVD de instalação do Windows para fazer isto. São os seguintes passos: 1-) Reinicie o seu computador dando boot pelo DVD do Microsoft Windows Server 2012 (pode ser outra versão) 2-) No menu Instalação do Windows (mostrado abaixo), clique em "Avançar". 3-) Selecione "Reparar seu computador" Como estamos utilizando o DVD do Windows 2008 para reparar um Windows 2012, o seguinte aviso é mostrado. Concorde clicando em Next. 4-) Clique em "Aviso de comando" para abrir uma janela de comandos. 5-) No prompt de comando, execute os seguintes comandos: d: cd windows\system32 ren Utilman.exe Utilman.exe.old copy cmd.exe Utilman.exe 5-) Feche o prompt de comando e clique em "Reiniciar". 6-) O serv...