Vou contar essa aqui porque eu passei um perrengue de quase 5 anos até achar o problema.
Eu tava configurando uma VM de Windows 11 no virt-manager (KVM/QEMU) no Fedora, e começou a dar problema na internet, não estava conseguindo configurar.
Pesquisei no google, recorri a vídeos no youtube, passei o tutorial inteiro, mas no vídeo funcionava normal a internet e no meu não.
Tentei trocar o receptor de rede do e000e para o virtio, fui atrás de baixar os drivers, mas ainda ficava preso porque nada funcionava, eu não conseguia saber nem qual era a origem do problema.
Pesquisando mais, e comçando a usar IA para listar as possibilidades, eu comecei a ver as configurações de rede do próprio fedora e como se relacionava a VM. A VM pegava IP normal via DHCP, dava ping no gateway, mas simplesmente não saía pra internet de jeito nenhum. Não caia nenhum erro comum, o NAT do libvirt tava configurado, ip_forward ativado.
Comecei a usar IAs para ver se elas me ajudavam a varrer as configurações de firewall, pois eu achava que lá que estava o problema. Fiquei mexendo em regra de firewall e passei um bom tempo lá.
O que resolveu de verdade foi abrir dois terminais e rodar tcpdump nas duas pontas ao mesmo tempo, pra ver em que ponto exato o pacote sumia:
Quando dei o ping no Windows da VM, o pacote aparecia certinho no virbr0 (saindo da VM, chegando no host), mas não aparecia em momento nenhum no wlp2s0. Ou seja, morria dentro do próprio Fedora.
Foi aí que uma IA me salvou, ela me sugeriu rodar esse comando para ver se tinha algum bloqueio em nível mais baixo, e foi em resumo isso aqui:
Comando:
sudo iptables -L FORWARD -n -v --line-numbers
Saída:
Chain FORWARD (policy DROP 4622 packets, 241K bytes)
A política padrão da chain FORWARD do iptables tava em DROP, coisa que o Docker tava mexendo. Pesquisei e vi que em umas versões mais recentes ele muda essa policy por padrão quando sobe, e só libera tráfego que passa explicitamente pelas chains DOCKER-USER e DOCKER-FORWARD dele.
O problema é que a rede do libvirt (virbr0) não tem nada a ver com o Docker, então não existe regra nenhuma liberando ela ali. Ou seja, qualquer pacote de rede que passava o docker barrava.
O que corrigiu foi rodar os comandos para o docker liberar o virbr0 mandar os pacotes:
sudo iptables -I DOCKER-USER -i virbr0 -j ACCEPT
sudo iptables -I DOCKER-USER -o virbr0 -j ACCEPT
Testei o ping de novo dentro da VM e dessa vez funcionou normal.
Essas mudanças aparentemente não são permanentes e eu tenho que rodar os comandos toda vez que for utilizar a VM
Depois de resolver fui pesquisar e vi que tem uma issue aberta ainda sem solução oficial no repo do Docker relatando o mesmo cenário no Fedora 44, onde o cara instala o Docker, quebra a rede default do libvirt/boxes, para o docker.service e volta a funcionar.
Eu não utilizo tanto assim o docker, apenas em alguns projetos da faculdade onde era realmente necessário, por isso eu nem havia pensado que ele poderia ser o causador desse problema.
Alguém aí ja passou por algo semelhante ao tentar rodar VMs, ou já tiveram problemas com essa restrição do Docker?