- Предварительные требования
- Выберите изображение OpenWrt
- Пользовательские изображения
- Преобразовать openwrt.img в диск VBox
- Ошибка
- Настройка ВМ в VirtualBox
- Создание ВМ
- Настройка виртуальной машины
- Настройки Virtualbox
- Настройки виртуальной машины
- Устранение неполадок
- Запускать с VirtualBox автоматически при запуске ОС Windows
- См. также
- VirtualBox Advanced
- Обзор
- Необходимые концепции
- Основы x86_64
- squashfs vs ext4
- Где мой маршрутизатор?
- Использование squashfs:
- Использование ext4:
- Основы сети VirtualBox
- Сетевые идеи
- Пример 1
- Автоматическое создание VirtualBox в Linux
- Добавить шейпинг
- Пометка для ВМ
- Пример: 1b SameSegment-same-Subnet PreRouter
- Преимущества
- Недостатки
- Настройка базового доступа к сети с помощью интерфейса командной строки (vi dhcp)
- CLI Установить LUCI на снимок
- Buildroot Export
- Openvswitch
- Примеры последовательной и SSH-консоли ToDo
- Видео загрузки
- Советы, выходящие за рамки Basic
- Gotcha-s
- Начальный vmnicX> Доступ к локальной сети
- Мне не хватает места
- Можно сделать проще?
- Вопросы, на которые у вас должны быть ответы
- Resources
В этом документе описывается, как запускать изображения OpenWrt x86-64 в VM VirtualBox, или для краткости VBox.
Предварительные требования
-
Загрузите и установите VirtualBox
-
Загрузите и установите гостевые дополнения VirtualBox (необходимы для подключения через USB среди прочего)
Выберите изображение OpenWrt
Вам нужна 64-разрядная версия x86 OpenWrt. Существует две их версии:
-
Combined-squashfs.img.gz
В этом образе диска используется традиционный Макет OpenWrt, корневая файловая система squashfs, доступная только для чтения, и раздел для чтения и записи, где хранятся настройки и пакеты, которые вы устанавливаете. Из-за того, как этот образ собран, у вас будет только 230 МБ места для хранения дополнительных пакетов и конфигурации, а Extroot не работает. -
Combined-ext4.img.gz
В этом образе диска используется один раздел для чтения и записи ext4 без корневой файловой системы squashfs, доступной только для чтения, что позволяет увеличить раздел . Такие функции, как отказоустойчивый режим или сброс к заводским настройкам, будут недоступны, поскольку для работы им нужен раздел squashfs только для чтения.
В руководстве мы будем использовать openwrt-x86-64-комбинированный-ext4.img.gz , потому что у него меньше ограничений.
-
Загрузите стабильную версию изображение openwrt-x86-64-Combined-ext4.img.gz из папки target/x86/64/, например 19.07.2. Или вы можете попробовать более свежий, но нестабильный снимок изображения
-
Распакуйте gziped img-файл. В Linux используйте команду
gzip -d openwrt- * x86-64-комбинированный * .img.gz
. В результате у вас должен получиться необработанный файл изображенияopenwrt-x86-64-Combined-ext4.img
.
Пользовательские изображения
Вы можете скомпилировать собственное изображение ( Целевая система → x86-64 и Целевые изображения → Сборка Файлы изображений VirtualBox ). Сначала необходимо включить ext4
.
Преобразовать openwrt.img в диск VBox
-
Откройте терминал и перейдите в папку, в которую вы загрузили файл (извините, у инструмента есть только интерфейс командной строки)
-
Преобразуйте его в собственный формат VBox, написав это в командной строке (то же самое для Windows, Mac и Linux. К сожалению, этот инструмент не имеет графического пользовательского интерфейса):
VBoxManage convertfromraw --format VDI openwrt- * x86-64-комбинированный * .img openwrt.vdi
. Это создаст файлopenwrt.vdi
, который представляет собой виртуальный диск для виртуальной машины VBox.
Ошибка
Если вы получаете сообщение об ошибке, подобное
VBoxManage: error: VD: Указанный размер диска 19444018 не выровнен по сектору граница (512 байт) VBoxManage: ошибка: код ошибки VERR_VD_INVALID_SIZE в/Users/vbox/tinderbox/5.1-mac-rel/src/VBox/Storage/VD.cpp(7002) в функции int VDCreateBase (PVBOXHDD, const char *, const char *, uint64_t, unsigned int, const char *, PCVDGEOMETRY, PCVDGEOMETRY, PCRTUUID, unsigned int, PVDINTERFACE, PVDINTERFACE) VBoxManage: error: не удается создать образ диска "openwrt.vdi": VERR_VD_INVALID> #
вам может потребоваться добавить к изображениюdd if = openwrt-x86-64-комбинированный-ext4.img of = openwrt.img bs = 128000 conv = sync
и использовать добавленное изображение в качестве входных данных для VBoxManage convertfromraw.
-
Увеличьте изображение до полезного размера (размер указан в МБ )
$ VBoxManage modifymedium openwrt.vdi --resize 1280% ... 10% ... 20% ... 30% ... 40% ... 50% ... 60% ... 70% ... 80% ... 90% ... 100%
Настройка ВМ в VirtualBox
Создание ВМ
Учебное пособие и скриншоты из VirtualBox 5.1.8 на хосте Linux, в Windows или macOS хостов будут некоторые косметические различия (другая верхняя панель), но панели и кнопки VirtualBox будут точно такими же
Запустите VirtualBox и нажмите Создать , чтобы добавить виртуальную машину (ВМ)
Выберите Имя для своей виртуальной машины, выберите
Linux
для Введите и Linux 2.6/3.x/4.x (64-бит)
для Версия , затем нажмите Далее .
OpenWrt будет работать нормально при гораздо меньшем объеме ОЗУ, чем рекомендованный, 128 МБ будет довольно.
Выберите Использовать существующий файл на жестком диске , щелкните значок файла , чтобы открыть Диспетчер виртуальных носителей , щелкните Добавить и выберите свой
openwrt .vdi
с помощью окна выбора файлов. Нажмите Создать , чтобы завершить эту процедуру.
Рекомендуется поместить образ диска в постоянное место перед связыванием его с VBox. Если вы переместите его позже , VBox больше не найдет его и будет жаловаться на эту проблему при следующем запуске (или при попытке запустить виртуальную машину). Он предложит пошаговую процедуру для повторной привязки образа диска, так что не беспокойтесь.
Настройка виртуальной машины
Эта часть конфигурации будет иметь дело с настройкой сети вручную.
Конфигурация, которую вы будет настроен, следуя этому руководству:
-
eth0 виртуальной машины на mng интерфейс (управление), фиксированный адрес 192.168.56.2, установленный в VirtualBox как Host-only Adapter на адаптере vboxnet0 . Этот интерфейс будет всегда доступен для хоста, даже если хост или виртуальная машина отключены от любой сети.
-
eth1 виртуальной машины на интерфейсе wan , динамический адрес, установленный в VirtualBox как NAT . Этот интерфейс будет использоваться для доступа к Интернету через любую настройку, которую также использует хост.
-
(необязательно) eth2 виртуальной машины на интерфейсе lan , настроенном в зависимости от вашей локальной сети, установленном в VirtualBox как Bridged Adapter . Этот интерфейс позволяет другим устройствам (включая хост) подключаться к виртуальной машине, как если бы это было физическое устройство в локальной сети. Будет работать только в том случае, если уже существует какая-либо локальная сеть.
-
Для установки с двумя физическими сетевыми картами с мостовым подключением WAN / LAN Настройка см. устранение неполадок. Остальная часть этого руководства также применима к установке с двумя физическими картами.
Обратите внимание, что порядок «Адаптера только для хоста»: «Адаптер 1» и « NAT », поскольку« Адаптер 2 »важен для работы OpenWrt под ключ в виртуальной машине. Хотя его можно настроить с помощью консоли, такая настройка упрощает переход к работающей конфигурации.
Настройки Virtualbox
Сетевой адаптер только для хоста
нам сначала нужно убедиться, что существует сетевой адаптер только для хоста и что у него правильные настройки
Примечание: он находится в VBox 6.0 (по крайней мере, для Windows) в разделе «Инструменты» и предварительно настроен.
Нажмите Файл → Настройки → Сеть
В macOS этот параметр можно найти через File> Host Network Manager…
Щелкните Host-only Вкладка Сети, а затем, если вы не видите запись vboxnet0 , щелкните значок + в правой части окна, чтобы добавить новую.
Теперь выберите запись vboxnet0 и щелкните значок отвертки справа, чтобы открыть ее настройки. s.
IPv4 Адрес должен быть 192.168.56.1 , IPv4 Маска сети должна быть 255.255.255. 0 , IPv6 адрес должен быть пустым, а IPv6 маска сети должно быть
(необязательно) вы также можете настроить сервер DHCP , как показано на снимке экрана, если вы хотите иметь динамические адреса для виртуальной машины, но для этого руководства это не так. требуется, поскольку мы устанавливаем статический адрес в самой виртуальной машине
Нажмите OK, чтобы сохранить и закрыть, пока вы снова не вернетесь в интерфейс VirtualBox Manager.
Настройки сети
Откройте настройки виртуальной машины
Перейдите на вкладку Сеть
настроить Адаптер 1 :
-
с адаптером только для хоста
-
выберите vboxnet0 как (адаптер) Имя
-
нажмите Advanced и в Тип адаптера выберите Intel PRO/1000 MT Desktop
-
Беспорядочный режим должен быть установлен на Запретить , если у вас нет веских причин для его включения.
-
Настроить Адаптер 2
-
с NAT
-
-
(необязательно) Настройте адаптер 3
-
с мостовым адаптером
-
в поле Имя выберите имя сетевой карты (ethernet или wifi) вашего ПК, подключенного к локальной сети. В Windows у него есть полное имя устройства, в Linux у него будут кодовые имена вроде eth0 , eth1 для Ethernet или wlp2s0 . для Wi-Fi.
-
Нажмите Advanced и сделайте то же самое, что и для Расширенные параметры адаптера 1
-
Настройки виртуальной машины
Из-за ограничений клавиатура в терминале виртуальной машины настроена на США. , поэтому некоторые (или большинство) ваших ключей могут не печатать символы, как указано колпачками.
Кроме того, из-за того, что вы видите голый машинный терминал, а не умную вещь вроде SSH программу (Putty/Kitty/что угодно) или программу-эмулятор терминала, вы не можете копировать и вставлять в нее текст.
Не волнуйтесь, большая часть настройки будет выполнена после вы подключены к SSH (удаленному терминалу), у которого нет ни одной из этих проблем. Посмотрите на эту раскладку клавиатуры для США, чтобы узнать, какую кнопку вам нужно нажать на клавиатуре, чтобы сгенерировать правильный символ.
-
Загрузитесь на свою виртуальную машину
-
Подождите 4 секунды, пока GRUB загрузится автоматически
-
Нажмите Введите, чтобы активировать консоль, когда сообщения загрузки закончили прокрутку. Для генерации «энтропии» может потребоваться две или три минуты (
random: crng init done
с OpenWrt 17.01.4). Пока энтропия не будет достаточной, SSH и другие криптографические функции могут не работать. -
Отображение текущей конфигурации сети
root @ openwrt: ~ # uci show networknetwork.loopback = interfacenetwork.loopback.ifname = 'lo'network.loopback.proto =' static'network.loopback.ipaddr = '127.0.0.1'network.loopback .netmask = '255.0.0.0'network.globals = globalsnetwork.globals.ula_prefix =' fd1b: e541: 8f1a ::/48'network.lan = interfacenetwork.lan.type = 'bridge'network.lan.ifname =' eth0 'netw ork.lan.proto = 'static'network.lan.netmask =' 255.255.255.0'network.lan.ip6assign = '60'network.lan.ipaddr =' 192.168.1.1'network.wan = interfacenetwork.wan.ifname = 'eth1'network.wan.proto =' dhcp'network.wan6 = interfacenetwork.wan6.ifname = 'eth1'network.wan6.proto =' dhcpv6 '
Обратите внимание, что адрес по умолчанию LAN 192.168.1.1 присутствует при первой загрузке.
-
Изменить конфигурацию сети, чтобы разрешить доступ SSH , написав эти команды и нажав Enter:
-
uci set network.lan.ipaddr = ‘192.168.56.2’
-
uci commit
-
Теперь ваш Виртуальная машина должна быть доступна из SSH , пользователь root (без пароля), адресПосле того, как вы успешно вошли в систему, мы действительно можем выполнить настоящую конфигурацию, пожалуйста, скопируйте e следующий блок кода и нажмите ввод:
uci batch
теперь записываем изменения uci , чтобы проверить, правильно ли загружена конфигурация настроек. Если вы видите следующее (записи network.mng ДОЛЖНЫ совпадать с показанными здесь, network.wan может немного отличаться), все все прошло хорошоroot @ openwrt: ~ # uci changesnetwork.mng = 'interface'network.mng. type = 'bridge'network.mng.proto =' static'network.mng.netmask = '255.255.255.0'network.mng.ifname =' eth0'network.mng.ipaddr = '192.168.56.2'-network.lan- network.wan6network.wan = 'interface'
если все в порядке, сохраните конфигурацию с помощью uci commit && reboot , если все НЕ в порядке, напишите reboot , чтобы стереть временные изменения и найти способ установить указанную выше конфигурацию вручную.закройте и снова откройте терминал SSH после перезапуска виртуальной машины с теми же параметрами соединения (пользователь root и 192.168.0.1). 56.2 )теперь у вас должен быть доступ к Интернету (попробуйте opkg update ) И интерфейс управления. со статическим адресом вы можете подключить свою клиентскую программу SSH , даже если ваш компьютер отключен от локальной сети.необязательный мостовой адаптер на адаптере 3 не t имеет решающее значение для базовой функциональности, а также зависит от параметров вашей локальной сети. В моей собственной сети (и в большинстве домашних сетей) все будет нормально, если вы напишетеuci batch
Если у вас более сложные требования, вам придется настроить их самостоятельно, прочитав документацию или через luci.теперь вы можете устанавливать пакеты в эти образы как обычно, вы, вероятно, захотите установить luci, напишите opkg update && opkg install luci , затем вы можете подключиться к luci виртуальной машины, набрав 192.168.56.2 в адресной строке браузера или щелкнув эту ссылку, чтобы попасть туда.Устранение неполадок
-
Если вы перестраиваете образ диска, и VirtualBox жалуется на недопустимые UUID для диска
-
Вам необходимо удалить диск из как ВМ и из Диспетчер виртуальных носителей
-
n снова добавить образ диска в виртуальную машину
-
-
Если вы хотите использовать мостом VPN на вашем устройстве, чтобы подключить его к вашей локальной сети, вам необходимо установить
-
Беспорядочный режим соответствующего мостового сетевого адаптера установлен на «Разрешить все», иначе ваша локальная сеть не будет правильно подключена к вашей сети с мостовым подключением vpn
-
-
У вас также может быть 2 физических сетевых интерфейса в вашей основной операционной системе, на которой размещается виртуальная машина.. В этом случае
-
Используйте один сетевой адаптер как WAN , а в VirtualBox вы выберите Мостовой адаптер с Promiscuous Mode , чтобыИспользуйте другой сетевой адаптер как LAN , а в VirtualBox выберите Bridged Adapter с помощью Беспорядочный режим на
-
Deny , если вы не хотите предоставлять мостовые виртуальные сети для вашего физического сеть
-
Разрешить все , если вы хотите подключить мостовую виртуальную сеть к физической сети
Запускать с VirtualBox автоматически при запуске ОС Windows
-
Элемент упорядоченного списка Импортируйте следующую запись в реестр или добавьте ее вручную:
-
[HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion Ru n]
-
«VB-MYDEVICE» = «» C: Program Files Oracle VirtualBox VBoxManage.exe «startvm ”NAMEOFVBINSTANCE “ –type headless ”
-
-
В качестве альтернативы создайте 2 ярлыка и используйте Планировщик задач Windows
-
«C: Program Files Oracle VirtualBox VBoxManage.exe» startvm MYDEVICE –type headless
-
Создать задачу в Планировщике, запускаемую при входе в систему любого пользователя в качестве действия ярлыка
-
-
«C: Program Files Oracle VirtualBox VBoxManage.exe» controlvm MYDEVICE acpipowerbutton
-
Создание задачи в Планировщике, запускаемой событием и в качестве действия ярлык
-
Начать задачу: по событию
-
Basic Журнал: система
-
Источник: User32
-
Идентификатор события: 1074
-
-
-
-
Или используйте следующее :
-
VBoxVmService Wi Служба ndows для автоматического запуска виртуальных машин VirtualBox
-
См. также
-
VirtualBox Advanced
-
Другие варианты виртуализации: Docker, VMware и т. д.
Этот веб-сайт использует файлы cookie. Используя веб-сайт, вы соглашаетесь с хранением файлов cookie на вашем компьютере. Также вы подтверждаете, что прочитали и поняли нашу Политику конфиденциальности. Если вы не согласны, покиньте сайт. Дополнительная информация о файлах cookie
-
-
VirtualBox Advanced
Обзор
Это руководство расширяет базовое руководство VirtualBox HowTo более широкими рекомендациями по настройке, примерами и общие ошибки.
ПРИМЕЧАНИЕ. Используйте проводной хост виртуального бокса (если вы действительно не уверены в виртуальном боксе, то есть в проблемах с мостом 80211).
Необходимые концепции
Основы x86_64
Поскольку операционная система в VirtualBox в основном представляет собой хост x86_64, имеющий общие сведения о настройке раздела жесткого диска, работе загрузчика и т. д. al. полезно. В частности, когда вам нужно выполнить более сложную настройку сетевого интерфейса внутри виртуальной машины, а затем перевести это на устройства VBox. Другими словами, неуверенность в выполнении конфигурации на «голом железе» усугубит устранение неполадок, если вы не сможете четко различить, что является физическим, а что виртуальным. В этом случае, возможно, использование старого ПК или запасного USB-диска для тестирования в первую очередь на реальном оборудовании – хороший первый шаг.
squashfs vs ext4
Чтобы использовать 1) , вам, вероятно, придется выбирать между комбинированным изображением squashfs и ext4 OpenWrt. Для большинства аппаратных средств, поддерживаемых OpenWrt, рекомендуется combashfs (и во многих случаях это единственный предлагаемый тип изображения). Для оборудования x86, для которого свободное пространство не является проблемой, OpenWrt также предлагается в виде образов comb-ext4 . Давайте посмотрим, в чем различия.
Где мой маршрутизатор?
Использование squashfs:
-
sysupgrade в любое время для обновления ядро, что полезно, если вы отслеживаете моментальный снимок, чтобы получить последний и лучший
-
сброс настроек
-
раздел по умолчанию для чтения и записи в образе squashfs составляет 128 МБ, его редко можно заполнить общими добавками пакетов
-
Если вам нужно больше пространство для данных, вы всегда можете увеличить размер виртуального диска и добавить раздел данных (который будет сохранен при обновлении sysupgrade) или, что еще лучше, добавить больше виртуальных дисков, которые вы бы использовали только для хранения.
Образы Squashfs удобны, когда вы используете Imagebuilder для интеграции всех пакетов, которые хотите, в один повторно устанавливаемый образ. Вы можете установить с помощью sysupgrade и не потерять ни один из ваших «установленных пакетов», поскольку вы интегрировали их в базовом образе прошивки.
Поскольку у вас все равно есть Virtualbox, почему бы не иметь виртуальную машину Debian или Ubuntu и использовать Imagebu и старше тоже. Это очень удобный способ отслеживания моментальных снимков (мастер), чтобы иметь самые последние и лучшие, и единственный практичный способ сделать это для большинства других устройств, поддерживаемых OpenWrt, поэтому это более или менее лучший «выбор» для ветеранов OpenWrt, у которых есть развернули много устройств и уже используют построитель образов.
NB: с Imagebuilder размер раздела для чтения и записи не имеет значения, поскольку все пакеты встроены в раздел только для чтения squashfs, который увеличивается по мере необходимости, поэтому 128 МБ доступен только для конфигурации.
Использование ext4:
-
С ext4 вы теряете возможность sysupgrade, но вы можете продолжать обновлять пакеты снова и снова. (задача: уточнить, см. последнее предложение)
-
В зависимости от прочности вашего жесткого диска износ больше, но у большинства пользователей нет проблем. Тип отключения звука для виртуальных машин.
-
Обновление ядра должно выполняться вручную путем монтирования первого раздела (/dev/sda1 , если у вас только один диск) и заменив файл « vmlinuz », который вы найдете в папке /boot , файлом с тем же именем, которое вы найдете в загрузке папку https://downloads.openwrt.org/releases/18.06.4/targets/x86/64/, затем установите пакет « kernel_xxxx.ipk », который вы найдете здесь https://downloads .openwrt.org/Release/18.06.4/target/x86/64/packages/, например, если вы только что обновились до стабильной версии 18.06.04, а затем перезагрузились. \ Это виртуальный пакет, он существует только для того, чтобы сообщить системе, какая версия ядра установлена, но на самом деле ничего не устанавливает. Причина, по которой этого не происходит, заключается в том, что установка ядра в 99% целевых объектов OpenWrt происходит через процесс Sysupgrade, а не через пакеты, поэтому никому не потребовалось время и усилия, чтобы действительно правильно выполнить обновление ядра таким образом. Но в любом случае, я думаю, достаточно легко написать сценарий для решения этой проблемы..
-
С ext4 вы можете увеличить размер раздела, сколько душе угодно, но вам нужно будет сделать это «в автономном режиме», то есть загрузив LiveCD Gparted в свой Virtualbox VM, так как образ ext4 по умолчанию слишком мал (техническая причина: файловая система не содержит достаточного количества inodes такого размера ), чтобы разрешить онлайн-изменение размера ( ext4 можно увеличить без используя liveCD, если он достаточно большой в начале )
Этот тип изображения имитирует более традиционный дистрибутив Linux, такой как Debian или Ubuntu, где вы есть пакеты, и вы продолжаете обновлять или устанавливать их по мере необходимости. Но, черт возьми, это немного затруднительно, если вы попытаетесь следить за моментальным снимком, поскольку OpenWrt не реализует возможность одновременно устанавливать несколько (неидентичных) ядер с модулями ядра («драйверы устройств» Linux). и выберите, какое ядро загружать при перезагрузке. Хотя можно вручную отредактировать grub.cfg для поддержки этого вручную, используя разные разделы rootfs для каждого ядра (без поддержки sysupgrade)
Итак, когда вы идете и обновляете ядро или модули ядра (пакеты, которые начните с kmod-xxxx.ipk ) вы, вероятно, столкнетесь с поломкой или вам придется бороться с opkg, который отказывается их устанавливать, поскольку они несовместимы с используемым ядром. Я думаю , что вы действительно можете сделать это, если сначала установите ядро, которое является виртуальным пакетом, а затем установите пакеты kmod и сразу же перезагрузитесь, но я никогда не пробовал так YMMV .
Следовательно, использование sysupgrade для прошивки нового комбинированного-ext.bin обычно блокирует разделы «boot» и «rootfs», config можно переносить, пакеты – нет.
Основы сети VirtualBox
Знание основных типов сетей, предлагаемых VirtualBox, очень поможет вам…
-
Потратьте несколько минут на то, чтобы нарисовать простую диаграмму того, как сеть HOST сопоставляется с сетями/интерфейсами компьютеров GUEST, что сэкономит вам много драмы и потребует перенастройки в дальнейшем. 2)
Сетевые идеи
Пример 1
Пример 1 полезен для тестирования как LAN , так и WAN сторон OpenWrt.
-
Все соединения используют одну и ту же физическую сеть, и разделение логично.
-
Доступны обе стороны маршрутизатора.
-
Смена шлюза и DNS на вашем ХОСТЕ будет отправлять ваш трафик через OpenWrt (dual-nat).
OpenWrt VMvmnic0, мостовая локальная сеть 192.168.1.1 (отключить сервер DHCP) vmnic1 мостовая глобальная сеть (dhcp из обычной сети) HostOShostnic0 dhcp (или обычная настройка) hostnic0: 2 192.168.1.2
Эта конфигурация легко адаптируется … с оговорками, что сервер OpenWrt dhcp не используется, а общий физическая среда (меньшая изоляция). Вы можете легко запустить клиент openvpn и назначить хостам LAN диапазон 192.168.1.x и т. Д., Чтобы отправлять их через виртуальную машину OpenWrt.
Автоматическое создание VirtualBox в Linux
ПРИМЕЧАНИЕ. Требуются: wget, gunzip и VBoxManage (VirtualBox)
#!/Bin/bash sNAME = "openwrtx64- `date +% Y% m% d-% H% M`" dirCACHE = "$ {HOME}/cache"; mkdir -p $ dirCACHEVMFOLD = "` cat ~/.config/VirtualBox/VirtualBox.xml | grep -i SystemProperties | cut -d '"' -f2`" VDI = "$ {sNAME} .vdi" DISKSIZE = '512000000' VMNAME = "$ {sNAME}" IMGC = "$ {dirCACHE}/openwrt-18.06.4-x86-64-combined-ext4.img.gz" URL = "https://downloads.openwrt.org/releases/18.06 .4/target/x86/64/openwrt-18.06.4-x86-64-comb-ext4.img.gz "WGET =" wget "; GUNZIP =" gunzip "; VBOXMANAGE =" VBoxManage "echo" Создание виртуальной машины: $ VMNAME "echo" Кэш: $ {HOME}/cache "echo" Размер диска: $ DISKSIZE "sleep 2 if [! -F" $ {IMGC} "]; затем echo" Downloading Image: $ URL "$ WGET" $ {URL } "-O" $ {IMGC} "|| echo" Не удалось загрузить: $ {URL} "&& exit 1else echo" Использование кэшированного изображения: $ IMGC "fisleep 2 $ VBOXMANAGE createvm --name $ VMNAME --register $ VBOXMANAGE modifyvm $ VMNAME --description "openwrt vbox" --ostype "Linux26" --memory "512" --cpus "1" --nic1 "bridged" --nictype1 82540EM --nic2 "bridged " --nictype2 82540EM $ VBOXMANAGE storagectl $ VMNAME --name" Контроллер SATA " --add" sata " --portcount" 4 " --hos tiocache "on" --bootable "on" && $ GUNZIP --stdout "$ {IMGC}" | $ VBOXMANAGE convertfromraw --format VDI stdin $ {VMFOLD}/$ {VMNAME}/$ {VDI} $ DISKSIZE $ VBOXMANAGE storageattach $ VMNAME --storagectl "SATA Controller" --port "1" --type "hdd " --nonrotational" on " --medium $ VMFOLD/$ {VMNAME}/$ VDI echo" Откройте VNIC в VirtualBox, чтобы указать имя адаптера моста "echo" ############# ############################################ «эхо» ОТКЛЮЧИТЬ DHCP на маршрутизаторе! "Echo" ######################################## ################# "echo" "exit 0
Добавить шейпинг
Поскольку виртуальный бокс, встроенный в шейпинг, работает только в одном направлении … Пример 1 – идеальная сетевая архитектура для выполнения шейпинга с использованием встроенных ограничений пропускной способности виртуального бокса. Можно изменить скорость «на лету» во время работы виртуальной машины.
(ПРИМЕЧАНИЕ: «wan» в приведенном ниже скрипте относится к vm-nic1 (секунда))
#!/bin/bash VMNAME = "openwrtx64-20191002-2352" lannicspeed = "350k" #. 35 МБ/с использовать m для mbpswannicspeed = "360k" # VBoxManage bandwidthctl "$ VMNAME" добавить Limitlan --type network --limit $ lannicspeedVBoxManage bandwidthctl "$ VMNAME" добавить Limitwan --type network --limit $ wannicspeedVBoxManageNAME modifyvm --nicbandwidthgroup1 Limitlan #assign to nic1VBoxManage modifyvm "$ VMNAME" --nicbandwidthgroup2 Limitwan #assign to nic2
Пометка для ВМ
Примечание: пример IP-ссылки является непостоянной… см. В вашем дистрибутиве подходящее место для настройки вашего хоста nic для vlan.
Вы можете использовать один кабель в качестве «магистрали». По сути, это превращает вашу проводную ссылку в управляемый коммутатор, поскольку вы помечаете VLAN для каждой виртуальной машины восходящего потока на проводной ссылке.
Это можно использовать для клиентов … с openwrt на «реальном маршрутизаторе», использующем несколько виртуальных локальных сетей через один порт LAN . Или вы можете использовать этот метод для OpenWrtVM… пометить несколько его интерфейсов вне гостевого программного обеспечения… «имитируя» управляемый коммутатор.
Этот пример показывает клиентскую виртуальную машину для восходящего маршрутизатора OpenWrt.
######################################### ############# Step1 ONHOSTNIC = "enp0s25" IP link добавить ссылку $ NIC имя $ NIC.50 тип vlan id 50ip link set dev $ NIC.50 up ######## ############################################# Step2In VirtualBox изменит мост для виртуальной машины для взаимодействия с NIC.50 ##################################### ################## Step3 В Openwrt # - Перейти к переключению ... добавить vlan 50 с тегами на том же порту, что и pc/server + cpu1 # - Перейти к интерфейсам ... добавить интерфейс ... ИМЯ + ИНТЕРФЕЙС: ethNcpu.50 + IP: 192.168.50.1 и т. д. и т. д. и т. д. ########################### ###### отладка на хосте # ip -d link show $ NIC.50 # ip link delete $ NIC.50 # tcpdump -nnei $ NIC -vvv
Пример: 1b SameSegment-same-Subnet PreRouter
Преимущества
-
нет двойного нац
-
бесшовное перенаправление клиента через переназначение шлюза DHCP
-
снижает накладные расходы на управление/настройку из-за одна подсеть/диапазон
-
службы, интенсивно использующие ЦП и память, могут быть запущены на вашем лучшем оборудовании
Недостатки
-
брандмауэр зависит от граничного маршрутизатора
-
представляет вторую точку отказа для клиентов, использующих «средний» маршрутизатор
-
Энергопотребление хоста/гостя виртуальной машины
Как показано на схеме;
-
Только интерфейс LAN соединен мостом со статическим IP-адресом в вашей LAN подсети
-
Интерфейс LAN имеет как шлюз, так и DNS-серверы, настроенные на граничный маршрутизатор
-
Клиентский шлюз и/или DNS, указывающие на виртуальную машину, если вы хотите использовать, скажем, VPN и т. д.. вот…
Теперь у вас есть мощный внутренний маршрутизатор для VPN и любой другой службы, которую вы хотите. Оставляем граничный маршрутизатор для выполнения простых задач маршрутизации, натурных и межсетевых экранов. Дайте некоторым клиентам свой обычный шлюз LAN , а некоторым клиентам виртуальную машину OpenWrt, и готово! бедняги PBR ;).
Настройка базового доступа к сети с помощью интерфейса командной строки (vi dhcp)
* используйте параметры шлюза и DNS для статического IP-адреса
CLI Установить LUCI на снимок
Buildroot Export
При тестировании чего-либо, не связанного с оборудованием. Использование buildroot и его немедленный запуск может значительно сэкономить время. Пример сценария показывает базовую настройку buildroot для быстрой настройки vbox.
#!/bin/bash sNAME = "openwrtx64-`date +% Y% m% d-% H% M`" VMFOLD = "` cat ~/.config/VirtualBox/VirtualBox. xml | grep -i SystemProperties | cut -d '"' -f2`" VDI = "$ {sNAME} .vdi"; DISKSIZE = '512000000'; VDIOSZ = '1920'; VIDMEM = "16" VMNAME = "$ { sNAME} "VBOXMANAGE =" VBoxManage "brvdi =" bin/target/x86/64/openwrt-x86-64-комбинированный-ext4.vdi "cat .config | grep -q '^ CONFIG_VMDK_IMAGES = y' || echo" Включить vm -Создание образа и запуск make "&& exit 1if [! -f" $ {brvdi} "]; затем echo" Вы не создали vdi по адресу: $ brvdi ... выполнили make? "&& exit 2 echo" Создание виртуальной машины: $ VMNAME "&& sleep 2 $ VBOXMANAGE createvm --name $ VMNAME --register 2>/dev/null>/dev/null echo" Копирование buildroot vdi в $ {VMFOLD}/$ {VMNAME}/$ {VDI} "cp $ brvdi $ {VMFOLD}/$ {VMNAME}/$ {VDI} $ VBOXMANAGE modifyvm $ VMNAME --description "openwrt vbox" --ostype "Linux26" --memory "512" --vram "$ VIDMEM" --cpus " 1 " --nic1" nat "--nictype1 82540EM --nic2" nat "--nictype2 82540EM 2>/dev/null>/dev/null $ VBOXMANAGE storagectl $ VMNAME --name" SATA Controller "--add "сата" --portcount "4" --hostiocache "на" --bootable "на" 2>/dev/null>/dev/null $ VBOXMANAGE storageattach $ VMNAME --storagectl "Контроллер SATA" --port "1" - -type "hdd" --nonrotational "on" --medium $ VMFOLD/$ {VMNAME}/$ VDI 2>/dev/null>/dev/null exit 0
Openvswitch
Openvswitch может быть полезен, если вы хотите выйти за рамки основных сетевых параметров виртуального бокса. Для базового теста. Попробуйте запустить интерфейс виртуальной машины LAN , подключенный к мосту vswitch.
sudo apt-get install -y openvswitch-switch bridge-utilssudo ovs-vsctl add-br br201sudo ifconfig br201 192.168.1.2 netmask 255.255.255.0 up
Затем измените правильную виртуальную машину> мостовой интерфейс на br201 в VirtualBox.
ПРИМЕЧАНИЕ. Возможно, вам потребуется установить для режима vbox-nic promiscous значение «Разрешить» при подключении к мосту хоста https://forum.openwrt.org/t/only-the-first-interface-in -br-lan-is-working-right-with-a-virtualbox-x86-64-openwrt/62539/5
Примеры последовательной и SSH-консоли ToDo
Видео загрузки
Для целей отладки во время загрузки… обычно вам нужно подключить консоль vbox. Один хороший и простой трюк – использовать средство захвата VirtualBox. Не очень удобен для копирования и вставки, но у этого метода есть свои преимущества.
Настройки ⇒ Дисплей ⇒ Запись [x] Включить запись
(NB: вы должны повторять это каждые boot, вы можете найти файл .webm по умолчанию в каталоге машин VirtualBox)
Советы, выходящие за рамки Basic
-
vnic0 ( LAN ) является ключевым. Получите к нему доступ … Знайте, как это работает на каждом уровне абстракции.
-
Не тестируйте сразу 500 вещей … проверяйте каждое соединение по частям. Отсутствие доступа к WAN в виртуальной машине – это то же самое, что отсутствие доступа к WAN в любой сети и т. Д. И т. Д. И т. Д. Упрощайте и побеждайте.
-
Если виртуальная машина должна использоваться для критически важного трафика… тщательно протестируйте и настройте все параметры HOST на постоянной основе.
-
Если вам действительно нужно изолировать клиентов. Серьезно подумайте об использовании 2 HOST NIC.
Gotcha-s
Начальный vmnicX> Доступ к локальной сети
Если у вас проблемы с доступом к OpenWrtVBox – LAN (LUCI)
-
Проверьте сетевые уровни
-
Ваш IP-адрес ХОЗЯКА или КЛИЕНТА в 192.168.1.x
-
Никакая другая сеть 192.168.1.x не используется!
-
Используйте VirtualBox GUI для доступа к OpenWrtVbox командная строка (ifconfig ИЛИ ping ИЛИ отредактируйте/etc/config/network и/etc/init.d/network restart
-
Проверьте графический интерфейс VirtualBox и выборочно соедините каждый виртуальный компьютер и убедитесь, что установлен флажок «Connected». Если КЛИЕНТ – это другая виртуальная машина… Также измените тип сети на мост.
ПРИМЕЧАНИЕ.
-
Возможно, вам потребуется клонировать eth0 для eth2, eth3 и т. Д., Если у вас более двух виртуальных устройств.
Мне не хватает места
Просто! Выключите виртуальную машину, добавьте новый диск (VirtualBox → Machine-S ettings → Storage → Add Storage Attachment → Add New Disk → Create New Disk), затем следуйте 3) из шага 3-иш… для настройки/наложения хранилища.
Можно сделать проще?
Конечно! Используйте hostonly (без сетевых настроек dhcp ← VirtualBox) для OpenWrtVBoxLAN и ВТОРОЙ виртуальной машины с ее единственным VNIC, также настроенным на hostonly в качестве клиента. Установите OpenWrtVBox VNIC2 – WAN на мост.
Вопросы, на которые у вас должны быть ответы
-
Каковы ваши требования к диску? (для многих пакетов потребуется дополнительный диск в качестве наложения, изменение размера раздела по умолчанию в официальном img или использование buildroot для указания параметров диска с самого начала)
-
Сколько сетевых интерфейсов потребуется ГОСТЮ? (т.е. LAN , WAN и SPARE)
-
Какой физический интерфейс или HOST-интерфейс /Networks будут ли эти GUEST-интерфейсы сопоставляться?
-
В какой сети будут находиться ваши GUEST-клиенты? Комфортно ли вам устранять базовые проблемы с подключением?
-
Свободное дисковое пространство на хосте? Прекрасно создать маршрутизатор с 30 ГБ места в корне сборки … но вы хотите клонировать/использовать/резервное копирование так много?
-
Вам нужно запустите виртуальную машину с отключенной сетью, чтобы отключить DHCP или изменить LAN ipaddress?
Resources
Обзор сети VirtualBox https://www.youtube.com/watch? v = cDF4X7RmV4Q
Основы OpenWrt x86OpenWrt на аппаратном обеспечении x86, также известном как ПК или серверы
[3] OpenWrt в VirtualBox HowTo
[5] Подробные сведения о файловых системах изображений и их изменении https://quantumwarp.com/kb/articles/25-dsl-broadband/899-run -lede-as-a-virtualbox-virtual-machine
[7] форум re: проблемы с мостом для macos 80211 https://forum.openwrt.org/t/virtualbox-openwrt-works-fine- но-клиенты-подключающиеся к-vm-router-have-no-internet/71398