sysadmin:proxmox:openwrt

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
sysadmin:proxmox:openwrt [14:12:2024 13:41] – [OpenWRT x86_64] School Sysadminsysadmin:proxmox:openwrt [05:01:2025 22:47] (текущий) School Sysadmin
Строка 1: Строка 1:
-====== Эмулируем arm64 OpenWRT роутер в Proxmox VE ======+====== OpenWRT arm64/x86_64 ====== 
 +===== Эмулируем arm64/x86_64 OpenWRT ===== 
 +==== OpenWRT x86_64 ====
  
-===== OpenWRT x86_64 ===== 
  
-В каталоге с релизами, выбираем версию, затем targets -> x86 -> 64. В консоли Proxmox (я использовал Shell в GUI, но нет причин, чтобы не заработало и через ssh) скачиваем squashfs-combined-efi версию и распаковываем архив: +В каталоге с [[https://downloads.openwrt.org/releases/|релизами]], выбираем версию, затем **targets -> x86 -> 64**.\\ 
- +В консоли Proxmox (я использовал Shell в GUI, но нет причин, чтобы не заработало и через ssh) скачиваем **squashfs-combined-efi** версию и распаковываем архив: 
-<code bash>+<code>
 cd /var/lib/vz/template/iso cd /var/lib/vz/template/iso
 +
 wget -c https://downloads.openwrt.org/releases/23.05.5/targets/x86/64/openwrt-23.05.5-x86-64-generic-squashfs-combined-efi.img.gz wget -c https://downloads.openwrt.org/releases/23.05.5/targets/x86/64/openwrt-23.05.5-x86-64-generic-squashfs-combined-efi.img.gz
-gunzip openwrt-23.05.3-x86-64-generic-squashfs-combined-efi.img.gz+ 
 +gunzip openwrt-23.05.5-x86-64-generic-squashfs-combined-efi.img.gz
 </code> </code>
-Disclaimer: выбранный путь хранения образа, возможно, не best practice, но он присутствует на Proxmox ноде по умолчанию. Также у меня storage называется local-zfs, если у вас другой путь, то просто замените local-zfs на свой в параметрах --efidisk0 и --scsi0 в командах ниже.+ 
 +Выбранный путь хранения образа, возможно, не best practice, но он присутствует на Proxmox ноде по умолчанию. Также у меня storage называется **local-lvm**, если у вас другой путь, то просто замените **local-lvm** на свой в параметрах **--efidisk0** и **--scsi0** в командах ниже.
  
 Собственно, уже можно создавать машину Собственно, уже можно создавать машину
-<code bash>qm create $(pvesh get /cluster/nextid) \ + 
---name "openwrt-amd64"+<code bash> 
---description "openwrt-amd64" \+qm create $(pvesh get /cluster/nextid) \ 
 +--name "OpenWRT-amd64"
 +--description "OpenWRT-amd64" \
 --arch x86_64 \ --arch x86_64 \
 +--tags "OpenWRT" \
 +--bios ovmf \
 +--efidisk0 file=local-lvm:4,efitype=4m,pre-enrolled-keys=0 \
 +--sockets 1 \
 +--cores 2 \
 +--memory 256 \
 +--vga type=serial0 \
 +--serial0 socket \
 +--boot order=scsi0 \
 +--scsihw virtio-scsi-pci \
 +--scsi0 file=local-lvm:0,import-from="/var/lib/vz/template/iso/openwrt-23.05.5-x86-64-generic-squashfs-combined-efi.img" \
 +--net0 model=virtio,bridge=vmbr1,firewall=1,link_down=0,mtu=1 \
 +--net1 model=virtio,bridge=vmbr1,tag=2,firewall=1,link_down=0,mtu=1
 +</code>
 +
 +и запускать
 +
 +<code>qm start <VM ID> ; qm terminal <VM ID></code>
 +
 +Если все закончилось хорошо, то в терминале увидим примерно следующее:
 +
 +<code>
 +BusyBox v1.36.1 (2024-09-23 12:34:46 UTC) built-in shell (ash)
 +
 +  _______                     ________        __
 +       |.-----.-----.-----.|  |  |  |.----.|  |_
 +     ||  _  |  -__|     ||  |  |  ||   _||   _|
 + |_______||   __|_____|__|__||________||__|  |____|
 +          |__| W I R E L E S S   F R E E D O M
 + -----------------------------------------------------
 + OpenWrt 23.05.5, r24106-10cc5fcd00
 + -----------------------------------------------------
 +=== WARNING! =====================================
 +There is no root password defined on this device!
 +Use the "passwd" command to set up a new password
 +in order to prevent unauthorized SSH logins.
 +--------------------------------------------------
 +</code> 
 +<code bash>
 +root@OpenWrt:/# cat /etc/os-release
 +</code>
 +<code>
 +NAME="OpenWrt"
 +VERSION="23.05.5"
 +ID="openwrt"
 +ID_LIKE="lede openwrt"
 +PRETTY_NAME="OpenWrt 23.05.5"
 +VERSION_ID="23.05.5"
 +HOME_URL="https://openwrt.org/"
 +BUG_URL="https://bugs.openwrt.org/"
 +SUPPORT_URL="https://forum.openwrt.org/"
 +BUILD_ID="r24106-10cc5fcd00"
 +OPENWRT_BOARD="x86/64"
 +OPENWRT_ARCH="x86_64"
 +OPENWRT_TAINTS=""
 +OPENWRT_DEVICE_MANUFACTURER="OpenWrt"
 +OPENWRT_DEVICE_MANUFACTURER_URL="https://openwrt.org/"
 +OPENWRT_DEVICE_PRODUCT="Generic"
 +OPENWRT_DEVICE_REVISION="v0"
 +OPENWRT_RELEASE="OpenWrt 23.05.5 r24106-10cc5fcd00"
 +</code>
 +
 +выходим из терминала через **ctrl+o**, подчищаем за собой и переходим к следующему шагу
 +
 +<code>qm stop <VM ID> ; qm destroy <VM ID></code>
 +
 +==== OpenWrt ARM64 ====
 +
 +В релиз ноутах к [[https://pve.proxmox.com/wiki/Roadmap#Proxmox_VE_8.1|PVE 8.]]1 упоминается, что для эмуляции (U)EFI биоса в виртуальных машинах на ARM64 нужно установить пакет **pve-edk2-firmware-aarch64**:
 +
 +<code>apt install pve-edk2-firmware-aarch64</code>
 +
 +В каталоге с [[https://downloads.openwrt.org/releases/|релизами]], выбираем версию, затем **targets -> armsr -> armv8**.  
 +
 +В консоли Proxmox скачиваем **squashfs-combined** версию и распаковываем архив:
 +
 +<code>
 +cd /var/lib/vz/template/iso
 +
 +wget -c https://downloads.openwrt.org/releases/23.05.5/targets/armsr/armv8/openwrt-23.05.3-armsr-armv8-generic-squashfs-combined.img.gz
 +
 +gunzip openwrt-23.05.5-armsr-armv8-generic-squashfs-combined.img.gz
 +</code>
 +
 +Создаем машину следующей командой:
 +
 +<code bash>
 +qm create $(pvesh get /cluster/nextid) \
 +--name "openwrt-aarch64" \
 +--description "openwrt-aarch64" \
 --tags "openwrt" \ --tags "openwrt" \
 +--arch aarch64 \
 --bios ovmf \ --bios ovmf \
 --efidisk0 file=local-zfs:4,efitype=4m,pre-enrolled-keys=0 \ --efidisk0 file=local-zfs:4,efitype=4m,pre-enrolled-keys=0 \
Строка 26: Строка 123:
 --serial0 socket \ --serial0 socket \
 --boot order=scsi0 \ --boot order=scsi0 \
---scsihw virtio-scsi-pci \ +--scsihw  virtio-scsi-pci \ 
---scsi0 file=local-zfs:0,import-from="/var/lib/vz/template/iso/openwrt-23.05.5-x86-64-generic-squashfs-combined-efi.img" \+--scsi0 file=local-zfs:0,import-from="/var/lib/vz/template/iso/openwrt-23.05.3-armsr-armv8-generic-squashfs-combined.img" \
 --net0 model=virtio,bridge=vmbr0,firewall=1,link_down=0,mtu=1 \ --net0 model=virtio,bridge=vmbr0,firewall=1,link_down=0,mtu=1 \
---net0 model=virtio,bridge=vmbr1,firewall=1,link_down=0,mtu=1+--net1 model=virtio,bridge=vmbr0,vlan=1,firewall=1,link_down=0,mtu=1
 </code> </code>
  
-и запускать+загружаем
  
 <code bash>qm start <VM ID> ; qm terminal <VM ID></code> <code bash>qm start <VM ID> ; qm terminal <VM ID></code>
  
-Если все закончилось хорошо, то в терминале увидим примерно следующее:+И если и в этот раз нас ждал успех, то в терминале увидим что-то вроде:
  
 <code> <code>
Строка 65: Строка 162:
 SUPPORT_URL="https://forum.openwrt.org/" SUPPORT_URL="https://forum.openwrt.org/"
 BUILD_ID="r23809-234f1a2efa" BUILD_ID="r23809-234f1a2efa"
-OPENWRT_BOARD="x86/64+OPENWRT_BOARD="armsr/armv8
-OPENWRT_ARCH="x86_64"+OPENWRT_ARCH="aarch64_generic"
 OPENWRT_TAINTS="" OPENWRT_TAINTS=""
 OPENWRT_DEVICE_MANUFACTURER="OpenWrt" OPENWRT_DEVICE_MANUFACTURER="OpenWrt"
Строка 75: Строка 172:
 </code> </code>
  
-выходим из терминала через ctrl+o, подчищаем за собой и переходим к следующему шагу+выходим из терминала через **ctrl+o**, подчищаем за собой и переходим к добавлению сетевых интерфейсов. 
 + 
 +<code bash>qm stop <VM ID> ; qm destroy <VM ID></code>
  
-<code bash>qm stop <VM ID> ; qm destroy <VM ID</code>+==== Превращаем виртуалку в маршрутизатор ====
  
-Шаг 3: превращаем виртуалку в маршрутизатор 
  
-В данный момент на виртуальном OpenWRT есть всего лишь один сетевой интерфейс, который автоматически подключается в br-lan и инициализируется через DHCP-сервер на реальном роутере. Чтобы сделать маршрутизатор маршрутизатором, нам нужно добавить как минимум еще один сетевой интерфейс. Для этого в ProxmoxVE создадим Linux Bridge интерфейс vmbr1.  +В данный момент на виртуальном OpenWRT есть всего лишь один сетевой интерфейс, который автоматически подключается в **br-lan** и инициализируется через DHCP-сервер на реальном роутере. Чтобы сделать маршрутизатор маршрутизатором, нам нужно добавить как минимум еще один сетевой интерфейс. Для этого в ProxmoxVE создадим Linux Bridge интерфейс vmbr1.  
  
 Через шелл: Через шелл:
Строка 102: Строка 200:
 </code> </code>
  
-или же путь через Proxmox GUI: **Datacenter->pve->System->Network->Create, Apply Configuration**+или же путь через Proxmox GUI: **Datacenter->pve->System->Network->Create**, Apply Configuration
  
-Если в OpenWRT доступны два сетевых интерфейса, первый (eth0) будет назначен как LAN, а второй (eth1) как WAN. Чтобы смоделировать типичную домашнюю сеть и избежать интерференции между DHCP-серверами, нам нужно, чтобы Proxmox интерфейс vmbr1 стал eth0 в OpenWRT, а Proxmox интерфейс vmbr0 стал eth1.+Если в OpenWRT доступны два сетевых интерфейса, первый (**eth0**) будет назначен как LAN, а второй (**eth1**) как WAN. Чтобы смоделировать типичную домашнюю сеть и избежать интерференции между DHCP-серверами, нам нужно, чтобы Proxmox интерфейс vmbr1 стал eth0 в OpenWRT, а Proxmox интерфейс vmbr0 стал eth1.
  
 Учитывая вышеизложенное, команда для создания машины станет такой: Учитывая вышеизложенное, команда для создания машины станет такой:
Строка 130: Строка 228:
 Запускаем: Запускаем:
  
-<code> +<code bash>qm start <vmid>; qm terminal <vmid></code>
-qm start <vmid>; qm terminal</vmid> +
-</code>+
  
 проверяем: проверяем:
Строка 160: Строка 256:
     inet6 fe80::be24:11ff:fe25:4ff2/64 scope link      inet6 fe80::be24:11ff:fe25:4ff2/64 scope link 
        valid_lft forever preferred_lft forever        valid_lft forever preferred_lft forever
-       </code> +<code> 
-        +<code> 
-       +root@OpenWrt:/$ cat /etc/config/network 
  
-[[https://habr.com/ru/articles/826526/сточник]]+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 'fd4f:be36:41c0::/48' 
 + 
 +config device 
 +        option name 'br-lan' 
 +        option type 'bridge' 
 +        list ports 'eth0' 
 + 
 +config interface 'lan' 
 +        option device 'br-lan' 
 +        option proto 'static' 
 +        option ipaddr '192.168.1.1' 
 +        option netmask '255.255.255.0' 
 +        option ip6assign '60' 
 + 
 +config interface 'wan' 
 +        option device 'eth1' 
 +        option proto 'dhcp' 
 + 
 +config interface 'wan6' 
 +        option device 'eth1' 
 +        option proto 'dhcpv6' 
 +</code> 
 + 
 +Как можно видеть, wan-интерфейс привязан к **eth1**, который получил от реального маршрутизатора адрес **10.1.2.105**. 
 + 
 +OpenWRT по умолчанию открывает порты для управления только на стороне **lan**, и правильно делает! Но мы же это все затеяли для рисковых опытов, поэтому, чтобы упростить дальнейшую настройку, откроем порты 22, 80, и 443 на стороне wan, что ни в коем случае не стоит повторять на реальном железе: 
 + 
 +<code bash> 
 +uci add firewall rule 
 +uci set firewall.@rule[-1].name='Allow-Admin' 
 +uci set firewall.@rule[-1].enabled='true' 
 +uci set firewall.@rule[-1].src='wan' 
 +uci set firewall.@rule[-1].proto='tcp' 
 +uci set firewall.@rule[-1].dest_port='22 80 443' 
 +uci set firewall.@rule[-1].target='ACCEPT' 
 +uci add firewall rule 
 +uci commit firewall   
 +service firewall restart 
 +</code> 
 + 
 +Проверяем подключение по ssh с хоста в физической сети: 
 + 
 +<code> 
 +$ ssh root@10.1.2.105 
 +The authenticity of host '10.1.2.105 (10.1.2.105)' can't be established. 
 +ED25519 key fingerprint is SHA256:VkLVqOud2GArohqiV+cHh1uIWXKVbpBJFHQJjUhrKzg. 
 +This key is not known by any other names. 
 +Are you sure you want to continue connecting (yes/no/[fingerprint])? yes 
 +Warning: Permanently added '10.1.2.105' (ED25519) to the list of known hosts. 
 + 
 + 
 +BusyBox v1.36.1 (2024-03-22 22:09:42 UTC) built-in shell (ash) 
 + 
 +  _______                     ________        __ 
 +       |.-----.-----.-----.|  |  |  |.----.|  |_ 
 +     ||  _  |  -__|     ||  |  |  ||   _||   _| 
 + |_______||   __|_____|__|__||________||__|  |____| 
 +          |__| W I R E L E S S   F R E E D O M 
 + ----------------------------------------------------- 
 + OpenWrt 23.05.3, r23809-234f1a2efa 
 + ----------------------------------------------------- 
 +=== WARNING! ===================================== 
 +There is no root password defined on this device! 
 +Use the "passwd" command to set up a new password 
 +in order to prevent unauthorized SSH logins. 
 +-------------------------------------------------- 
 +root@OpenWrt:~# 
 +</code> 
 +Работает! Можно уверенно воплощать самые смелые фантазии на вашем роутере.
  • Последнее изменение: 14:12:2024 13:41