Настройте сеть TAP для QEMU на хосте macOS

Я пытался настроить доступ в Интернет для сервера Ubuntu (да, это должен быть сервер Ubuntu, хотя я бы предпочел что-то легкое, например Alpine) на хосте macOS. Насколько я понимаю, мне нужно использовать сеть Tap / Tun.

Что я сделал до сих пор:

  • Установлены TunTap OSX, так что у меня есть /dev/tap0 устройство.

  • Настроить bridge1 сетевое устройство с использованием ifconfig

  • Установите IP-адрес bridge1 устройство для 192.168.100.1/24.

  • Назначенный IP 192.168.100.0 нажать0.

  • Настройте DHCP-сервер и пересылку пакетов согласно этот сайт

  • Сделал скрипты для addm а также deletem tap0 из bridge1 при запуске и выключении ВМ. (Я убедился, что они работают).

Очевидные проблемы

На данный момент WireShark не показывает трафик через tap0, но весь мой кольцевой трафик проходит через bridge1.

Гость Ubuntu Server по-прежнему не имеет доступа в Интернет. Я не могу отправить данные с хоста гостю или наоборот (пробовал ssh и пару слушателей / клиентов netcat).

Бег ip link show в гостевой показывает всего 2 устройства: lo0 а также ens3. Когда сервер Ubuntu загружается, последний всегда ВЫКЛЮЧЕН, пока я не запустил ip link set ens3 up (что ничего не исправляет).

Когда я запускал эту виртуальную машину на VirtualBox (которая, похоже, сейчас не работает в macOS), сеть отлично работала с использованием виртуального NAT. Я преобразовал .vdi изображение для .qcow2, так что все в квестовой ОС идентично тому, как было раньше.

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

Дампы

bridge1 когда виртуальная машина запущена:

$ ifconfig bridge1

bridge1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether fa:ff:c2:96:c0:01 
    inet 192.168.100.1 netmask 0xffffff00 broadcast 192.168.100.255
    Configuration:
        id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
        maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
        root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
        ipfilter disabled flags 0x0
    member: tap0 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 15 priority 0 path cost 0
    Address cache:
        52:54:0:12:34:56 Vlan1 tap0 992 flags=0<>
    media: autoselect
    status: active

bridge1 когда виртуальная машина нет Бег:

$ ifconfig bridge1

bridge1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=63<RXCSUM,TXCSUM,TSO4,TSO6>
    ether fa:ff:c2:96:c0:01 
    inet 192.168.100.1 netmask 0xffffff00 broadcast 192.168.100.255
    Configuration:
        id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
        maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
        root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
        ipfilter disabled flags 0x0
    Address cache:
    media: <unknown type>
    status: inactive

tap0 когда виртуальная машина нет Бег:

$ ifconfig tap0

ifconfig: interface tap0 does not exist

tap0 когда виртуальная машина запущена:

$ ifconfig tap0

tap0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    ether 7e:9b:23:d0:c2:97 
    media: autoselect
    status: active
    open (pid 2415)

Моя команда QEMU:

sudo qemu-system-x86_64 
-m 1024m 
-smp 1 
-boot d 
-hda Server.qcow2 
-net nic,model=virtio 
-net tap,id=mynet0,ifname=tap0,script=qemu-ifup.sh,downscript=qemu-ifdown.sh

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *