Estou tentando criar duas VMs conectadas à mesma rede privada. Estou usando o Linux com o qemu-kvm 1.0.
Meu plano de ataque foi este:
brctl addbr bridge
ifconfig bridge up
tunctl -t tap1
tunctl -t tap2
ifconfig tap1 up
ifconfig tap2 up
brctl addif bridge tap1
brctl addif bridge tap2
qemu-kvm -net nic,macaddr=52:54:00:11:22:33 -net tap,ifname=tap1 disk1.img
qemu-kvm -net nic,macaddr=52:54:00:44:55:66 -net tap,ifname=tap2 disk2.img
Uma vez inicializado, forneço à primeira máquina o endereço IP 192.168.100.5 e o segundo 192.168.100.10.
Neste ponto, quando tento executar o ping de uma VM da outra, não há resposta de ping. No entanto, usando o Wireshark, vejo que as solicitações ARP são enviadas e respondidas e verifiquei se os caches ARP contêm as informações nas outras VMs. No entanto, nenhuma resposta de ping é gerada (como visto no Wireshark).
Em seguida, tentei fornecer à bridge um endereço IP 192.168.100.1. Depois de fazer isso, o ping entre as VMs funciona, mas ainda há um problema: agora todas as solicitações parecem vir da própria ponte. Por exemplo, se eu me conectar de uma VM ao servidor FTP da outra pessoa, a execução do netstat na VM com o servidor FTP mostrará que 192.168.100.1 é a origem. As conexões funcionam como no NAT, mas, como ocorre com o NAT, o endereço de origem não é o da máquina de origem. Eu tentei isso com net.ipv4.ip_forward tanto on e off, e masquerading (iptables -t nat -A POSTROUTING-j MASCARADA) ligado e desligado, com os mesmos resultados.
O que eu realmente quero é que minhas VMs ajam como se estivessem conectadas a um switch: elas devem ser transparentes. Estou mais preocupado com o endereço de origem que se parece com a ponte do que com a ponte que requer um IP. O último é um pouco chato, mas o primeiro é um bloqueador para mim.