Как установить OpenWRT on Proxmox 6.4-13

Posted by

Для определенного проекта (возможно, как замена Mikrotik CHR выступающий как шлюз, как замена системы на Xiaomi Gateway DGNWG05LM) нужно познакомиться с OpenWrt, а как лучше это сделать, лучше задействовать виртуализацию, к примеру, просто развернуть как виртуальная машина под связкой Debian 10 + Proxmox 6.4-13. Если более новая связка, то не думаю, что что-то будет отличаться от моей, т.к. даже на Debian 10 + Proxmox 7.4-3 моего боевого сервера данная заметка для самого себя работает.

OpenWrt расшифровывается, как Open Wireless Router — это встраиваемая операционная система, основанная на ядре Linux, предназначенная, в первую очередь, для домашних маршрутизаторов (роутеров, от англ. router). Основные компоненты включают в себя ядро Linux, util-linux, uClibc или musl[4] и BusyBox. Размер всех компонентов оптимизирован в связи с тем, что в большинстве домашних маршрутизаторов сильно ограничен объём памяти.

Ниже разбор шагов на практическом применении по развертывании OpenWRT на Proxmox

Шаг №1: Подключаюсь к своему Proxmox на базе связке Debian 10 + Proxmox 6.4.13 через Webбраузер посредством URL адреса: https://IP&DNS:8006 (https://172.33.33.25:8006) - user&pass&pam

  • User name: root
  • Password: password
  • Realm: Linux PAM Standard authentication
  • Language: English
  • Save User name: отмечаю галочкой

Авторизуюсь в своем Proxmox 6.4-13

и нажимаю Login

Шаг №2: Создаю виртуальную машину внутри Proxmox:

https://IP&DNS:8006 - user&pass&pam - Create VM

(General)

  • Node: srv-proxmox
  • VM ID: 700
  • Name: srv-openwrt
  • Resource Pool: ничего не указываю
  • Advanced: галочкой не отмечаю

(OS)

  • Do not use any media: отмечаю галочкой
  • Type: Linux
  • Version: 5.x - 2.6 Kernel

(System)

  • Graphic card: Default
  • Qemu Agent: галочку не ставим
  • SCSI Controller: VirtIO SCSI single
  • Advanced: отмечаем галочкой
  • BIOS: Default (SeaBIOS)
  • Machine: Default (i440fx)

(Hard Disk)

  • Bus/Device: SCSI/0
  • Storage: disk2
  • Disk size (GiB): 10
  • Cache: Default (No cache)
  • Advanced: отмечаем галочкой
  • IO thread: отмечаем галочкой
  • Backup: отмечаем галочкой

(CPU)

  • Sockets: 1
  • Cores: 2
  • Type: host
  • VCPUs: 2
  • CPU units: 1024
  • Enable NUMA: галочку не ставим
  • Advanced: отмечаем галочкой

(Memory)

  • Memory (MiB): 2048 (оставляю по умолчанию)
  • Minimum memory (MiB): 2048
  • Ballooning Device: отмечаем галочкой
  • Advanced: отмечаем галочкой

(Network)

  • Bridge: vmbr0
  • Model: VirtIO (paravirtualized)
  • VLAN Tag: no VLAN
  • MAC address: auto
  • Firewall: отмечено галочкой
  • Advanced: отмечаем галочкой

(Confirm)

сверяемся, если все устраивает, то нажимаем Finish.

Итого контейнер для виртуальной машины создан

Итого контейнер для виртуальной машины создан

Шаг №3: Переходим в созданный контейнер виртуальной машины (VM ID: 700) и в Hardware отключаем дефолтный Hard Disk (scsi0), делаю через Web-интерфейс:

https://IP&DNS:8006 - user&pass&pam - (Server View) Datacenter - srv-proxmox - VM ID: 700 - Hardware – выделяю оборудование Hard Disk (scsi0): disk2:vm-700-disk-0,iothread=1,size=10G и нажимаю Detach

Отключаем Hard Disk (scsi0) от виртуальной машины

затем на появившееся окно – подтверждаю свое намерение:

Confirm

Are you sure you want to detach entry 'Hard Disk (scsi0)'

и нажимаю Yes

после в Hardware значится отключенный диск, выделяем его

  • Unused Disk 0: disk2:vm-700-disk-0 и нажимаем Remove

его удаляем

Удаляем от контейнера виртуальной машины отключенный жесткий диск

затем на появившееся окно – подтверждаю свое намерение:

Confirm

Are you sure you want to remove entry 'Unused Disk 0'

This will permanently erase all data

и нажимаю Yes

Шаг №4: Далее открываем Shell моего Proxmox через Webинтерфейс, т.е.  будем взаимодействовать с хостом с целью подмены Hard Disk для созданной виртуальной машины (VM ID: 700) под OpenWrt которую разворачиваем, либо подключаемся к хосту по SSH:

https://IP&DNS:8006 - user&pass&pam - (Server View) Datacenter - srv-proxmox - >_ Shell

or

Шаг №5: Скачиваю самый актуальный образ OpenWRT (на текущую дату 26.01.2024) для Proxmox с официального сайта (https://downloads.openwrt.org/releases/) ориентируясь на архитектуру x86, после перехожу в каталог x64 и через Web-интерфейс копирую в буфер обмена ссылку на образ дабы потом ее указать в Shell хоста Proxmox для скачивания:

На заметку: для Proxmox необходимо использовать ext4-combined.img.gz или squashfs-combined.img.gz

Шаг №6: Распаковываем скачанный файл generic-ext4-combined.img.gz, переименовываем для удобства работы с ним, импортируем его (образ диска) в виртуальную машину VM ID: 700

После открываем контейнер виртуальной машины VM ID: 700 – переходим в Hardware и видим, что импортированный диск значится пока как "Unused Disk 0", добавляем его:

Выделяем его и нажимаем Edit

  • Bus/Device: SCSI:0
  • Cache: Default (No cache)
  • SCSI Controller: VirtIO SCSI single
  • Disk image: disk2:vm-700-disk-0
  • Advanced: отмечаем галочкой
  • IO thread: отмечаем галочкой
  • Backup: Отмечаем галочкой

Добавляем импортированный образ диска в контейнер виртуальной машины VM ID: 700

и нажимаем Add

в итоге параметры виртуальной машины по части диска изменились, что теперь Hard Disk составляет 124M

В итоге параметры виртуальной машины по части диска изменились, что теперь Hard Disk составляет 124M

Но это еще не все, вносим корректировки в контейнер виртуальной машины по части загрузки:

https://IP&DNS:8006 - user&pass&pam - (Server View) Datacenter - srv-proxmox - VM ID: 700 - Options

  • сейчас Boot Order: ide2, net0
  • изменяю на Boot Order: scsi0, ide2, net0

Изменяю порядок загрузки для VM ID: 700

и нажимаю OK

Шаг №7: Запускаем виртуальную машину VM: ID 700

https://IP&DNS:8006 - user&pass&pam - (Server View) Datacenter - srv-proxmox - VM ID: 700 - Start

после переходим в консоль виртуальной машины VM: ID 700

https://IP&DNS:8006 - user&pass&pam - (Server View) Datacenter - srv-proxmox - VM ID: 700 - >_ Console

вижу GRUB меню

Вижу Grub меню загрузки OpenWRT

проходит отведенное время в лице 5 секунд, и операционная система начинает загрузку

Проходит отведенное время в лице 5 секунд, и операционная система начинает загрузку

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

Но так как у меня интерфейс vmbr0 – это сеть не 192.168.1.0/24, то обратиться к Web-интерфейсу OpenWRT я не могу, чтобы OpenWRT стал доступен я переделываю настройки сетевой карты на свою сеть: 172.33.33.0/24 и чтобы не статический IP адрес был, а был получен от DHCP-сервиса (он поднят на базе домашнем роутера в лице Mikrotik RB2011UiAS)

На заметку: Вот только после редактирования через редактор vi выйти в режим где можно через Shift + ":" и набрать wq! не получается, т.к. по клавише Esc (возвращения в командный режим) я выхожу из экрана Console виртуальной машины. В этом случае мне видится следующее костыльное решение (а все благодаря заметке: "Как в Proxmox 6 использовать xterm.js для VM"

https://IP&DNS:8006 - user&pass&pam - (Server View) Datacenter - srv-proxmox - VM ID: 700 - Hardware - Add – выбираю Serial Port

  • Serial Port: 0

и нажимаю Add, после у VM ID: 700 появляется меню xterm.js, до этого он было не активно

После у VM ID: 700 появляется меню xterm.js, до этого он было не активно

Запускаю VM и выбираю: >_ Console - xterm.js

вижу лог загрузки в отдельном окне, нажимаю клавишу ENTER

Запускаю VM и выбираю: >_ Console - xterm.js вижу лог загрузки

после вижу приветствие

Вижу приветствие

вношу изменения и уже для выхода в командный режим по клавише ESC отрабатывает:

Esc, :wq!

Перезапускаю сетевой интерфейс

Итого виртуальная машина с OpenWRT получала от моего DHCP сервиса IP адрес, теперь он равен: 172.33.33.139

Шаг №8: А раз IP адрес в моей сети, то на него я могу обратиться через Webинтерфейс тем самым получить доступ к Webинтерфейс администрирования OpenWRT:

А раз IP адрес в моей сети, то на него я могу обратиться через Web-интерфейс тем самым получить доступ к Web-интерфейс администрирования OpenWRT

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

  • Username: root
  • Password: ничего не указываю

и нажимаю Log in

Итого так выглядит Web-интерфейс взаимодействия с OpenWRT

Итого так выглядит Web-интерфейс взаимодействия с OpenWRT

Не дело, когда доступ куда-либо без пароля, значит устанавливаем его:

http://<OpenWRT> (http://172.33.33.139) - Login:Pass (Login: root Pass: <blank>) - System - Administration – вкладка Router Password

  • Password: задаю пароль, к примеру 712mbddr@
  • Confirmation: подтверждаю пароль, 712mbddr@

и нажимаю Save

Теперь пароль на вход через Web-интерфейс и через консоль защищен связкой Login&Pass.

Делаю Logoff и проверяю что в xterm.js чтобы авторизоваться нужно указать Login + Pass (то что выше присвоили):

В Web-интерфейс нужен пароль, а в Console загружается без указания, значит его нужно поставить, ставлю:

система перезагрузилась, и опять приглашение root@OpenWrt:/#, т.е. небыло запроса на авторизацию.

Открываю документацию (https://openwrt.org/ – очень много полезной информации) и натыкаюсь, что "Authentication for OpenWrt TTY and serial console is disabled by default" (Аутентификация для OpenWrt TTY и последовательной консоли отключена по умолчанию.). Включаю аутентификацию:

и вот теперь

и нажимаю ENTER тем самым в случае правильно указанных данных попадаю в консоль командной строки, как авторизованный:

Выключаю VM:

Делаю снапшот для виртуальной машины VM ID: 700 с именем OpenWRT дабы после изучения откатываться на первоначальное состояние с целью записи шагов для каждой задачи от и до тем самым составляю себе заметки.

Что мы имеем по итогу, я для себя разобрался как для последующего изучения производится развертывание системы OpenWRT под виртуализацией в лице связки Debian 10 + Proxmox 6.4-13. В дальнейшем дабы не загромождать текущую заметку я буду шаг за шагом приобщаться к работе с ней, а сейчас я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.