Для определенного проекта (возможно, как замена 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: отмечаю галочкой
и нажимаю 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
затем на появившееся окно – подтверждаю свое намерение:
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
ekzorchik@ekzorchik:~$ ssh -l root 172.33.33.25 root@srv-proxmox:~#
Шаг №5:
Скачиваю самый актуальный образ OpenWRT
(на текущую дату 26.01.2024
) для Proxmox
с официального сайта (https://downloads.openwrt.org/releases/
) ориентируясь на архитектуру x86
, после перехожу в каталог x64
и через Web
-интерфейс копирую в буфер обмена ссылку на образ дабы потом ее указать в Shell
хоста Proxmox
для скачивания:
root@srv-proxmox:~# wget https://downloads.openwrt.org/releases/23.05.2/targets/x86/64/openwrt-23.05.2-x86-64-generic-ext4-combined.img.gz root@srv-proxmox:~# file openwrt-23.05.2-x86-64-generic-ext4-combined.img.gz openwrt-23.05.2-x86-64-generic-ext4-combined.img.gz: gzip compressed data, max compression, from Unix, original size 570425344 root@srv-proxmox:~#
На заметку: для Proxmox
необходимо использовать ext4-combined.img.gz
или squashfs-combined.img.gz
Шаг №6:
Распаковываем скачанный файл generic-ext4-combined.img.gz
, переименовываем для удобства работы с ним, импортируем его (образ диска) в виртуальную машину VM ID: 700
root@srv-proxmox:~# gunzip openwrt-23.05.2-x86-64-generic-ext4-combined.img.gz gzip: openwrt-23.05.2-x86-64-generic-ext4-combined.img.gz: decompression OK, trailing garbage ignored root@srv-proxmox:~# file openwrt-23.05.2-x86-64-generic-ext4-combined.img openwrt-23.05.2-x86-64-generic-ext4-combined.img: DOS/MBR boot sector root@srv-proxmox:~# root@srv-proxmox:~# mv openwrt-23.05.2-x86-64-generic-ext4-combined.img openwrt.img root@srv-proxmox:~# qm importdisk 700 openwrt.img disk2 importing disk 'openwrt.img' to VM 700 ... Rounding up size to full physical extent 124.00 MiB WARNING: You have not turned on protection against thin pools running out of space. WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full. Logical volume "vm-700-disk-0" created. WARNING: Sum of all thin volume sizes (<1.88 TiB) exceeds the size of thin pool disk2/data2 and the size of whole volume group (<931.51 GiB). transferred 0.0 B of 120.5 MiB (0.00%) transferred 2.0 MiB of 120.5 MiB (1.66%) transferred 4.0 MiB of 120.5 MiB (3.32%) transferred 6.0 MiB of 120.5 MiB (4.98%) transferred 8.0 MiB of 120.5 MiB (6.64%) transferred 10.0 MiB of 120.5 MiB (8.30%) transferred 12.0 MiB of 120.5 MiB (9.96%) transferred 14.0 MiB of 120.5 MiB (11.62%) transferred 16.0 MiB of 120.5 MiB (13.28%) transferred 18.0 MiB of 120.5 MiB (14.94%) transferred 20.0 MiB of 120.5 MiB (16.60%) transferred 22.0 MiB of 120.5 MiB (18.26%) transferred 24.0 MiB of 120.5 MiB (19.92%) transferred 26.0 MiB of 120.5 MiB (21.58%) transferred 28.0 MiB of 120.5 MiB (23.24%) transferred 30.0 MiB of 120.5 MiB (24.90%) transferred 32.0 MiB of 120.5 MiB (26.56%) transferred 34.0 MiB of 120.5 MiB (28.22%) transferred 36.0 MiB of 120.5 MiB (29.88%) transferred 38.0 MiB of 120.5 MiB (31.54%) transferred 40.0 MiB of 120.5 MiB (33.20%) transferred 42.0 MiB of 120.5 MiB (34.85%) transferred 44.0 MiB of 120.5 MiB (36.51%) transferred 46.0 MiB of 120.5 MiB (38.17%) transferred 48.0 MiB of 120.5 MiB (39.83%) transferred 50.0 MiB of 120.5 MiB (41.49%) transferred 52.0 MiB of 120.5 MiB (43.15%) transferred 54.0 MiB of 120.5 MiB (44.81%) transferred 56.0 MiB of 120.5 MiB (46.47%) transferred 58.0 MiB of 120.5 MiB (48.13%) transferred 60.0 MiB of 120.5 MiB (49.79%) transferred 62.0 MiB of 120.5 MiB (51.45%) transferred 64.0 MiB of 120.5 MiB (53.11%) transferred 66.0 MiB of 120.5 MiB (54.77%) transferred 68.0 MiB of 120.5 MiB (56.43%) transferred 70.0 MiB of 120.5 MiB (58.09%) transferred 72.0 MiB of 120.5 MiB (59.75%) transferred 74.0 MiB of 120.5 MiB (61.41%) transferred 76.0 MiB of 120.5 MiB (63.07%) transferred 78.0 MiB of 120.5 MiB (64.73%) transferred 80.0 MiB of 120.5 MiB (66.39%) transferred 82.0 MiB of 120.5 MiB (68.05%) transferred 84.0 MiB of 120.5 MiB (69.71%) transferred 86.0 MiB of 120.5 MiB (71.37%) transferred 88.0 MiB of 120.5 MiB (73.03%) transferred 90.0 MiB of 120.5 MiB (74.69%) transferred 92.0 MiB of 120.5 MiB (76.35%) transferred 94.0 MiB of 120.5 MiB (78.01%) transferred 96.0 MiB of 120.5 MiB (79.67%) transferred 98.0 MiB of 120.5 MiB (81.33%) transferred 100.0 MiB of 120.5 MiB (82.99%) transferred 102.0 MiB of 120.5 MiB (84.65%) transferred 104.0 MiB of 120.5 MiB (86.31%) transferred 106.0 MiB of 120.5 MiB (87.97%) transferred 108.0 MiB of 120.5 MiB (89.63%) transferred 110.0 MiB of 120.5 MiB (91.29%) transferred 112.0 MiB of 120.5 MiB (92.95%) transferred 114.0 MiB of 120.5 MiB (94.61%) transferred 116.0 MiB of 120.5 MiB (96.27%) transferred 118.0 MiB of 120.5 MiB (97.93%) transferred 120.0 MiB of 120.5 MiB (99.59%) transferred 120.5 MiB of 120.5 MiB (100.00%) transferred 120.5 MiB of 120.5 MiB (100.00%) Successfully imported disk as 'unused0:disk2:vm-700-disk-0' root@srv-proxmox:~#
После открываем контейнер виртуальной машины 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: Отмечаем галочкой
и нажимаем Add
в итоге параметры виртуальной машины по части диска изменились, что теперь 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
и нажимаю 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
меню
проходит отведенное время в лице 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
)
root@OpenWrt:/# cp /etc/config/network /etc/config/network.backup root@OpenWrt:/# vi /etc/config/network
На заметку: Вот только после редактирования через редактор vi выйти в режим где можно через Shift + ":"
и набрать wq!
не получается, т.к. по клавише Esc
(возвращения в командный режим) я выхожу из экрана Console
виртуальной машины. В этом случае мне видится следующее костыльное решение (а все благодаря заметке: "Как в Proxmox 6 использовать xterm.js для VM"
root@OpenWrt:/# poweroff
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
и выбираю: >_ Console - xterm.js
вижу лог загрузки в отдельном окне, нажимаю клавишу ENTER
после вижу приветствие
вношу изменения и уже для выхода в командный режим по клавише ESC
отрабатывает:
root@OpenWrt:/# vi /etc/config/network config interface 'loopback' option device 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option ula_prefix 'fd59:9122:5ce1::/48' config device option name 'br-lan' option type 'bridge' list ports 'eth0' config interface 'lan' option device 'br-lan' option proto 'dhcp'
Esc, :wq!
Перезапускаю сетевой интерфейс
root@OpenWrt:/# /etc/init.d/network restart [ 232.962008] br-lan: port 1(eth0) entered disabled state [ 233.017625] device eth0 left promiscuous mode [ 233.019231] br-lan: port 1(eth0) entered disabled state root@OpenWrt:/# [ 234.301098] 8021q: adding VLAN 0 to HW filter on device eth0 [ 234.303065] br-lan: port 1(eth0) entered blocking state [ 234.304659] br-lan: port 1(eth0) entered disabled state [ 234.306449] device eth0 entered promiscuous mode [ 234.317346] br-lan: port 1(eth0) entered blocking state [ 234.319062] br-lan: port 1(eth0) entered forwarding state [ 235.356970] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready root@OpenWrt:/# ip r default via 172.33.33.100 dev br-lan src 172.33.33.139 172.33.33.0/24 dev br-lan scope link src 172.33.33.139 root@OpenWrt:/#
Итого виртуальная машина с OpenWRT
получала от моего DHCP
сервиса IP
адрес, теперь он равен: 172.33.33.139
Шаг №8:
А раз IP
адрес в моей сети, то на него я могу обратиться через Web
–интерфейс тем самым получить доступ к Web
–интерфейс администрирования OpenWRT:
На заметку: По умолчанию в OpenWRT
используется учетная запись root и пароль отсутствует. Для входа просто нажмите Login
без ввода пароля
Username: root
Password: ничего не указываю
и нажимаю Log in
Итого так выглядит 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
(то что выше присвоили):
root@OpenWrt:/# exit Please press Enter to activate this console. нажимаю клавишу "ENTER" BusyBox v1.36.1 (2023-11-14 13:38:11 UTC) built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt 23.05.2, r23630-842932a63d ----------------------------------------------------- root@OpenWrt:/# root@OpenWrt:/# reboot
В Web
-интерфейс нужен пароль, а в Console
загружается без указания, значит его нужно поставить, ставлю:
root@OpenWrt:/# root@OpenWrt:/# passwd Changing password for root New password: задаю пароль, к примеру 712mbddr@ Retype password: подтверждаю пароль, 712mbddr@ passwd: password for root changed by root root@OpenWrt:/# reboot
система перезагрузилась, и опять приглашение root@OpenWrt:/#
, т.е. небыло запроса на авторизацию.
Открываю документацию (https://openwrt.org/
– очень много полезной информации) и натыкаюсь, что "Authentication for OpenWrt TTY and serial console is disabled by default"
(Аутентификация для OpenWrt TTY
и последовательной консоли отключена по умолчанию.). Включаю аутентификацию:
root@OpenWrt:/# reboot root@OpenWrt:/# uci set system.@system[0].ttylogin="1" root@OpenWrt:/# uci commit system root@OpenWrt:/# service system restart
и вот теперь
OpenWrt Login: ввожу root Password: ввожу пароль, в моем случае 712mbddr@
и нажимаю ENTER
тем самым в случае правильно указанных данных попадаю в консоль командной строки, как авторизованный:
OpenWrt login: root Password: BusyBox v1.36.1 (2023-11-14 13:38:11 UTC) built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt 23.05.2, r23630-842932a63d ----------------------------------------------------- root@OpenWrt:~#
Выключаю VM:
root@OpenWrt:~# halt
Делаю снапшот для виртуальной машины VM ID: 700
с именем OpenWRT
дабы после изучения откатываться на первоначальное состояние с целью записи шагов для каждой задачи от и до тем самым составляю себе заметки.
Что мы имеем по итогу, я для себя разобрался как для последующего изучения производится развертывание системы OpenWRT
под виртуализацией в лице связки Debian 10 + Proxmox 6.4-13
. В дальнейшем дабы не загромождать текущую заметку я буду шаг за шагом приобщаться к работе с ней, а сейчас я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.