Virtualização Nested no KVM
Nested Virtualization permite ativar os benefícios das técnicas de virtualização dentro de um ambiente já virtualizado. Ou seja, é para executar uma VM dentro de outra VM, sem perder muita performance, removendo assim uma possível camada de software (overhead) e deixando a VM dentro da VM conversar “diretamente” com o hardware do hospedeiro.
Habilitando Nested no Linux
Para habilitar a Virtualização Nested no Linux, primeiro é necessário verificar se hardware do hospedeiro possui suporte a este tipo de recurso:
$ cat /sys/module/kvm_intel/parameters/nested
Y
Para isso basta verificar o conteúdo do arquivo nested
, tal arquivo deve ter o conteúdo 1
ou Y
, ver saída anterior. Tendo esse resultado, é possível habilitar o Nested Virtualization. Com os seguintes comandos:
$ sudo modprobe -r kvm_intel
$ sudo modprobe kvm_intel nested=1
O exemplo anterior foi para processadores Intel, no caso de AMD troque de kvm_intel
para kvm_amd
.
Habilitando Nested no VirtualBox
Bem, depois de habilitar o Nested Virtualization no sistema operacional do hospedeiro, é necessário configurar isso no software de virtualização, neste exemplo será o VirtualBox.
Isso pode ser feito no ambiente gráfico, através do menu do VirtualBox de cada VM: Settings->System->Processor-> Extended Features
, neste é necessário marcar a opção Enable Nested VT-x/AMD-V
. Todavia, pode ser que o gráfico não deixe clicar (esteja cinza - ver Figura 1, só que na figura de exemplo a opção já está marcada, a ideia é que inicialmente ela estará desmarcada). Então, é recomendável realizar tal atividade via comando/console:
Procurar o nome da VM
Vamos iniciar procurando o nome da Vm:
$ VBoxManage list vms
"Metasploitable3-ub1404" {28853c7f-9aef-4623-8fb0-38057c26b026}
"vitima2023" {9f8abba8-d919-471a-a07a-9e7405507eec}
"kali-linux-2023.1-virtualbox-amd64" {54b27b18-9842-4555-b9ac-4881205f19d1}
"ciberseguranca-utfpr-2022" {9c2c748d-e7af-4a3b-a9ed-ecbfd2284627}
"obsd2023" {f02eb80b-976d-4b9b-b19a-c6ce57f4abe2}
"GNS3 VM" {2c9953c5-150e-49bf-bf9c-e9546acbda87}
Neste caso foram apresentados nome e IDs de VM do sistema, o que nos interessa, neste exemplo é o GNS3 VM
.
Habilitando efetivamente o Nested no VirtualBox via comando
Sabendo o nome da VM basta executar o seguinte comando para habilitar o Nested Virtualization:
$ VBoxManage modifyvm "GNS3 VM" --nested-hw-virt on
![]() |
---|
Figura 1 - Nested Virtualization habilitado no VirtualBox |
Com esse resultado (opção Enable Nested VT-x/AMD-V
marcada), agora é possível executar outro ambiente de virtualização dentro deste VirtualBox com um desempenho razoável.
Para realizar o mesmo passo no Windows veja as referências a seguir, mas basicamente são os mesmos passos, na questão do VirtualBox.