Tendo problemas para obter solicitações ARP por meio de uma VM QEMU no Mac OSX

Tendo problemas para obter solicitações ARP por meio de uma VM QEMU no Mac OSX

Usando Mac OS 10.14.5 Mojave e QEMU versão 4.0.0

Estou tentando fazer com que um convidado do Ubuntu Server 19.04 execute comunicação de rede através de uma ponte no meu host Mac. No momento estou lutando até mesmo com um ping de convidado para host e vice-versa.

Criei uma ponte no host com:

sudo ifconfig bridge1 create
sudo ifconfig bridge1 192.168.100.1/24 up

e também defina os sinalizadores sys net.inet.ip.forwarding=1, net.link.ether.inet.proxyall=1embora não tenha certeza se eles são necessários neste ponto do projeto.

A VM é iniciada com:

sudo qemu-system-x86_64 -hda ubuntu-test -cdrom ubuntu-19.04-live-server-amd64.iso -accel hvf -netdev tap,br=/dev/bridge1,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown,id=net0 -device e1000,netdev=net0 -m 512

Onde o script qemu-ifup possui:

ifconfig bridge1 addm tap0

Configurei o ip da vm com netplan via:

network:
  version: 2
  ethernets:
    ens3:
      addresses:
        - 192.168.100.2/24
      gateway4: 192.168.100.1

e netplan se aplicam.

Preencho manualmente as tabelas ARP do host e do convidado com os endereços MAC dos dispositivos de rede em questão:

_gateway (192.168.100.1) at $BRIDGE_MAC [ether] PERM on ens3
? (192.168.100.2) at $GUEST_DEV_MAC on bridge1 ifscope permanent [bridge]

no convidado e no host, respectivamente, onde $GUEST_DEV_MAC e $BRIDGE_MAC são os endereços MAC dos dois dispositivos em questão.

No convidado ufw está desabilitado iptables -S retorna:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

Quando executo o tcpdump no host e tento fazer ping do convidado, posso ver solicitações e respostas de eco ICMP, mas elas não chegam ao convidado:

$GUEST_DEV_MAC > $BRIDGE_MAC, IPv4, length 98: 192.168.100.2 > 192.168.100.1: ICMP echo request, id 1181, seq 2, length 64
$BRIDGE_MAC > $GUEST_DEV_MAC, IPv4, length 98: 192.168.100.1 > 192.168.100.2: ICMP echo reply, id 1181, seq 2, length 64

onde $GUEST_DEV_MAC e $BRIDGE_MAC são os endereços MAC dos dois dispositivos em questão.

Quando tento fazer ping no convidado do host, recebo apenas:

$BRIDGE_MAC > $GUEST_DEV_MAC, IPv4, length 98: 192.168.100.1 > 192.168.100.2: ICMP echo request, id 48948, seq 1, length 64

Não sei o que poderia estar impedindo o tráfego entre eles, mas minha experiência é muito limitada. Se mais informações forem necessárias para depuração, avise-me e, se alguém tiver experiência suficiente para esclarecer o que poderia ser feito para corrigir a conexão, sinta-se à vontade para responder. Obrigado.

informação relacionada