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