Перейти к содержимому

Как настроить vlan в virtualbox

  • автор:

Записки IT специалиста — Форум

Вернуться в блог

08 января 2024, 17:23

Цитата дня:

Всегда выбирайте самый трудный путь — на нем вы не встретите конкурентов. Шарль де Голль

  • Записки IT специалиста — Форум
  • ► Серверные операционные системы
  • ► Windows Server 2012/2016/2019
  • ► WIn server 2016 на virtualbox и настройка сети

WIn server 2016 на virtualbox и настройка сети

Автор Максим Гузеватов, 28 ноября 2020, 11:53

0 Пользователей и 1 Гость просматривают эту тему.

Virtualbox+VLAN

Поднял машинку на Virtualbox внутри машины сеть настроил на работу с VLAN. Но, не работает. Хост машина с VLAN работает. Поддерживает ли Virtualbox для Windows VLAN?

petav ★★★★★
13.04.11 20:52:27 MSK

Видимо настроен bridge? Что именно не работает, как проверяли? Тегирование пакетов это не задача VirtualBox’a, а, как я понимаю драйвера сетевой карты.

zolden ★★★★★
( 13.04.11 23:34:10 MSK )
Ответ на: комментарий от zolden 13.04.11 23:34:10 MSK

Да bridge! Нашел в инететинфу что драйвера карт Интел которые имулируютcz virtualbox не могут работать с VLAN и нужно использовать pcnet. Использую ситуация не изменилась. Проверяли так на хост машине (windows) подключались к VLAN все работает. Затем к VLAN подключались на виртуальной машине (zeroshell) пинги не ходят.

petav ★★★★★
( 14.04.11 00:04:39 MSK ) автор топика
Ответ на: комментарий от petav 14.04.11 00:04:39 MSK

Не совсем понятна задача и исходные условия. Как я это понимаю: у вас сделан VLAN интерфейс на хосте. Через него настроен мост гостя. И при этом ничего не работает. Т.е. со свича до хоста у вас идёт транк из которого вам нужен конкретный VLAN. Так? Сам ни разу не пробовал, но если использовать hybrid, а не trunk, то VLAN интерфейс на хосте идейно не нужен будет. Ну, и, если дальше теоритезировать, то мост сделанный на VLAN интерфейсе не требует настройки VLAN в госте, пакеты же и так в этом VLAN’е ходят.

zolden ★★★★★
( 14.04.11 00:34:54 MSK )
Ответ на: комментарий от zolden 14.04.11 00:34:54 MSK

Поясню: 1) Есть switch 2) В switch воткнут провайдер 3) В switch воткнуть компьютер Windows одним кабелем 4) На компьютере Windows bridge к VirtualBox+Маршрутизатор 4) В switch воткнуто еще 10 компьютеров 5) На switch создаю VLAN из порта на котором провайдер и порта к Windows. Порт провайдера untag, порт Windows tag 6) В виртуальной машине поднимаю VLAN.

Так вот если VLAN поднять на Windows то все работает (для проверки настройки хаба делаю), а если на Маршрутизаторе то нет.

petav ★★★★★
( 14.04.11 00:46:24 MSK ) автор топика
Ответ на: комментарий от petav 14.04.11 00:46:24 MSK

На виртуальной машине tcpdump видит ВЛАН теги или нет ?

Tok ★★
( 14.04.11 08:13:49 MSK )
Ответ на: комментарий от Tok 14.04.11 08:13:49 MSK

>На виртуальной машине tcpdump видит ВЛАН теги или нет ?

а как их там различить.

petav ★★★★★
( 14.04.11 12:48:45 MSK ) автор топика
Ответ на: комментарий от petav 14.04.11 12:48:45 MSK

tcpdump -i eth0 vlan 

Tok ★★
( 14.04.11 12:55:51 MSK )
Ответ на: комментарий от petav 14.04.11 12:48:45 MSK

 root@xxxxx:/home/tok# tcpdump -i eth0 vlan -q -ttt -n -c 50 tcpdump: WARNING: eth0: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 000000 vlan 5, p 0, IP 194.xxx.xxx.xx.22 > 194.xxx.xxx.xx.44204: tcp 240 000336 vlan 5, p 0, IP 194.xxx.xxx.xxx.22 > 194.xxx.xxx.xx.44204: tcp 112 000147 vlan 22, p 0, IP 91.198.101.35.25 > 194.xxx.xxx.xxx.49183: tcp 0 000016 vlan 22, p 0, IP 96.44.177.18.1868 > 194.xxx.xxx.xxx.3128: tcp 36 000086 vlan 22, p 0, IP 194.xxx.xxx.xx.3128 > 96.44.177.18.1868: tcp 0 000036 vlan 22, p 0, IP 60.248.16.57.25 > 194.xxx.xxx.xxx.57790: tcp 0 000184 vlan 22, p 0, IP 194.xxx.xxx.xxx.42377 > 46.45.155.2.25: tcp 36 000158 vlan 22, p 0, IP 118.168.141.165.1640 > 194.xxx.xxx.xx.3128: tcp 37 000358 vlan 4, p 0, IP 10.10.4.1.4214 > 178.162.248.79.80: tcp 0 000058 vlan 22, p 0, IP 194.xx.xx.xx.4214 > 178.162.248.79.80: tcp 0 000094 vlan 500, p 0, arp who-has 109.87.240.113 tell 109.87.240.254 

Tok ★★
( 14.04.11 13:04:18 MSK )
Ответ на: комментарий от Tok 14.04.11 13:04:18 MSK

спасибо. Сейчас страшно с VLAN играть удаленно нахожусь. Спасибо за наводку! Доберусь до места проверю.

petav ★★★★★
( 14.04.11 13:25:15 MSK ) автор топика
Ответ на: комментарий от petav 14.04.11 13:25:15 MSK

И как в итоге разрешилось/не_разрешилось?

У меня тоже проблема. С интелами: пакеты уходят из ВМ нетегированными. С pcnet вроде получше — пакеты тегируются, только вот, возвращаясь от хоста к ВМ становятся нетегированными.

nixtrian ★
( 03.05.11 09:36:35 MSK )
Ответ на: комментарий от nixtrian 03.05.11 09:36:35 MSK

В итоге

VirtualBox было временным решением, не стал морочится, когда понял в чем дело

Как настроить VLAN’ы на виртуальной машине?

Исходные данные:
Физический сервер на Win2012 R2, с встроенным в материнку гигабитным сетевым адаптером Realtek. Сервер подключен к тегированному (802.1q) порту управляемого L3 коммутатора. На сервере при помощи утилиты Realtek Ethernet Diagnostic Utility на основе одного физического сетевого адаптера подняты четыре виртуальных Vlan’а (каждый в разной подсети). В результате физический сервер является членом всех четырех vlan’ов, и ко всем имеет прямой доступ одновременно.

Необходимо:
На физическом сервере с помощью Vbox или Vmware поднять виртуальный сервер на Ubuntu 14.04 Server и настроить его таким образом, чтобы он (виртуальный сервер) имел постоянный доступ одновременно ко всем vlan’ам физической локальной сети (как и физический сервер).

Кто-нибудь сталкивался с этим, как осуществить?

  • Вопрос задан более трёх лет назад
  • 3101 просмотр

Дополнительные советы по Virtualbox и Vagrant для сетей VLAN, PXE и ​​Hostonly

Первоначально это было сделано для отдельных машин, работающих за интерфейсом NAT. Позже была добавлена ​​поддержка hostonly-network, что открыло возможность одновременного общения нескольких хостов по частной сети.

Но что, если настройка сети производства намного сложнее, чем эта? В этом посте я собираюсь объяснить, как воспроизвести следующую сетевую настройку в бродячей установке:

Настройка сети

HOST | | eth2 eth2 (NAT) (NAT) | | [ Gateway ] [ Mgmt Host] [Servers1,2] br10 br10 eth3 br0 (eth0.10, (eth0.10, (eth0 eth1.10) eth1.10) eth1) vboxnet0 vboxnet0 vboxnet1 vboxnet1

Это довольно типичная производственная установка:

  • он действует как входящий / исходящий межсетевой экран, прокси-сервер squid, nginx и т. д.
  • у него есть два рабочих интерфейса eth0, eth1, которые VLAN-ed (ID 10) и соединены вместе
  • подключен к шлюзу для внутри и снаружи трафика
  • содержит все необходимые инструменты для управления серверами, dhcp, tftpboot и т.д ..
  • все серверы устанавливаются через хост mgmt
  • server1 будет установлен только через PXE
  • server2 не будет подключен диск и будет загружаться из сети каждый раз

Подготовка базовой коробки

Почти все базовые блоки предполагают, что интерфейс DHCP для интерфейса NAT находится на интерфейсе eth0. Перемещение интерфейса NAT на eth2 требует, чтобы вы изменили / etc / network / interfaces, чтобы указать, что dhcp выполняется на eth2, а eth0, eth1 не являются dhcp. В противном случае загрузка будет очень медленной, ожидая таймаута, что приведет к отсутствию IP-адресов.

Мы использовали Veewee для добавления другого сценария postinstall, чтобы изменить файл / etc / network / interfaces в нужное нам состояние. В результате ‘squeeze64’

sed -i -e "s/eth0/eth2/" /etc/network/interfaces

Hostonly сети в Вагранте

В то время как Vagrant поддерживает сетевые соединения только для хоста , он предполагает, что ему необходимо назначить интерфейсу IP-адрес. В нашем случае интерфейсы eth0, eth1 не получают IP-адрес, только мост получает IP-адрес.

Также, используя встроенную в vagrant поддержку hostonly для сетей, мы обнаружили, что она изменила порядок интерфейсов: кажется, что она динамически удаляет все интерфейсы хоста и воссоздает их.

  • добавление наших интерфейсов hostonly к нашей «базовой коробке» с помощью команд VBoxManage
  • экспортировать его с помощью подкоманды vagrant basebox export

И, таким образом, создать бродячую коробку ‘gateway.box’ и ‘manager.box’.

IFTYPE="virtio" VBoxManage modifyvm squeeze64 --nic1 hostonly VBoxManage modifyvm squeeze64 --nic2 hostonly VBoxManage modifyvm squeeze64 --nic3 nat VBoxManage modifyvm squeeze64 --nic4 none VBoxManage modifyvm squeeze64 --macaddress1 auto VBoxManage modifyvm squeeze64 --macaddress2 auto VBoxManage modifyvm squeeze64 --macaddress3 auto VBoxManage modifyvm squeeze64 --nictype1 $IFTYPE VBoxManage modifyvm squeeze64 --nictype2 $IFTYPE VBoxManage modifyvm squeeze64 --nictype3 $IFTYPE VBoxManage modifyvm squeeze64 --cableconnected2 off VBoxManage controlvm squeeze64 setlinkstate2 off VBoxManage modifyvm squeeze64 --hostonlyadapter1 vboxnet0 VBoxManage modifyvm squeeze64 --hostonlyadapter2 vboxnet0 rm squeeze64.box bundle exec vagrant basebox export squeeze64 mv squeeze64.box boxes/manager.box bundle exec vagrant box remove 'manager' bundle exec vagrant box add 'manager' 'boxes/manager.box

Для управляющего узла:

IFTYPE="virtio" VBoxManage modifyvm squeeze64 --nic1 hostonly VBoxManage modifyvm squeeze64 --nic2 hostonly VBoxManage modifyvm squeeze64 --nic3 nat VBoxManage modifyvm squeeze64 --nic4 hostonly VBoxManage modifyvm squeeze64 --macaddress1 auto VBoxManage modifyvm squeeze64 --macaddress2 auto VBoxManage modifyvm squeeze64 --macaddress3 auto VBoxManage modifyvm squeeze64 --macaddress4 auto VBoxManage modifyvm squeeze64 --nictype1 $IFTYPE VBoxManage modifyvm squeeze64 --nictype2 $IFTYPE VBoxManage modifyvm squeeze64 --nictype3 $IFTYPE VBoxManage modifyvm squeeze64 --nictype4 $IFTYPE VBoxManage modifyvm squeeze64 --cableconnected2 off VBoxManage controlvm squeeze64 setlinkstate2 off VBoxManage modifyvm squeeze64 --hostonlyadapter1 vboxnet0 VBoxManage modifyvm squeeze64 --hostonlyadapter2 vboxnet0 VBoxManage modifyvm squeeze64 --hostonlyadapter4 vboxnet1 mv squeeze64.box manager.box bundle exec vagrant box remove 'manager' bundle exec vagrant basebox export squeeze64 mv squeeze64.box boxes/manager.box bundle exec vagrant box add 'manager' 'boxes/manager.box'

Адаптация Vagrant для использования eth2 для NAT

Не указав сеть hostonly в Vagrantfile, сохранил порядок и имена интерфейсов сетей hostonly без изменений. Но по умолчанию vagrant предполагает, что ему нужно установить сопоставление ssh-порта NAT на eth0. Чтобы указать на eth2, вы можете указать адаптер, явно добавив отображение ssh portforwarding в Vagrantfile.

config.vm.forward_port("ssh",22,2222, true,:adapter => 2>)

Поддержка VLAN в Virtualbox

Я ожидал, что VLAN будет работать из коробки с Virtualbox, но это не так.

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

После некоторых поисков я нашел этот пост на VLAN Stripping в Virtualbox и его исследованиях .

Оказывается, поставщики сетевых драйверов Intel Pro, предоставляемые Virtualbox, удаляют теги VLAN. В блоге предлагается изменить типы интерфейса на более старый AMD PCNet Fast III. Это действительно сработало.

Но при больших всплесках сетевого трафика я столкнулся с предупреждением ядра NETDEV Watchdog: eth0: Тайм-аут передачи .

К счастью, в сетевой документации для Virtualbox есть третий вариант : драйверы virtio. Сначала я подумал, что это невозможно использовать, потому что я работал на Mac, но virtio являются драйверами внутри гостевой ОС, а не на хосте.

Вот почему в приведенных выше модификациях коробки мы устанавливаем nictype в virtio

VBoxManage modifyvm squeeze64 --nictype1 virtio

Соединение в Virtualbox

Много раз, воссоздавая vms, я заметил, что иногда мост не работает. Когда я посмотрел в графическом интерфейсе VirtualBox, я заметил, что иногда virtualbox указывает, что активное сетевое соединение находится на eth0 в шлюзе и на eth1 в диспетчере. Чтобы подделать поведение и иметь их обоих на тех же интерфейсах, я отключил кабель на eth1.

VBoxManage modifyvm squeeze64 --cableconnected2 off VBoxManage controlvm squeeze64 setlinkstate2 off

Теперь мостовые сетевые интерфейсы всегда могут видеть друг друга.

PXE загрузка в Virtualbox

Если вы хотите использовать pxe-загрузку в virtualbox, обязательно установите пакет расширений. Это будет включать в себя функциональность загрузки PXE.

$ VBoxManage list extpacks Extension Packs: 1 Pack no. 0: Oracle VM VirtualBox Extension Pack Version: 4.1.4 Revision: 74291 Description: USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support. VRDE Module: VBoxVRDP Usable: true Why unusable:

Более подробную информацию можно найти в документации Virtualbox

Создание pxe-boot basebox

Для server1 и server2 мы хотим, чтобы они загружались с узла менеджера. Это означает, что мы хотим иметь пустой диск, но с включенной сетевой загрузкой.

VBoxManage modifyvm pxe-server1 --boot4 net

Veewee пока не способен сделать это, но вот команды, которые мы использовали для создания пустого базового блока сетевой загрузки.

VMPATH="/"$(VBoxManage list systemproperties|grep "^Default"| cut -d '/' -f 2-)"/pxe/" DISKPATH="/"$VMPATH/"/pxe.vdi" VBoxManage unregistervm pxe --delete rm -rf "$VMPATH" VBoxManage createvm --name pxe --ostype Debian_64 --register VBoxManage storagectl 'pxe' --name 'IDE Controller' --add ide VBoxManage storagectl 'pxe' --name 'SATA Controller' --add sata --hostiocache off --sataportcount 1 VBoxManage createhd --filename "$DISKPATH" --size 20000 --format VDI VBoxManage storageattach 'pxe' --storagectl 'SATA Controller' --port 0 --device 0 --type hdd --medium "$DISKPATH"

Загрузка PXE на сервер1

Теперь, когда у нас есть базовый ящик загрузки pxe, мы можем начать изменять его следующим образом:

  • исправить macaddress, чтобы мы могли поместить их в dhcp
  • создать необходимые интерфейсы только для хоста

Поскольку первая загрузка pxe занимает много времени, мы увеличили время ожидания ssh в Vagrantfile

config.ssh.timeout = 1000000 config.ssh.max_tries = 50

Опять же драйвер virtio используется

IF_TYPE=virtio VBoxManage unregistervm pxe-server1 --delete VBoxManage clonevm pxe --name pxe-server1 --register VBoxManage modifyvm pxe-server1 --memory 256 --ostype Debian_64 VBoxManage modifyvm pxe-server1 --nic1 hostonly VBoxManage modifyvm pxe-server1 --nic2 hostonly VBoxManage modifyvm pxe-server1 --nic3 nat VBoxManage modifyvm pxe-server1 --nic4 none VBoxManage modifyvm pxe-server1 --macaddress1 080027BA2DAE VBoxManage modifyvm pxe-server1 --macaddress2 080027BE8E74 VBoxManage modifyvm pxe-server1 --macaddress3 auto VBoxManage modifyvm pxe-server1 --macaddress4 auto VBoxManage modifyvm pxe-server1 --nictype1 $IF_TYPE VBoxManage modifyvm pxe-server1 --nictype2 $IF_TYPE VBoxManage modifyvm pxe-server1 --nictype3 $IF_TYPE VBoxManage modifyvm pxe-server1 --nictype4 $IF_TYPE VBoxManage modifyvm pxe-server1 --cableconnected2 off VBoxManage controlvm pxe-server1 setlinkstate2 off VBoxManage modifyvm pxe-server1 --cableconnected3 off VBoxManage controlvm pxe-server1 setlinkstate3 off VBoxManage modifyvm pxe-server1 --hostonlyadapter1 vboxnet1 VBoxManage modifyvm pxe-server1 --hostonlyadapter2 vboxnet1 VBoxManage modifyvm pxe-server1 --boot4 net rm boxes/pxe-server1.box bundle exec vagrant box remove 'server1' bundle exec vagrant basebox export pxe-server1 mv 'pxe-server1.box' boxes/ bundle exec vagrant box add 'server1' 'boxes/pxe-server1.box'

Исправление mac-адреса моста

Несмотря на то, что мы можем управлять mac-адресом через физические интерфейсы, macaddress моста назначается случайным образом.

auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_maxage 12 bridge_hello 2 bridge_fd 6 bridge_stp on post-up ip link set br0 address 08:00:27:ba:2d:ae

PXE boot для server2

Основное отличие от server1 заключается в том, что server2 всегда загружается из памяти.

Vagrant basebox export ожидает, что диск будет там. Поэтому мы должны назначить его один, даже если он нам не нужен.

Мы также обнаружили, что внутренняя поддержка pxe ограничена, использование ipxe.org позволило нам загружаться со многими специальными параметрами pxe.

Это заставило нас поместить загрузочный код ipxe на первый диск.

VBoxManage convertfromraw ../ipxe/ipxe.usb "$DISKPATH"

И замените диск на него, чтобы он воспроизводился с помощью vagrant export

Полный сценарий создания выглядит следующим образом

VMPATH="/"$(VBoxManage list systemproperties|grep "^Default"| cut -d '/' -f 2-)"/pxe-server2/" DISKPATH="$VMPATH/pxe-server2.vdi" VBoxManage storageattach 'pxe-server2' --storagectl 'SATA Controller' --port 0 --device 0 --medium none VBoxManage closemedium disk "$DISKPATH" --delete VBoxManage unregistervm pxe-server2 --delete rm -rf "$VMPATH" VBoxManage clonevm pxe --name pxe-server2 --register VBoxManage modifyvm pxe-server2 --memory 1024 --ostype Debian_64 VBoxManage modifyvm pxe-server2 --nic1 hostonly VBoxManage modifyvm pxe-server2 --nic2 hostonly VBoxManage modifyvm pxe-server2 --nic3 nat VBoxManage modifyvm pxe-server2 --nic4 none VBoxManage modifyvm pxe-server2 --macaddress1 080027C5DAB8 VBoxManage modifyvm pxe-server2 --macaddress2 0800274020F8 VBoxManage modifyvm pxe-server2 --macaddress3 auto VBoxManage modifyvm pxe-server2 --macaddress4 auto VBoxManage modifyvm pxe-server2 --nictype1 virtio VBoxManage modifyvm pxe-server2 --nictype2 virtio VBoxManage modifyvm pxe-server2 --nictype3 virtio VBoxManage modifyvm pxe-server2 --nictype4 virtio VBoxManage modifyvm pxe-server2 --cableconnected2 off VBoxManage controlvm pxe-server2 setlinkstate2 off VBoxManage modifyvm pxe-server2 --cableconnected3 off VBoxManage controlvm pxe-server2 setlinkstate3 off VBoxManage modifyvm pxe-server2 --hostonlyadapter1 vboxnet1 VBoxManage modifyvm pxe-server2 --hostonlyadapter2 vboxnet1 VBoxManage modifyvm pxe-server2 --boot4 net rm "$DISKPATH" VBoxManage storageattach 'pxe-server2' --storagectl 'SATA Controller' --port 0 --device 0 --medium none VBoxManage closemedium disk "$DISKPATH" --delete VBoxManage convertfromraw ../ipxe/ipxe.usb "$DISKPATH" VBoxManage storageattach 'pxe-server2' --storagectl 'SATA Controller' --type hdd --port 1 --device 0 --medium "$DISKPATH" rm boxes/pxe-server2.box bundle exec vagrant box remove 'server2' bundle exec vagrant basebox export pxe-server2 mv 'pxe-server2.box' boxes/ bundle exec vagrant box add 'server2' 'boxes/pxe-server2.box'

Направляйте ssh в бродячую виртуальную машину через Hostonly IF

Вместо того, чтобы сопоставлять порты с сервером server1 или server2 через NAT, мы сочли полезным поместить интерфейс нашего хоста в сеть hostonly. Это позволило подключиться к сервисам на сервере1, сервере2, например.

VBoxManage hostonlyif ipconfig vboxnet1 --ip 172.168.0.1

А затем настройте, например, свойства ssh сервера server2 следующим образом:

config.ssh.host = "172.168.0.22" config.ssh.port = 22

Вывод:

Чтобы это заработало, нужно немного помассировать, но это возможно:

  • по возможности используйте драйвер virtio
  • использовать ipxe для загрузки сложных настроек pxe
  • использовать hostonly сети для прямого доступа к услугам

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

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