Установка и настройка виртуального роутера OpenWRT в Proxmox KyKyIIIKuH, 11.02.2025 Создание и подготовка виртуальной машины для OpenWRT Войдите в виртуальную среду Proxmox (PVE) и нажмите кнопку «Создать ВМ» в правом верхнем углу Далее укажите «Имя» для виртуальной машины и «VM ID». В поле «Имя» можете вписать любое осмысленное название. В «VM ID» укажите номер который не используется другими виртуальными машинами PVE, далее он вам понадобится при вводе команды импорта IMG файла OpenWRT. Активируйте опцию «Дополнительно» для использования расширенного меню, затем активируйте опцию «Запуск при загрузке» Нажмите «Далее» В следующей странице меню ОС установите «Не использовать носители», затем нажмите «Далее» На странице меню Система оставьте все значения по умолчанию и нажмите «Далее« На странице меню Диски, укажите минимальный Размер диска, так как потом мы удалим его. Нажмите «Далее« На странице Процессор обязательно измените «Тип» на «host» чтобы избежать ограничений производительности. В опции «Ядра» можете указать 2 ядра или одно в зависимости от дальнейшей эксплуатации. Нажмите «Далее« На странице Память можете указать объем 1024 мегабайта. Этого будет достаточно, в противном случае объем оперативной памяти можно увеличить позже На странице Сеть отключите опцию «Сетевой экран» так как мы будем пользоваться файрволлом OpenWRT и нажмите «Далее« На последней странице Подтверждение просто нажмите «Готово« Удаление виртуального диска для дальнейшего импорта образа IMG OpenWRT в Proxmox Так как в следующих шагах мы будем импортировать готовый образ диска IMG, нам необходимо удалить пустой виртуальный диск созданный по умолчанию. Выберете созданную в предыдущем шаге виртуальную машину в левой панели, затем перейдите во вкладку «Оборудование«, выберете «Жесткий диск«, затем нажмите «Отключить» и подтвердите свой выбор нажав «Да« Затем выберете «Неиспользуемый диск 0» и нажмите кнопку «Удалить«. Подтвердите свой выбор нажатием кнопки «Да« Скачивание установочного образа OpenWRT для Proxmox Для скачивания актуального официального образа OpenWRT для Proxmox перейдите по ссылке https://downloads.openwrt.org/releases/22.03.5/targets/x86/64/ Выберете актуальную версию релиза, затем перейдите в targets, выберете архитектуру x86, затем перейдите в 64 и скопируйте ссылку на актуальный образ openwrt-XX.XX.X-x86-64-generic-ext4-combined.img.gz Команда для скачивания самого свежего официального образа OpenWrt с сайта загрузок выглядит следующим образом: wget https://downloads.openwrt.org/releases/22.03.5/targets/x86/64/openwrt-22.03.5-x86-64-generic-ext4-combined.img.gz Выполнить команду можно через любой SSH клиент или непосредственно через интерфейс Proxmox После перехода в targets/x86/64 доступны несколько файлов образов дисков с разными характеристиками (для proxmox необходимо использовать ext4-combined.img.gz или squashfs-combined.img.gz): ext4-combined.img.gz (Рекомендую для Proxmox) Этот образ диска использует единственный раздел ext4 для чтения/записи без корневой файловой системы squashfs только для чтения. В результате корневой раздел может быть расширен для заполнения большого диска (например, SSD/SATA/mSATA/SATA DOM/NVMe и т.д.). Функции, такие как режим сбоя или сброс к заводским настройкам, не будут доступны, так как для их работы требуется раздел squashfs только для чтения. В образе присутствуют как загрузочные, так и корневые разделы, а также область MBR с обновленным GRUB2. ext4-combined-efi.img.gz Этот образ диска аналогичен предыдущему, но предназначен для загрузки с помощью EFI. ext4-rootfs.img.gz Это образ раздела только корневой файловой системы. Его можно использовать для установки OpenWRT без перезаписи раздела загрузки и области MBR. kernel.bin squashfs-combined.img.gz Этот образ диска использует традиционную структуру OpenWrt с корневой файловой системой squashfs только для чтения и разделом для хранения настроек и установленных пакетов, доступным для чтения и записи. Из-за особенностей сборки этого образа у вас будет меньше 100 МБ свободного места для хранения дополнительных пакетов и настроек, и extroot не будет работать. Основное отличие от ext4-combined.img.gz — это возможность сброса OpenWRT до заводских настроек, а также функция защиты от потери доступа к роутеру в результате сбоя. Я считаю данные функции бессмысленными при использовании с Proxmox и актуальными при использовании OpenWRT в качестве самостоятельной системы, так как вместо них можно восстановить снимок системы OpenWRT, в т.ч. и для сброса до заводских настроек. squashfs-combined-efi.img.gz Этот образ диска аналогичен предыдущему, но предназначен для загрузки с помощью PC BIOS вместо EFI. Поддерживается загрузка с помощью EFI. squashfs-rootfs.img.gz rootfs.tar.gz Этот файл содержит все файлы из корневого раздела. Его можно извлечь на корневую файловую систему без необходимости перезаписи раздела. Чтобы избежать конфликтов, настоятельно рекомендуется создать резервные копии старых файлов и извлечь этот файл на пустую файловую систему. Импорт образа IMG OpenWRT в Proxmox и активация образа виртуального диска После завершения загрузки образа img.gz используйте следующую команду, чтобы распаковать его в файл IMG (название файла после команды gunzip может отличаться в зависимости от выбранного вами образа и его версии) gunzip openwrt-22.03.5-x86-64-generic-ext4-combined.img.gz Затем переименуйте его в более короткое имя (openwrt.img), чтобы его было легче набирать. mv openwrt-22.03.5-x86-64-generic-ext4-combined.img openwrt.img Вы также можете загрузить файл OpenWrt на ваш компьютер, затем разархивировать его в файл IMG, переименовать и загрузить на сервер Proxmox с помощью SFTP клиентов WinSCP или FileZilla. Далее импортируем файл IMG в виртуальную машину. Введите следующую команду для загрузки образа. 100 — это идентификатор виртуальной машины из первого шага (ваш VM ID может отличаться от моего), openwrt.img — это файл, который мы только что скачали, local-lvm — название хранилища виртуальной машины qm importdisk 100 openwrt.img local-lvm Вернитесь во вкладку «Оборудование» виртуальной машины OpenWrt, и вы увидите импортированный «Неиспользуемый диск 0«, выберете его и нажмите кнопку «Редактировать«. Выберете «SCSI» для «Шина/Устройство» (иногда требуется указать «SATA») и нажмите «Добавить« Также необходимо добавить корректное сетевое устройство для того чтобы система OpenWRT могла подключиться к интернету и загружать новые пакеты Нажмите Оборудование -> Сетевое устройство Отключите опцию «Сетевой экран» и нажмите кнопку «Добавить«, сетевой мост можно оставить предложенный по умолчанию. Более детально будем настраивать в следующих шагах. Далее необходимо добавить импортированный виртуальный диск в автозагрузку. Для этого перейдите в Параметры -> Порядок загрузки. Затем поставьте галку напротив виртуального диска OpenWRT и перетащите его в самый верх. Нажмите «ОК« Настройка сетевых интерфейсов Proxmox OpenWRT Описанные ниже настройки являются сугубо моими личными, для вас же они могут послужить образцом базовой настройки сетевых интерфейсов OpenWRT в Proxmox. Основной смысл моих настроек заключается в том чтобы виртуальный роутер OpenWRT полностью перехватил DHCP сервер и управление портами на себя. Перейдите в управление pve и нажмите в левом меню вкладки «Система» -> «Сеть«. В открывшемся окне будут отображены все порты вашего программного роутера в виде сетевых устройств, у меня их 5 штук и мне нужно создать для каждого порта сетевой мост Linux Bridge. На данный момент OpenWRT использует всего один порт и мы это исправим добавив новые сперва в Proxmox, затем в виртуальную машину OpenWRT, затем активируем их непосредственно в системе OpenWRT. Мост vmbr0 создан системой Proxmox автоматически для первого порта (enp3s0), адрес и шлюз для него присвоены домашним роутером, который использовался на момент установки Proxmox Добавьте новые сетевые мосты Linux-Bridge для каждого порта нажав кнопку «Создать« дальше тоже самое для всех портов, enp2s0, enp3s0, enp4s0, enp5s0 Также создайте один Linux Bridge без указания порта сетевого моста После того как все мосты были созданы, нажмите на кнопку «Применить конфигурацию« В подтверждении укажите «Да« Затем необходимо добавить созданные мосты непосредственно в виртуальную машину OpenWRT Перейдите во вкладку виртуальной машины OpenWRT, перейдите в «Оборудование» , затем нажмите на кнопки «Добавить» -> «Сетевое устройство« Добавьте все ранее созданные мосты Linux Bridge, не забудьте снять галочку «Сетевой экран«: по такой же схеме добавляем остальные порты для OpenWRT Добавленные порты станут доступны в OpenWRT Запустите виртуальную машину OpenWRT нажав кнопку «Запуск» в правом верхнем углу. зайдите OpenWRT через консоль нужно отредактировать файл /etc/config/network vi /etc/config/network Нам нужен раздел br-lanделаем все как на скриншоте ниже Теперь мы настроим сеть Proxmox для работы с виртуальным роутером OpenWRT в качестве шлюза. Перейдите в Proxmox — pve — Сеть. Дважды нажмите на Linux Bridge vmbr0 и удалите содержимое полей IPv4/CIDR и Шлюз (IPv4), затем нажмите ОК Затем дважды нажмите на ранее созданный Linux Bridge vmbr99 и заполните содержимое полей IPv4/CIDR и Шлюз (IPv4): IPv4/CIDR: 192.168.1.2/24 (или любой другой IP типа X.X.X.X/24 для вашего Proxmox) Шлюз (IPv4): 192.168.1.1 (IP адрес вашего виртуального роутера OpenWRT, может отличаться от моего примера) Нажмите ОК. Нажмите кнопку Применить конфигурацию После применения изменений ваш виртуальный роутер OpenWRT будет работать точно также как и обычный роутер OpenWRT, а Linux Bridge vmbr0 вы сможете использовать для других виртуальных машин в качестве источника интернета и локальной сети вашего виртуального роутера. Переходим в параметры виртуальной машины, нам нужны разделы Запуск при загрузке и Порядок запуска и отключения Теперь необходимо перезагрузить ProxMox для применения изменений. Увеличение объема диска OpenWRT в Proxmox Образ OpenWRT x86 использует следующую структуру разделов (вид изнутри системы): /dev/sda1 — это раздел ext4 /boot размером 16 МБ, в котором хранятся GRUB и ядро. /dev/sda2 — это раздел размером 104 МБ, содержащий корневую файловую систему squashfs и файловую систему f2fs с возможностью чтения и записи ИЛИ корневую файловую систему ext4 (в зависимости от того, какой образ вы выбрали). Любое дополнительное пространство на устройстве не распределено. Так как на нашем устройстве с Proxmox имеется огромное количество памяти, мы можем позволить себе расширить дисковое пространство роутера /dev/sda2 со 104 МБ до 1 гигабайта и более. Объема памяти в 1 гигабайт будет вполне достаточно для загрузки всех возможных пакетов OpenWRT, но мы выделим память с запасом, т.е. 2 гигабайта. Не советую выделять слишком большой объем памяти, так как уменьшить дисковое пространство гораздо сложнее чем увеличить. Используем 2 гигабайта или меньше. Перейдите во вкладку «Оборудование«, выберете «Жесткий Диск«, нажмите «Действие над диском» -> «Изменить размер« Выставьте размер диска 2 гигабайта и нажмите «Изменить размер диска« Перезапустите виртуальную машину OpenWRT Подключитесь к OpenWRT через SSH клиент. Используйте пакет parted в OpenWRT для того чтобы исправить таблицу разделов, определить и расширить корневой раздел. Используйте пакет losstup для сопоставления корневого раздела и resize2fs для расширения корневой файловой системы. Введите следующие команды для расширения корневого раздела и корневой файловой системы OpenWRT: # Установка пакетов opkg update opkg install parted losetup resize2fs ## Расширение корневого раздела # Определение имени диска и номера раздела echo -e "ok\nfix" | parted -l ---pretend-input-tty # Расширение корневого раздела parted -s /dev/sda resizepart 2 100% ## Расширение корневой файловой системы # Сопоставление корневого раздела и петлевого устройства loop losetup /dev/loop1 /dev/sda2 # Развернуть корневую файловую систему resize2fs -f /dev/loop1 ## Применить изменения reboot Объем диска OpenWRT увеличен до 2 гигабайт: ProxMox