Erro de enumeração de interface host-only#
Ao tentar configurar o adaptador de rede da VM Metasploitable 2, o VirtualBox apresentava uma inconsistência de estado. Embora o modo "Placa de rede exclusiva de hospedeiro (host-only)" estivesse selecionado, o campo "Nome" permanecia como "Não selecionado" e a interface gráfica bloqueava o salvamento das configurações com o alerta: "Nenhuma placa de rede apenas para hospedeiro (host-only) foi selecionada".
O sintoma era um bloqueio no provisionamento do adaptador eth0 da VM, impedindo a comunicação em rede entre o host e o guest (camada 3 - Network, via interface virtual operando na camada 2 - Data Link).
O comportamento do sistema#
O VirtualBox gerencia interfaces host-only através de drivers específicos no kernel do host (no Linux, o módulo vboxnetflt e o dispositivo de rede virtual vboxnet). Quando selecionei "Host-only" na GUI, o binário do VirtualBox realiza uma chamada para listar as interfaces disponíveis que possuem o prefixo vboxnetX.
No meu cenário, o problema não era uma falha de permissão no /dev/vboxnetctl, mas sim a inexistência de uma interface persistente criada no subsistema de rede do VirtualBox. Sem uma interface instanciada globalmente, o seletor da GUI não recebia o retorno de nenhuma string válida para preencher o campo Name, resultando em um ponteiro nulo ou vazio na configuração do arquivo .vbox.
Rastreabilidade: onde a falha se manifesta#
No fluxo de execução, o VirtualBox utiliza a API COM/XPCOM para consultar os objetos de rede. A falha manifesta-se na classe de gerenciamento de rede (provavelmente algo próximo a HostNetworkInterface no código-fonte do VirtualBox), onde o método responsável por enumerar as placas configuradas retorna uma lista vazia.
Como o Metasploitable 2 é uma VM focada em segurança, a falta dessa interface impede a criação do socket de rede necessário para que o processo da VM realize o bind com a interface física virtualizada do host.
Hipóteses descartadas#
Durante o troubleshooting, descartei as seguintes causas comuns:
- Driver de Kernel não carregado: O módulo
vboxnetadpestava ativo, caso contrário, a opção "Host-only" sequer estaria disponível ou causaria um crash no serviço. - Conflito de IP: Não era um erro de subrede ou colisão de endereço IP, pois o erro ocorria na camada de hardware virtual (seleção do adaptador), antes mesmo do handshake de rede.
- Permissão de Usuário: O usuário tinha permissão para acessar os dispositivos
/dev/vboxdrv, descartando problemas de privilégios de execução.
A solução via interface gráfica (GUI)#
A resolução consistiu em instanciar manualmente o dispositivo de rede virtual no escopo global do hypervisor para que o subsistema de rede tivesse um alvo para o mapeamento do adaptador.
- Acesse o Gerenciador de Rede de Hospedeiro (Host Network Manager) através das ferramentas globais do VirtualBox.
- Acione a criação de uma nova interface. Isso força o VirtualBox a registrar uma nova
vboxnet0no kernel. - Habilite o Servidor DHCP integrado para garantir que o Metasploitable receba um IP automaticamente no range privado, evitando a necessidade de configuração estática manual via
ifconfigdentro de uma VM que ainda não tinha conectividade. - Após a criação global, o campo "Nome" nas configurações da VM passou a listar
vboxnet0, permitindo o salvamento do estado e o boot correto da máquina.
Solução via linha de comando (CLI) para ambientes headless#
Em servidores headless, ambientes de CI/CD ou automação em lote, a interface gráfica (GUI) não está disponível. Para resolver o problema diretamente pelo terminal, utilize o utilitário VBoxManage:
1. Verificar a versão do VirtualBox e status atual#
Antes de iniciar o provisionamento, certifique-se de validar a versão do VirtualBox instalada para assegurar compatibilidade de comandos CLI:
VBoxManage --version
Agora, liste as interfaces host-only existentes no hypervisor:
VBoxManage list hostonlyifs
Se o comando retornar uma lista vazia, nenhuma interface virtual de hospedeiro foi instanciada globalmente no host.
2. Criar a interface virtual#
Crie a interface que atuará como a placa de rede do host (vboxnet0):
VBoxManage hostonlyif create
Saída esperada: Interface 'vboxnet0' was successfully created
3. Configurar endereçamento IP da interface#
Defina o IP e a máscara de sub-rede da interface no host:
VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0
4. Configurar e habilitar o servidor DHCP#
Associe um servidor DHCP virtual para atribuir automaticamente endereços de IP para as VMs na rede:
# Adicionar a configuração do DHCP
VBoxManage dhcpserver add --network=hostonly --interface=vboxnet0 \
--ip=192.168.56.1 --netmask=255.255.255.0 \
--lowerip=192.168.56.10 --upperip=192.168.56.100
# Habilitar o serviço DHCP para a interface vboxnet0
VBoxManage dhcpserver modify --interface=vboxnet0 --enable
5. Vincular o adaptador à VM#
Associe a nova interface à placa de rede virtual da sua máquina (ex: Metasploitable2):
VBoxManage modifyvm "Metasploitable2" --nic1 hostonly --hostonlyadapter1 vboxnet0
Validação e auditoria pós-instalação#
Para garantir que a interface e o DHCP estejam operacionais, execute estes testes de sanidade:
No host (validação do kernel e DHCP)#
- Verificar os módulos de kernel carregados:
lsmod | grep vbox
Devem ser listados: vboxnetadp (adaptador virtual), vboxnetflt (filtro de rede) e vboxdrv (driver core).
- Confirmar a criação do link no kernel:
ip link show vboxnet0
Deve exibir o estado UP ou UNKNOWN com o MAC address.
- Verificar os servidores DHCP ativos no VirtualBox:
VBoxManage list dhcpservers
No guest (VM metasploitable)#
- Verificar se o DHCP entregou um endereço de IP correto:
ip addr show eth0
O IP deve estar no range 192.168.56.10 a 192.168.56.100.
- Testar a conectividade direta com o host (Gateway):
ping -c 3 192.168.56.1
Script de setup automatizado (setup-vbox-hostonly.sh)#
Se você precisa automatizar a criação da rede host-only em múltiplos servidores de laboratório, pode utilizar este script shell que inclui checagens de sanidade e segurança:
#!/bin/bash
# setup-vbox-hostonly.sh - Configuração automatizada de rede host-only
set -euo pipefail
VM_NAME="${1:-Metasploitable2}"
NETWORK="192.168.56"
DHCP_LOWER="10"
DHCP_UPPER="100"
echo "🔍 Verificando se o VirtualBox está instalado..."
if ! command -v VBoxManage &> /dev/null; then
echo "❌ Erro: VBoxManage não encontrado. Certifique-se de que o VirtualBox está instalado." >&2
exit 1
fi
echo "ℹ️ Versão do VirtualBox instalada:"
VBoxManage --version
echo "🔍 Verificando interfaces existentes..."
EXISTING=$(VBoxManage list hostonlyifs | grep -c "Name:" || true)
if [ "$EXISTING" -eq 0 ]; then
echo "📦 Criando interface host-only..."
VBoxManage hostonlyif create
INTERFACE=$(VBoxManage list hostonlyifs | grep "Name:" | head -1 | awk '{print $2}')
else
INTERFACE=$(VBoxManage list hostonlyifs | grep "Name:" | head -1 | awk '{print $2}')
echo "ℹ️ Usando interface existente: $INTERFACE"
fi
echo "🔧 Configurando IP na interface do host..."
VBoxManage hostonlyif ipconfig "$INTERFACE" --ip "${NETWORK}.1" --netmask 255.255.255.0
echo "🌐 Configurando e habilitando DHCP..."
# Remove DHCP antigo caso já exista para evitar erros de duplicidade
VBoxManage dhcpserver remove --network=hostonly 2>/dev/null || true
VBoxManage dhcpserver add --network=hostonly --interface="$INTERFACE" \
--ip="${NETWORK}.1" --netmask=255.255.255.0 \
--lowerip="${NETWORK}.${DHCP_LOWER}" --upperip="${NETWORK}.${DHCP_UPPER}" \
--enable
echo "🖥️ Associando o adaptador à VM: $VM_NAME"
if VBoxManage list vms | grep -q "\"$VM_NAME\""; then
VBoxManage modifyvm "$VM_NAME" --nic1 hostonly --hostonlyadapter1 "$INTERFACE"
echo "✅ Configuração concluída com sucesso para a VM: $VM_NAME"
else
echo "⚠️ VM '$VM_NAME' não encontrada. O adaptador global '$INTERFACE' foi criado, mas não associado."
fi
Troubleshooting avançado: se a criação falhar#
1. Erro: "failed to create host network interface" (módulos inativos)#
Se o módulo de rede do kernel não estiver carregado, a interface não será inicializada:
# Carregar módulos manualmente no kernel
sudo modprobe vboxnetadp
sudo modprobe vboxnetflt
# Se os módulos falharem ao carregar (Kernel mismatch/updates), recompile:
sudo /sbin/vboxconfig
2. Erro de permissão ("permission denied" ou /dev/vboxnetctl)#
Se o seu usuário de execução não tiver acesso aos nós do driver do VirtualBox:
# 1. Ajuste temporário de permissões dos nós do dispositivo
sudo chmod 666 /dev/vboxdrv /dev/vboxnetctl
# 2. Resolução permanente: Adicione seu usuário ao grupo vboxusers
sudo usermod -aG vboxusers $USER
# NOTA: É necessário encerrar a sessão (logout) e efetuar login novamente para aplicar.
Configurações especiais e casos de uso#
Uso de múltiplas interfaces host-only#
Se o seu laboratório exige o isolamento de diferentes grupos de VMs em sub-redes distintas, você pode criar adaptadores adicionais:
# Criar a segunda interface
VBoxManage hostonlyif create
# Retornará: Interface 'vboxnet1' was successfully created
# Configurar IP em uma sub-rede distinta (ex: 192.168.57.x)
VBoxManage hostonlyif ipconfig vboxnet1 --ip 192.168.57.1 --netmask 255.255.255.0
# Associar a uma segunda VM
VBoxManage modifyvm "VM-Secundaria" --nic1 hostonly --hostonlyadapter1 vboxnet1
Alternativa: configuração de IP estático no guest#
Caso não queira usar o DHCP integrado do VirtualBox e prefira IPs estáticos persistentes nas suas VMs guest:
- No Guest (Debian/Ubuntu -
/etc/network/interfaces):
auto eth0
iface eth0 inet static
address 192.168.56.100
netmask 255.255.255.0
gateway 192.168.56.1
Reinicie o serviço de rede do guest: sudo systemctl restart networking.
- No Guest (Utilizando NetworkManager -
nmcli):
sudo nmcli con mod "Wired connection 1" ipv4.addresses 192.168.56.100/24
sudo nmcli con mod "Wired connection 1" ipv4.gateway 192.168.56.1
sudo nmcli con mod "Wired connection 1" ipv4.method manual
sudo nmcli con up "Wired connection 1"
Notas de compatibilidade multi-plataforma#
As verificações de drivers variam se você não estiver rodando no Linux:
- Windows (PowerShell):
# Listar adaptadores de rede físicos/virtuais ativos do VirtualBox
Get-NetAdapter | Where-Object {$_.Name -like "*VirtualBox*"}
# Verificar drivers instalados e assinados no Driver Store
Get-WindowsDriver -Online | Where-Object {$_.OriginalFileName -like "*VirtualBox*"}
- macOS (Terminal):
# Verificar extensões de kernel (kexts) do VirtualBox carregadas
kextstat | grep -i virtualbox
# Listar interfaces físicas/virtuais criadas
ifconfig | grep vboxnet
Plano de rollback (reversão de alterações)#
Caso as configurações de rede virtual causem instabilidade ou você deseje reverter o ambiente para o estado original, execute o seguinte procedimento:
- Remover a interface criada:
VBoxManage hostonlyif remove vboxnet0
- Remover o servidor DHCP associado:
VBoxManage dhcpserver remove --network=hostonly
- Reverter as configurações de rede da VM para "Nenhum":
VBoxManage modifyvm "Metasploitable2" --nic1 none
- (Opcional) Se você possui um snapshot funcional criado previamente, pode restaurar a VM diretamente ao estado limpo:
VBoxManage snapshot "Metasploitable2" restore "NomeDoSnapshot"
Considerações práticas#
O desfecho foi a normalização da stack de rede, permitindo o tráfego de pacotes entre o host e a VM em um ambiente isolado, ideal para o laboratório de PenTest. Entender o funcionamento por baixo do capô do VirtualBox e dominar o utilitário VBoxManage é essencial para contornar limitações da GUI e automatizar laboratórios headless com segurança e performance.
Este artigo foi útil?
Deixe uma reação rápida para apoiar o conteúdo:
Este post está licenciado sob CC BY-NC.



Comentários
Participe da discussão abaixo.
0 comentários