Попытка настроить сетевое соединение в Open Indiana, виртуализированном с помощью bhyve на FreeBSD 14.1.

Вопрос или проблема

Я только что виртуализировал Open Indiana в bhyve (гипервизор FreeBSD), используя следующие параметры:

bhyve-win -S -c sockets=2,cores=2,threads=2 -m 4G -w -H -A \
-s 0,hostbridge \
-s 1,ahci-hd,/mnt/zroot2/zroot2/bhyve/img/Open-Indiana/efi/Minimal/openindiana-1.img \
-s 8:0,passthru,2/0/0 \
-s 8:1,passthru,2/0/1 \
-s 8:2,passthru,2/0/2 \
-s 8:3,passthru,2/0/3 \
-s 13,virtio-net,tap5 \
-s 29,fbuf,tcp=0.0.0.0:5905,w=1600,h=950,wait \
-s 31,lpc \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI_CODE.fd \
vm0:5 < /dev/null & sleep 2 && vncviewer 0:5 &

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

Вы также можете заметить, что между параметрами bhyve я использую virtio-net. Проблема, с которой я столкнулся, заключается в том, что сеть не настроена внутри виртуальной машины, у меня нет активного соединения.

На этом этапе я попытался настроить Open Indiana, используя qemu вместо bhyve, используя следующие параметры:

qemu-system-x86_64 -name guest=s11x64,debug-threads=on \
  -machine pc,usb=off \
  -cpu kvm64,hv_relaxed,hv_time,hv_synic \
  -m 8G -smp 2,sockets=2,cores=1,threads=1 \
  -nodefaults -no-shutdown \
  -drive if=pflash,format=raw,readonly=on,file=/usr/local/share/edk2-qemu/QEMU_UEFI_CODE-x86_64.fd \
  -drive file=/mnt/zroot2/zroot2/bhyve/img/Open-Indiana/efi/Minimal/openindiana-1.img,format=raw \
  -global PIIX4_PM.disable_s3=1 \
  -global PIIX4_PM.disable_s4=1 \
  -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x4.0x7 \
  -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x4 \
  -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x4.0x1 \
  -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x4.0x2 \
  -device VGA,id=video0,vgamem_mb=32,bus=pci.0,addr=0x2 \
  -netdev tap,id=mynet0,ifname=tap4,script=no,downscript=no \
  -device e1000,netdev=mynet0,mac=52:55:00:d1:55:01 \
  -device ich9-ahci,id=sata

В этом случае я не использую драйверы virtio, а интерфейс сети e1000, и в этом случае я тоже не могу установить интернет-соединение внутри виртуальной машины.

Я пытался следовать этому руководству:

https://docs.oracle.com/cd/E59668_01/html/E59667/z40001c91004844.html

но это не сработало:

1

Я также пытался настроить сеть внутри Open Indiana, виртуализированного с помощью bhyve, следуя этой теме:

Изменение IP-адреса в Solaris 11

но это тоже не сработало. Что-то не хватает:

2

Может кто-то помочь мне правильно настроить сеть внутри ОС? Я никогда не использовал Open Indiana, но мне интересно попробовать его немного.

Результат команды:

# netstat -rn 

таков:

3

Ответ или решение

Решение проблемы настройки сетевого соединения в Open Indiana под управлением bhyve на FreeBSD 14.1

Введение

Настройка сетевого соединения в виртуализированной среде может быть сложной задачей, особенно когда используются различные гипервизоры, такие как bhyve и QEMU. В этом ответе мы рассмотрим конфигурацию сетевого соединения в Open Indiana, который запускается на FreeBSD 14.1 с использованием bhyve. Мы проанализируем предоставленные вами параметры и предложим пути решения.

Анализ конфигурации

Вы предоставили команды для запуска виртуальной машины, которые содержат следующие параметры:

  1. Сетевой интерфейс: Вы используете virtio-net для настройки сети через tap5.
  2. Конфигурация сети в Open Indiana: Вы упомянули, что сеть не настроена внутри виртуальной машины, и ваш вывод команды netstat -rn не дает нужной информации.

Шаги по решению проблемы

  1. Проверка конфигурации tap-интерфейса:

    • Убедитесь, что tap5 существует и активно работает на хост-машине. Выполните команду:
      ifconfig tap5
    • Вы должны увидеть что-то вроде tap5: flags=.... Если интерфейс не существует, создайте его с помощью:
      sudo ifconfig tap5 create
  2. Настройка моста:

    • Если у вас есть bridge (например, bridge0), добавьте tap5 в этот мост. Это позволит вашему гостю использовать настоящий сетевой интерфейс хоста для выхода в сеть:
      sudo ifconfig bridge0 addm tap5
  3. Настройка сети в Open Indiana:

    • После запуска Open Indiana вам необходимо сконфигурировать сетевой интерфейс внутри VM. Выполните команду:

      dladm show-link
    • Это покажет доступные сетевые интерфейсы. Если вы видите интерфейс, например, vnic0, используйте его.

    • Настройте статический IP (или используйте DHCP) с помощью nwam или вручную:

      • Для DHCP:
        nwam up
      • Для статического IP:
        dladm set-linkprop vnic0 ipv4=192.168.1.100/24  # Пример, замените сеть и маску на свои
        ipadm create-vnic vnic0
        ipadm create-ip vnic0
        ipadm set-addr vnic0/ipv4 192.168.1.100/24
        ipadm up-addr vnic0/ipv4
  4. Проверка конфигурации сети:

    • После настройки проверьте подключение к сети с помощью ping:
      ping 8.8.8.8
  5. Дополнительные проверки:

    • Проверьте настройки DNS, чтобы убедиться, что Open Indiana может разрешать имена. Отредактируйте файл /etc/resolv.conf и добавьте записи DNS-серверов:
      nameserver 8.8.8.8
      nameserver 1.1.1.1

Заключение

Настройка сетевого подключения в Open Indiana, работающей на bhyve, требует тщательной проверки как на стороне хоста, так и внутри виртуальной машины. Следуя вышеперечисленным шагам, вы сможете установить необходимое сетевое соединение. Если после выполнения этих действий проблемы сохраняются, вам, возможно, следует рассмотреть дополнительные настройки безопасности, такие как наличие брандмауэра, который может блокировать соединения, или конфигурации виртуального NAT.

Успехов в использовании Open Indiana и виртуализации в целом!

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

Капча загружается...