
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=1
embora 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.