Misturar o firewalld com a libvirt pode levar você a esse tipo de situação.
Por padrão, com uma rede "NAT", a rede da libvirt configurará regras de mascaramento para que as VMs possam acessar a Internet IPv4 herdada. Mas o libvirt bloqueia todas as conexões de entrada para redes "NAT".
A solução é mudar a rede para uma rede roteada normal e, em seguida, deixar o firewall lidar com qualquer mascaramento que você possa exigir.
Por exemplo, você editaria o XML da rede e mudaria
<forward mode='nat'/>
para
<forward mode='route'/>
Eu recomendo que você mude todas redes NAT libvirt para rotear, neste cenário, não apenas aquele para o qual você deseja encaminhar as portas, se você quiser permitir que as redes se comuniquem umas com as outras. / p>
Depois, você define o mascaramento na zona do firewalld correspondente à interface conectada ao restante da Internet. Por exemplo:
firewall-cmd [--permanent] --zone=public --add-masquerade
(Com o firewalld 0.4.4.6 ou posterior, você não deve usar isso, mas criar uma regra rica para o mascaramento do IPv4. Essas versões têm um erro de processamento que faz com que uma regra de mascaramento IPv6 também seja adicionada ao usar --add-masquerade
, vai quebrar a conectividade IPv6.)
firewall-cmd [--permanent] --zone=public --add-rich-rule='rule family=ipv4 masquerade'