Erro de enumeração de interface host-only
Voltar para blog

Erro de enumeração de interface host-only

07/06/2026 · 6 min · Infraestrutura

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.

flowchart TD Host["🖥️ Host OS\n(Camada Física)"] VBoxNet["🔌 Interface Virtual (vboxnet0)\nCamada 2 (Data Link - vboxnetflt)"] DHCP["🌐 Servidor DHCP Virtual\n(Camada 3 - 192.168.56.1)"] VM["🎛️ VM Guest (eth0)\nCamada 3 (IP: 192.168.56.10-100)"] Host -->|"Instancia driver"| VBoxNet VBoxNet -->|"Associa serviço"| DHCP DHCP -->|"Concede IP (Lease)"| VM VM -->|"Roteia pacotes"| VBoxNet style Host fill:#1e3a5f,color:#93c5fd style VBoxNet fill:#0e2a3a,stroke:#4fd8ff,color:#4fd8ff style DHCP fill:#14532d,color:#86efac style VM fill:#78350f,color:#fde68a

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:


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.

  1. Acesse o Gerenciador de Rede de Hospedeiro (Host Network Manager) através das ferramentas globais do VirtualBox.
  2. Acione a criação de uma nova interface. Isso força o VirtualBox a registrar uma nova vboxnet0 no kernel.
  3. 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 ifconfig dentro de uma VM que ainda não tinha conectividade.
  4. 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)#

  1. Verificar os módulos de kernel carregados:
   lsmod | grep vbox

Devem ser listados: vboxnetadp (adaptador virtual), vboxnetflt (filtro de rede) e vboxdrv (driver core).

  1. Confirmar a criação do link no kernel:
   ip link show vboxnet0

Deve exibir o estado UP ou UNKNOWN com o MAC address.

  1. Verificar os servidores DHCP ativos no VirtualBox:
   VBoxManage list dhcpservers

No guest (VM metasploitable)#

  1. 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.

  1. 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:

  1. 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.

  1. 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:

  # 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*"}
  # 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:

  1. Remover a interface criada:
   VBoxManage hostonlyif remove vboxnet0
  1. Remover o servidor DHCP associado:
   VBoxManage dhcpserver remove --network=hostonly
  1. Reverter as configurações de rede da VM para "Nenhum":
   VBoxManage modifyvm "Metasploitable2" --nic1 none
  1. (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:

CC BY-NC

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.

0 comentários