Установка и настройка виртуального роутера OpenWRT в Proxmox

Proxmox

Данная инструкция описывает установку виртуального роутера OpenWRT в системе виртуализации Proxmox VE и предполагает что система Proxmox VE уже установлена на вашем устройстве. Подробную инструкцию по установке Proxmox можно найти по ссылке https://openode.ru/topic/522-proxmox-ve-8-rukovodstvo-po-bystromu-startu-chast-1/

На момент написания инструкции используется Proxmox VE 8.0.4, OpenWRT 22.03.5 и мини-пк N5105. Также рекомендую этот мини-пк с более мощным железом и процессором Intel i5-i7. Ваше железо и версия ПО могут отличаться, но в целом инструкция должна быть для многих актуальной.

Также данная инструкция по установке и настройке OpenWRT частично применима к ПК, серверному оборудованию и другим системам виртуализации с архитектурой x86 (Intel/AMD)

Создание и подготовка виртуальной машины для 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/

Выберете актуальную версию релиза, затем перейдите в 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

Также в качестве альтернативы прошивки вы можете использовать готовую сборку с Passwall. Что такое Passwall и как им пользоваться можете почитать тут https://habr.com/ru/articles/755934/. Помимо Passwall в сборку включены LuCI, dnsmasq-full, upnp, QoS, OpenVPN, Wireguard + Passwall с NaiveProxy и Hysteria. Файлы прошивки для нашей архитектуры x86-64 можно найти скачать тут https://disk.yandex.ru/d/-0TWYBj_CqrQMQ

Альтернативная команда для скачивания образа OpenWRT Passwall с моего сайта выглядит так:

wget https://kiberlis.ru/files/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 и перетащите его в самый верх. Нажмите «ОК«

Запустите виртуальную машину OpenWRT нажав кнопку «Запуск» в правом верхнем углу.

Затем переключитесь в «Консоль» OpenWRT и нажмите Enter для ввода команд внутри системы OpenWRT.

По умолчанию IP адрес OpenWRT это 192.168.1.1, по нему мы также заходим в веб интерфейс OpenWRT.

Если Proxmox и ваша действующая локальная сеть имеют другой IP типа 10.0.0.1, то для изменения стандартного IP OpenWRT используйте следующую команду. Вместо X.X.X.X введите новый IP адрес для OpenWRT.

Команды нужно вводить вручную, так как копирование в консоли Proxmox не работает для OpenWRT. Также при доступности OpenWRT в сети можно воспользоваться SSH клиентом WinCSP или Tabby для ввода команд.

uci set network.lan.ipaddr='X.X.X.X'
uci commit network
/etc/init.d/network restart

По умолчанию в OpenWRT используется учетная запись root и пароль отсутствует. Для входа просто нажмите Login без ввода пароля

Установка пароля OpenWRT

Для установки первого пароля OpenWRT введите команду passwd в консоль OpenWRT

passwd

После ввода команды passwd дважды введите новый пароль для пользователя root

Также вы можете изменить пароль root в веб интерфейсе OpenWRT:

Увеличение объема диска OpenWRT в Proxmox

Образ OpenWRT x86 использует следующую структуру разделов (вид изнутри системы):

  1. /dev/sda1 — это раздел ext4 /boot размером 16 МБ, в котором хранятся GRUB и ядро.
  2. /dev/sda2 — это раздел размером 104 МБ, содержащий корневую файловую систему squashfs и файловую систему f2fs с возможностью чтения и записи ИЛИ корневую файловую систему ext4 (в зависимости от того, какой образ вы выбрали).

Любое дополнительное пространство на устройстве не распределено.

Так как на нашем устройстве с Proxmox имеется огромное количество памяти, мы можем позволить себе расширить дисковое пространство роутера /dev/sda2 со 104 МБ до 1 гигабайта и более. Объема памяти в 1 гигабайт будет вполне достаточно для загрузки всех возможных пакетов OpenWRT, но мы выделим память с запасом, т.е. 2 гигабайта.

Не советую выделять слишком большой объем памяти, так как уменьшить дисковое пространство гораздо сложнее чем увеличить. Используем 2 гигабайта или меньше.

Для начала отключаем виртуальную машину OpenWRT чтобы была возможность расширить используемый виртуальный диск. Нажимаем «Отключить» в правом верхнем углу.

Подтверждаем отключение нажатием «Да«

Перейдите во вкладку «Оборудование«, выберете «Жесткий Диск«, нажмите «Действие над диском» -> «Изменить размер«

Выставьте размер диска 2 гигабайта и нажмите «Изменить размер диска«

Запустите виртуальную машину OpenWRT нажатием кнопки «Запуск» в правом верхнем углу

Размер диска изменился, но система не видит изменений потому как необходимо увеличить размер файловой системы и применить изменения при помощи losetup resize2fs

Подключитесь к OpenWRT через SSH клиент. Я буду использовать Tabby, вы можете выбрать любой другой SSH клиент

Для подключения SSH используем следующие параметры:

  • IP адрес (Хост): тот что присвоили ранее для OpenWRT в конце пункта 4
  • Порт: 22
  • Имя пользователя: root
  • Пароль: тот что присвоили в пункте 5

Используйте пакет 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 гигабайт:

Русификация веб-интерфейса LuCi OpenWRT

Для установки русификации OpenWRT введите следующие команды в SSH клиенте:

# Установка пакета локализации LuCi OpenWRT с русским языком
opkg update
opkg install luci-i18n-base-ru

Также вы можете установить русский пакет локализации через веб-интерфейс нажав в верхнем меню «System» -> «Software«, затем нажмите кнопку «Update lists…» для обновления репозитория пакетов. Далее введите luci-i18n-base-ru в поле Filter, затем нажмите на кнопку «Install» напротив пакета luci-i18n-base-ru.

После установки пакета обновите страницу веб-интерфейса нажав на логотип OpenWRT или любую другую страницу веб-интерфейса.

Настройка сетевых интерфейсов Proxmox OpenWRT

Описанные ниже настройки являются сугубо моими личными, для вас же они могут послужить образцом базовой настройки сетевых интерфейсов OpenWRT в Proxmox. Основной смысл моих настроек заключается в том чтобы виртуальный роутер OpenWRT полностью перехватил DHCP сервер и управление портами на себя.

Перейдите в управление pve и нажмите в левом меню вкладки «Система» -> «Сеть«. В открывшемся окне будут отображены все порты вашего программного роутера в виде сетевых устройств, у меня их 4 штуки, и мне нужно создать для каждого порта сетевой мост Linux Bridge. На данный момент OpenWRT использует всего один порт и мы это исправим добавив новые сперва в Proxmox, затем в виртуальную машину OpenWRT, затем активируем их непосредственно в системе OpenWRT.

Мост vmbr0 создан системой Proxmox автоматически для первого порта (enp2s0), адрес и шлюз для него присвоены домашним роутером, который использовался на момент установки Proxmox

Добавьте новые сетевые мосты Linux-Bridge для каждого порта нажав кнопку «Создать«

Также создайте один Linux Bridge без указания порта сетевого моста

После того как все мосты были созданы, нажмите на кнопку «Применить конфигурацию«

В подтверждении укажите «Да«

Затем необходимо добавить созданные мосты непосредственно в виртуальную машину OpenWRT

Перейдите во вкладку виртуальной машины OpenWRT, перейдите в «Оборудование» , затем нажмите на кнопки «Добавить» -> «Сетевое устройство«

Добавьте все ранее созданные мосты Linux Bridge, не забудьте снять галочку «Сетевой экран«:

Добавленные порты станут доступны в OpenWRT, зайдите в веб-интерфейс OpenWRT и активируйте порты добавив их в мост br-lan

Для этого нажмите «Сеть» -> «Интерфейсы«, перейдите во вкладку «Устройства» и нажмите кнопку «Настроить» напротив моста br-lan. Затем в «Порты моста» выберете новые порты, они же являются сетевыми устройствами и виртуальными мостами в Proxmox. Нажмите «Сохранить«. Затем в нижней панели ОБЯЗАТЕЛЬНО нажмите «Применить«

Также измените длину префикса локальной сети с /8 (по умолчанию) на /24 для более привычного присвоения IP адресов внутри сети. Для этого перейдите в «Сеть» -> «Интерфейсы«, нажмите «Изменить» в интерфейсе lan и укажите IPv4 адрес типа X.X.X.1/24 затем нажмите «Сохранить«. В нижней панели ОБЯЗАТЕЛЬНО нажмите «Применить» как и в предыдущем действии

Теперь мы настроим сеть 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 вы сможете использовать для других виртуальных машин в качестве источника интернета и локальной сети вашего виртуального роутера.

Обновление OpenWRT x86

https://openwrt.org/docs/guide-user/installation/openwrt_x86#upgrading/

Примечание

Бэкап сетевых настроек Proxmox VE

Для бэкапа сетевых настроек Proxmox VE воспользуйтесь командой:

cp /etc/network/interfaces /etc/network/interfaces.2

Данная команда создает копию файла interfaces в папке /etc/network

Путаница сетевых устройств wan порта Proxmox в OpenWRT

Иногда необходимо поменять интерфейсы eth0 и eth1 местами в системе OpenWRT. Связано это с тем что в Proxmox они присваиваются автоматически к linux-bridge и фактически являются одним и тем же портом в мини пк.

Нужно выставить eth1 вместо eth0 в Сеть — Интерфесы — Устройства — br-lan — Порты моста. Также нужно выставить eth0 вместо eth1 в Сеть — Интерфесы — wan — устройство.

Или наоборот.

Оцените статью
Кибер Лис
Добавить комментарий

  1. Fill

    Здравствуйте!
    Нужна помощь: Имею тонкий клиент HP t610, на нем 8 гб DDR3 1600 и ssd 160 Гб.
    Установлен ProxMox и в контейнере виртуальная OpenWrt. Устанавливал по Вашему мануалу. Всё запустилось, но — поблема в WiFi адаптере.
    По умолчанию в HP t610, в слоте mini PCI, установлен — WiFi адаптер Broadcom BCM943228HMB WiFi 802.11 a/b/g/n

    На какой WiFi адаптер его стоит заменить???
    Присматриваюсь к Intel 6230 2.4GHz, 5GHz.

    Возможно ли использование подключённого к HP t610 простого роутера, в качестве точки доступа, вместо WiFi карты?
    Если, да — как это настроить?
    Нюансы: в HP только один RJ-45 разъём (доп. плату адаптера — не устанавливал) и роутер, видимо, нужно подключать через свитч (маршрутизатор).

    Ответить
    1. kiberlis автор

      Роутер в качестве точки доступа с выключенным DHCP или точка доступа WiFi наподобие Ubiquity Unifi будет лучшим решением. Отдельные WiFi адаптеры использовать не советую в описанном мною кейсе. Слот RJ-45 можно расширить USB Ethernet сетевой картой, как вариант использовать гигабитную сетевую карту от Ugreen.

      Ответить
  2. Дмитрий

    Здравствуйте! Как тогда (в контексте статьи) правильно настроить firewall на самом pve?

    Ответить
    1. kiberlis автор

      Firewall это материал для отдельной статьи. Появится время — напишу.

      Ответить