Can I control VirtualBox guests' network access via NAT on Linux?
Não, você não pode: a análise de pacotes via tcpdump mostra claramente que os pacotes de saída não carregam traços de sua origem (do host / do convidado), então não há maneira fácil de distinguir os dois.
O que você pode fazer é usar adaptador somente host em vez de NAT, habilitar o servidor DHCP e adicionar a seguinte linha ao /etc/rc.local arquivo de cada VM (vou lhe dizer como fazer isso em um segundo):
ip route add default via 192.168.56.1
e para emitir os seguintes comandos no host:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o YourMainInterface -j MASQUERADE
onde YourMainInterface = eth0, wlan0, ... , o que for.
Para produzir BMs idênticos, basta configurar one ao seu gosto, salvá-lo como um arquivo OVA via File - > Export Appliance , depois reimporte-o mudando os endereços MAC de todas as interfaces (uma opção simples e automática no momento importando o Appliance ).
Agora o host tem uma interface, chamada por padrão vbonet0 , na qual você pode ativar o firewall:
iptables -A OUTPUT -o vboxnet0 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o vboxnet0 -d AllowedIpAddress -j ACCEPT
iptables -P OUTPUT -o vboxnet0 DROP