Configurações de Rede em uma Máquina Virtual

Este pequeno guia detalha os modos de rede utilizados no Virtual Box, mas é bem similar ao encontrado em outros sistemas de virtualização. Combinando bem os modos é possível criar cenários bastante complexos.

Eis uma tabela resumo com os modos e informações mais essenciais, seguida de uma breve explicação de todos os modos disponíveis.

* É possível configurar um "port forwarding" para, por exemplo, viabilizar um acesso SSH.

NAT (Network Address Translation)

O IP do guest é reconvertido no host usando NAT. Não dá pra acessar a VM guest de fora, nem mesmo do host. Apenas a VM guest acessa o que está fora (na Internet). É a configuração padrão para testar um sistema de forma isolada da máquina host.

NAT Network

As VMs fazem parte de uma mesma rede e acessam redes externas (Internet inclusive). Mas assim como no modo NAT, a máquina host e as demais máquinas da mesma rede local real não enxergam as máquinas da rede NAT. É possível nomear e definir configurações da rede NAT.

Bridged networking

A VM guest se comporta como uma máquina fisica na rede. Ela acessa a placa de rede do host. Se o host trocar entre rede cabeada e wireless é necessário reconfigurar. Muito útil para virtualizar um servidor e acessar no mesmo host, ou na mesma rede.

Internal Networking

Rede interna ao sistema de virtualização. Não conecta ao host e nem à Internet. Precisa IP fixo, ou um DHCP dentro da rede interna (que pode ser configurado automaticamente). Permite múltiplas redes internas e configuração de roteamento.

Host-only Adapter

Similar ao Internal Networking, porém a máquina host participa da rede. Assim é possível usar um navegador, ou clientes SSH. Mas as máquinas dentro da rede host only não acessam redes externas (nem Internet).

Generic Driver

Segundo a dcoumentação "um modo raramente usado". A documentação relata como exemplo a configuração de um tunel UDP para a conexão direta entre duas VMs executadas em diferentes hosts.

Not attached

Desconectado. Bom, talvez uma rede de dormir ajude...


Observação importante! É possível ter mais de uma placa de rede na máquina virtual e elas podem estar configuradas para diferentes modos! Por exemplo, uma configuração com rede interna ou host only pode ter uma máquina com uma placa extra em modo NAT para conectar à Internet.

Potencial problema com IPs duplicados em máquinas clonadas e solução (clique para ler).

PROBLEMA:

Em máquinas clonadas, mais de uma máquina/interface têm o mesmo IP atribuído por DHCP, mesmo com MAC Addresses diferentes!

Não adianta desconectar e reconectar interface, derrubar o link usando ip link set, reiniciar serviços de rede, ou mesmo reiniciar a máquina...

O problema foi detectado no VirtualBox, mas potencialmente acontece em qualquer hipervisor (achei comentários sobre VMware e HyperV também). O problema deve ocorrer com Ubuntu, Debian e derivados.


CAUSA:

A identificação da máquina foi clonada junto e é usada pelo Netplan na solicitação do DHCP. Você pode verificar o id da máquina com hostnamectl.


SOLUÇÃO:

Nas máquinas clonadas rodar os comandos a seguir para "zerar" o machine-id:


echo "" | sudo tee /etc/machine-id

echo "" | sudo tee /var/lib/dbus/machine-id

E reiniciar a máquina para que automaticamente seja gerado um novo machine-id. A rede passará a funcionar.

É possível verificar os IPs atribuídos pelo DHCP do VirtualBox nos arquivos "nome da rede nat"-Dhcpd.leases. Por exemplo:

No Linux:

/home/usuario/.config/VirtualBox/NatNetwork-Dhcpd.leases

No Windows:

C:/Users/usuario/.VirtualBox/NatNetwork-Dhcpd.leases


SOLUÇÃO ALTERNATIVA:

Se você acrescentar no arquivo YAML de configuração da rede (Netplan) a linha abaixo irá resolver a consulta do DNS, mas os clones continuarão com o mesmo id. Acrescente abaixo e no mesmo alinhamento de "dhcp4: true" a seguinte linha:

dhcp-identifier: mac