Вопрос или проблема
Я только что виртуализировал 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
но это не сработало:
Я также пытался настроить сеть внутри Open Indiana, виртуализированного с помощью bhyve, следуя этой теме:
Изменение IP-адреса в Solaris 11
но это тоже не сработало. Что-то не хватает:
Может кто-то помочь мне правильно настроить сеть внутри ОС? Я никогда не использовал Open Indiana, но мне интересно попробовать его немного.
Результат команды:
# netstat -rn
таков:
Ответ или решение
Решение проблемы настройки сетевого соединения в Open Indiana под управлением bhyve на FreeBSD 14.1
Введение
Настройка сетевого соединения в виртуализированной среде может быть сложной задачей, особенно когда используются различные гипервизоры, такие как bhyve и QEMU. В этом ответе мы рассмотрим конфигурацию сетевого соединения в Open Indiana, который запускается на FreeBSD 14.1 с использованием bhyve. Мы проанализируем предоставленные вами параметры и предложим пути решения.
Анализ конфигурации
Вы предоставили команды для запуска виртуальной машины, которые содержат следующие параметры:
- Сетевой интерфейс: Вы используете
virtio-net
для настройки сети черезtap5
. - Конфигурация сети в Open Indiana: Вы упомянули, что сеть не настроена внутри виртуальной машины, и ваш вывод команды
netstat -rn
не дает нужной информации.
Шаги по решению проблемы
-
Проверка конфигурации tap-интерфейса:
- Убедитесь, что
tap5
существует и активно работает на хост-машине. Выполните команду:ifconfig tap5
- Вы должны увидеть что-то вроде
tap5: flags=...
. Если интерфейс не существует, создайте его с помощью:sudo ifconfig tap5 create
- Убедитесь, что
-
Настройка моста:
- Если у вас есть
bridge
(например,bridge0
), добавьтеtap5
в этот мост. Это позволит вашему гостю использовать настоящий сетевой интерфейс хоста для выхода в сеть:sudo ifconfig bridge0 addm tap5
- Если у вас есть
-
Настройка сети в 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
- Для DHCP:
-
-
Проверка конфигурации сети:
- После настройки проверьте подключение к сети с помощью
ping
:ping 8.8.8.8
- После настройки проверьте подключение к сети с помощью
-
Дополнительные проверки:
- Проверьте настройки DNS, чтобы убедиться, что Open Indiana может разрешать имена. Отредактируйте файл
/etc/resolv.conf
и добавьте записи DNS-серверов:nameserver 8.8.8.8 nameserver 1.1.1.1
- Проверьте настройки DNS, чтобы убедиться, что Open Indiana может разрешать имена. Отредактируйте файл
Заключение
Настройка сетевого подключения в Open Indiana, работающей на bhyve, требует тщательной проверки как на стороне хоста, так и внутри виртуальной машины. Следуя вышеперечисленным шагам, вы сможете установить необходимое сетевое соединение. Если после выполнения этих действий проблемы сохраняются, вам, возможно, следует рассмотреть дополнительные настройки безопасности, такие как наличие брандмауэра, который может блокировать соединения, или конфигурации виртуального NAT.
Успехов в использовании Open Indiana и виртуализации в целом!