Возникли проблемы с получением ARP-запросов через виртуальную машину QEMU на Mac OSX

Возникли проблемы с получением ARP-запросов через виртуальную машину QEMU на Mac OSX

Использование Mac OS 10.14.5 Mojave и QEMU версии 4.0.0

Я пытаюсь запустить гостевую Ubuntu Server 19.04 с сетевым подключением через мост на моем хосте Mac. В данный момент я борюсь даже с пингом от гостя к хосту и наоборот.

Я создал мост на хосте с помощью:

sudo ifconfig bridge1 create
sudo ifconfig bridge1 192.168.100.1/24 up

а также установить системные флаги net.inet.ip.forwarding=1, net.link.ether.inet.proxyall=1хотя я не уверен, необходимы ли они на данном этапе проекта.

Виртуальная машина запускается с помощью:

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

Где скрипт qemu-ifup имеет:

ifconfig bridge1 addm tap0

Я установил IP виртуальной машины с помощью netplan через:

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

и netplan применяются.

Я вручную заполняю таблицы ARP хоста и гостя MAC-адресами соответствующих сетевых устройств:

_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]

на гостевой и хостовой машинах соответственно, где $GUEST_DEV_MAC и $BRIDGE_MAC — MAC-адреса двух рассматриваемых устройств.

На гостевой ОС UFW отключен, iptables -S возвращает:

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

Когда я запускаю tcpdump на хосте и пытаюсь выполнить ping с гостевой машины, я вижу запросы и ответы ICMP echo, но они не доходят до гостевой машины:

$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

где $GUEST_DEV_MAC и $BRIDGE_MAC — MAC-адреса двух рассматриваемых устройств.

Когда я пытаюсь пинговать гостя с хоста, я получаю только:

$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

Я не знаю, что может мешать трафику между ними, но мой опыт очень ограничен. Если для отладки потребуется дополнительная информация, дайте мне знать, и если у кого-то достаточно опыта, чтобы пролить свет на то, что можно сделать для исправления соединения, не стесняйтесь ответить. Спасибо.

Связанный контент