Isso está acontecendo porque você configurou suas redes virtuais como redes "nat".
Essa rede é configurada para que possa acessar somente:
- Outras máquinas virtuais na mesma rede virtual
- O host
- A rede externa (geralmente a Internet)
Em particular, o acesso a qualquer outra rede virtual no host é bloqueado, como você descobriu.
Para resolver este problema, é necessário dois passos:
-
Reconfigure cada rede virtual como uma rede "roteada", sem NAT. Neste caso, o libvirtd não tentará isolar as redes virtuais umas das outras, mas também não executará nenhum NAT.
Você precisará fazer isso editando o XML (com
virsh net-edit networkname
; a GUI do virt-manager não pode fazer essa alteração):<forward mode='nat'/>
deve ser alterado para:
<forward mode='route'/>
Esta alteração entrará em vigor quando você desligar todas as VMs usando a rede, interromper a rede (
virsh net-stop networkname
), reiniciar a rede (virsh net-start networkname
) e reiniciar todas as VMs usando a rede. -
Você também terá que inserir suas próprias regras de mascaramento, se quiser que as máquinas virtuais acessem a Internet.
Por exemplo, em a seção da tabela nat de
/etc/ufw/before.rules
:-A POSTROUTING -s 192.168.122.0/24 -o eth0 -j MASQUERADE -A POSTROUTING -s 192.168.130.0/24 -o eth0 -j MASQUERADE
Como alternativa, você pode esquecer tudo isso e criar uma nova rede virtual que é isolada e fornecer a cada VM uma segunda NIC virtual conectada à rede isolada. As VMs podem se comunicar por meio dessa rede.