В гипервизоре VirtualBox, есть возможность подключить к виртуальным машинам восемь сетевых карт, GUI интерфейс позволяет настроить только первые четыре интерфейса, для настройки всех восьми карт следует использовать утилиту командной строки vboxmanager. Эта утилита присутствует и в Linux и в Windows версиях VirtualBox.
Далее речь пойдёт о Windows версии гипервизора, а настраивать будем адаптеры следующих типов:
- Внутренняя сеть (Internal Network);
- Сетевой мост (Bridged Interface);
- Виртуальный адаптер хоста (Host-only Interface).
Заходим в командную строку и переходим в каталог с установленным гипервизором
cd "C:\Program Files\Oracle\VirtualBox"
Выведем список виртуальных машин на гипервизоре
VBoxManage.exe list vms
Показывать настройку буду на машине Astra01, сеть будем приводить к следующей схеме
- первый интерфейс подключим к сетевой карте моего ПК в режиме моста;
- второй и пятый интерфейсы подключим в внутренней сети intnet-sw1 (сеть уже создана);
- четвёртый и шестой интерфейс подключим к внутренней сети intnet-sw3, которую создадим в процессе настройки;
- третий интерфейс подключим к виртуальному адаптеру хоста "VirtualBox Host-only Ethernet Adapter";
- седьмой интерфейс подключим к виртуальному адаптеру хоста "VirtualBox Host-only Ethernet Adapter #3", который создадим во время настройки;
- восьмой интерфей оставим несконфигурированным.
Посмотрим настройки виртуальной машины командой
VBoxManage.exe showvminfo Astra01
Нас интересует секция с сетевыми интерфейсами
VBoxManage.exe list bridgedifs
выведет список сетевых карт на ПК, которые могут быть использованы гипервизором для создания бриджей.
Назначаем интерфейсу nic1 режим работы bridge и связываем его с беспроводной картой ПК
VBoxManage.exe modifyvm Astra01 --nic1=bridged --bridge-adapter1="Intel(R) Wi-Fi 6 AX201 160MHz"
, где
- опция --nic1=bridged задаёт режим работы интерфейса
- опция --bridge-adapter1="Intel(R) Wi-Fi 6 AX201 160MHz" связывает интерфейс с конкретным физическим адаптером, тут требуется указать имя адаптера (берём его из опции "Name" в выводе list bridgedifs.
Посмотрим список доступных внутренних подсетей командой
VBoxManage.exe list intnets
Согласно схеме, подключим к сети intnet-sw1 интерфейсы nic2 и nic5
VBoxManage.exe modifyvm "Astra01" --nic2=intnet --intnet2=intnet-sw1
VBoxManage.exe modifyvm "Astra01" --nic5=intnet --intnet5=intnet-sw1
, где
- опция --nicN=intnet - задаёт тип интерфейса
- опция --intnetN=intnet-sw1 - задаёт внутреннюю подсеть для интерфейса
- N - номер интерфейса, который настраиваем (должен совпадать в обеих опциях в рамках одной команды).
Настройку второго интерфейса можно увидеть через GUI
А вот настройку пятого интерфейса можно увидеть только через запрос
VBoxManage.exe showvminfo Astra01
Если у нас нет нужной нам внутренней подсети, выполняем обычную команду, которая задаёт тип интерфейса "внутренний адаптер хоста", в которой указываем имя нужной нам внутренней сети, она автоматически создастся
VBoxManage.exe modifyvm "Astra01" --nic4=intnet --intnet4=intnet-sw3
VBoxManage.exe modifyvm "Astra01" --nic6=intnet --intnet6=intnet-sw3
Проверяем наличие внутренней сети intnet-sw3 на гипервизоре
VBoxManage.exe list intnets
Смотрим настройки интерфейса nic4 в GUI
Подключим третий интерфейс к первому виртуальному адаптеру хоста, для этого выведем список виртуальных адаптеров, чтобы в выводе увидеть имя нужного нам адаптера (секция "Name")
VBoxManage.exe list hostonlyifs
VBoxManage.exe modifyvm Astra01 --nic3=hostonly --hostonlyadapter3="VirtualBox Host-Only Ethernet Adapter"
, где
- опция --nic3=hostonly - задаёт тип адаптера;
- опция --hostonlyadapter3="VirtualBox Host-Only Ethernet Adapter" - указывает, к какому виртуальному адаптеру бедет подключён интерфейс.
Проверяем через GUI
По схеме, нам надо подключить nic7 к виртуальному адаптеру хоста "VirtualBox Host-Only Ethernet Adapter #3", которого в системе нет, создадим его
VBoxManage.exe hostonlyif create
Данная команда создаёт виртуальный интерфейс с именем вида "VirtualBox Host-Only Ethernet Adapter #N", где N - номер интерфейса. В документации не нашёл, есть ли возможность задать имя интерфейса, если вдруг вы знаете как задать имя виртуальному интерфейсу, при его создании, просьба написать в комментарии.
Проверяем, создался ли наш интерфейс
VBoxManage.exe list hostonlyifs
Подключаем к нему карту nic7
VBoxManage.exe modifyvm Astra01 --nic7=hostonly --hostonlyadapter7="VirtualBox Host-Only Ethernet Adapter #3"
Проверяем как сконфигурированы наши интерфейсы
VBoxManage.exe showvminfo Astra01
Если потребуется сбросить настройки на интерфейсах и выключить их, сделать это можно следующими командами:
Сброс настроек интерфейса - VBoxManage.exe modifyvm Astra01 --nic8=null
Отключение интерфейса - VBoxManage.exe modifyvm Astra01 --nic8=none
Вывод
Все сетевые настройки виртуальных машин в гипервизоре VirtualBox можно гибко назначать через командную утилиту VBoxManager, это полезно в случаях, когда требуется настроить для виртуальных машин более четырёх интерфейсов, когда гипервизор работает под Linux, а подключаемся мы к нему через ssh, либо если требуется автоматизировать процесс создания\конфигурирования виртуальных машин скриптами.
UPD.
Настройки всех активных сетевых карт виртуальной машины видны ещё в общем меню гипервизора. Если выделить виртуалку, все её параметры, в том числе и сетевые, будут показаны справа