Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| sysadmin:proxmox:openwrt [14:12:2024 13:27] – создано School Sysadmin | sysadmin:proxmox:openwrt [05:01:2025 22:47] (текущий) – School Sysadmin | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Эмулируем arm64 OpenWRT | + | ====== OpenWRT arm64/ |
| + | ===== Эмулируем arm64/ | ||
| + | ==== OpenWRT x86_64 | ||
| - | [[https://habr.com/ru/articles/826526/ | + | В каталоге с [[https://downloads.openwrt.org/ |
| + | В консоли Proxmox (я использовал Shell в GUI, но нет причин, | ||
| + | < | ||
| + | cd / | ||
| + | |||
| + | wget -c https:// | ||
| + | |||
| + | gunzip openwrt-23.05.5-x86-64-generic-squashfs-combined-efi.img.gz | ||
| + | </ | ||
| + | |||
| + | Выбранный путь хранения образа, | ||
| + | |||
| + | Собственно, | ||
| + | |||
| + | <code bash> | ||
| + | qm create $(pvesh get / | ||
| + | --name " | ||
| + | --description " | ||
| + | --arch x86_64 \ | ||
| + | --tags " | ||
| + | --bios ovmf \ | ||
| + | --efidisk0 file=local-lvm: | ||
| + | --sockets 1 \ | ||
| + | --cores 2 \ | ||
| + | --memory 256 \ | ||
| + | --vga type=serial0 \ | ||
| + | --serial0 socket \ | ||
| + | --boot order=scsi0 \ | ||
| + | --scsihw virtio-scsi-pci \ | ||
| + | --scsi0 file=local-lvm: | ||
| + | --net0 model=virtio, | ||
| + | --net1 model=virtio, | ||
| + | </ | ||
| + | |||
| + | и запускать | ||
| + | |||
| + | < | ||
| + | |||
| + | Если все закончилось хорошо, | ||
| + | |||
| + | < | ||
| + | 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 | ||
| + | | ||
| + | | ||
| + | | ||
| + | === WARNING! ===================================== | ||
| + | There is no root password defined on this device! | ||
| + | Use the " | ||
| + | in order to prevent unauthorized SSH logins. | ||
| + | -------------------------------------------------- | ||
| + | </ | ||
| + | <code bash> | ||
| + | root@OpenWrt:/# | ||
| + | </ | ||
| + | < | ||
| + | NAME=" | ||
| + | VERSION=" | ||
| + | ID=" | ||
| + | ID_LIKE=" | ||
| + | PRETTY_NAME=" | ||
| + | VERSION_ID=" | ||
| + | HOME_URL=" | ||
| + | BUG_URL=" | ||
| + | SUPPORT_URL=" | ||
| + | BUILD_ID=" | ||
| + | OPENWRT_BOARD=" | ||
| + | OPENWRT_ARCH=" | ||
| + | OPENWRT_TAINTS="" | ||
| + | OPENWRT_DEVICE_MANUFACTURER=" | ||
| + | OPENWRT_DEVICE_MANUFACTURER_URL=" | ||
| + | OPENWRT_DEVICE_PRODUCT=" | ||
| + | OPENWRT_DEVICE_REVISION=" | ||
| + | OPENWRT_RELEASE=" | ||
| + | </ | ||
| + | |||
| + | выходим из терминала через **ctrl+o**, подчищаем за собой и переходим к следующему шагу | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== OpenWrt ARM64 ==== | ||
| + | |||
| + | В релиз ноутах к [[https:// | ||
| + | |||
| + | < | ||
| + | |||
| + | В каталоге с [[https:// | ||
| + | |||
| + | В консоли Proxmox скачиваем **squashfs-combined** версию и распаковываем архив: | ||
| + | |||
| + | < | ||
| + | cd / | ||
| + | |||
| + | wget -c https:// | ||
| + | |||
| + | gunzip openwrt-23.05.5-armsr-armv8-generic-squashfs-combined.img.gz | ||
| + | </ | ||
| + | |||
| + | Создаем машину следующей командой: | ||
| + | |||
| + | <code bash> | ||
| + | qm create $(pvesh get / | ||
| + | --name " | ||
| + | --description " | ||
| + | --tags " | ||
| + | --arch aarch64 \ | ||
| + | --bios ovmf \ | ||
| + | --efidisk0 file=local-zfs: | ||
| + | --sockets 1 \ | ||
| + | --cores 2 \ | ||
| + | --memory 256 \ | ||
| + | --vga type=serial0 \ | ||
| + | --serial0 socket \ | ||
| + | --boot order=scsi0 \ | ||
| + | --scsihw | ||
| + | --scsi0 file=local-zfs: | ||
| + | --net0 model=virtio, | ||
| + | --net1 model=virtio, | ||
| + | </ | ||
| + | |||
| + | загружаем | ||
| + | |||
| + | <code bash>qm start <VM ID> ; qm terminal <VM ID></ | ||
| + | |||
| + | И если и в этот раз нас ждал успех, то в терминале увидим | ||
| + | |||
| + | < | ||
| + | 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 | ||
| + | | ||
| + | | ||
| + | | ||
| + | === WARNING! ===================================== | ||
| + | There is no root password defined on this device! | ||
| + | Use the " | ||
| + | in order to prevent unauthorized SSH logins. | ||
| + | -------------------------------------------------- | ||
| + | root@OpenWrt:/ | ||
| + | NAME=" | ||
| + | VERSION=" | ||
| + | ID=" | ||
| + | ID_LIKE=" | ||
| + | PRETTY_NAME=" | ||
| + | VERSION_ID=" | ||
| + | HOME_URL=" | ||
| + | BUG_URL=" | ||
| + | SUPPORT_URL=" | ||
| + | BUILD_ID=" | ||
| + | OPENWRT_BOARD=" | ||
| + | OPENWRT_ARCH=" | ||
| + | OPENWRT_TAINTS="" | ||
| + | OPENWRT_DEVICE_MANUFACTURER=" | ||
| + | OPENWRT_DEVICE_MANUFACTURER_URL=" | ||
| + | OPENWRT_DEVICE_PRODUCT=" | ||
| + | OPENWRT_DEVICE_REVISION=" | ||
| + | OPENWRT_RELEASE=" | ||
| + | </ | ||
| + | |||
| + | выходим из терминала через **ctrl+o**, подчищаем за собой и переходим к добавлению сетевых интерфейсов. | ||
| + | |||
| + | <code bash>qm stop <VM ID> ; qm destroy <VM ID></ | ||
| + | |||
| + | ==== Превращаем виртуалку в маршрутизатор ==== | ||
| + | |||
| + | |||
| + | В данный момент на виртуальном OpenWRT есть всего лишь один сетевой интерфейс, | ||
| + | |||
| + | Через шелл: | ||
| + | |||
| + | <code bash> | ||
| + | cp / | ||
| + | |||
| + | cat << | ||
| + | auto vmbr1 | ||
| + | iface vmbr1 inet static | ||
| + | address 192.168.1.0/ | ||
| + | bridge-ports none | ||
| + | bridge-stp off | ||
| + | bridge-fd 0 | ||
| + | EOF | ||
| + | |||
| + | systemctl start pvenetcommit | ||
| + | |||
| + | systemctl restart networking | ||
| + | </ | ||
| + | |||
| + | или же путь через Proxmox GUI: **Datacenter-> | ||
| + | |||
| + | Если в OpenWRT доступны два сетевых интерфейса, | ||
| + | |||
| + | Учитывая вышеизложенное, | ||
| + | |||
| + | <code bash> | ||
| + | qm create $(pvesh get / | ||
| + | --name " | ||
| + | --description " | ||
| + | --tags " | ||
| + | --arch aarch64 \ | ||
| + | --bios ovmf \ | ||
| + | --efidisk0 file=local-zfs: | ||
| + | --sockets 1 \ | ||
| + | --cores 2 \ | ||
| + | --memory 256 \ | ||
| + | --vga type=serial0 \ | ||
| + | --serial0 socket \ | ||
| + | --boot order=scsi0 \ | ||
| + | --scsihw | ||
| + | --scsi0 file=local-zfs: | ||
| + | --net1 model=virtio, | ||
| + | --net0 model=virtio, | ||
| + | </ | ||
| + | |||
| + | Запускаем: | ||
| + | |||
| + | <code bash>qm start < | ||
| + | |||
| + | проверяем: | ||
| + | |||
| + | < | ||
| + | root@OpenWrt:/ | ||
| + | 1: lo: < | ||
| + | link/ | ||
| + | inet 127.0.0.1/8 scope host lo | ||
| + | | ||
| + | inet6 ::1/128 scope host | ||
| + | | ||
| + | 2: eth0: < | ||
| + | link/ether bc: | ||
| + | 3: eth1: < | ||
| + | link/ether bc: | ||
| + | inet 10.1.2.105/ | ||
| + | | ||
| + | inet6 fe80:: | ||
| + | | ||
| + | 4: br-lan: < | ||
| + | link/ether bc: | ||
| + | inet 192.168.1.1/ | ||
| + | | ||
| + | inet6 fd4f: | ||
| + | | ||
| + | inet6 fe80:: | ||
| + | | ||
| + | < | ||
| + | < | ||
| + | root@OpenWrt:/ | ||
| + | |||
| + | config interface ' | ||
| + | option device ' | ||
| + | option proto ' | ||
| + | option ipaddr ' | ||
| + | option netmask ' | ||
| + | |||
| + | config globals ' | ||
| + | option ula_prefix ' | ||
| + | |||
| + | config device | ||
| + | option name ' | ||
| + | option type ' | ||
| + | list ports ' | ||
| + | |||
| + | config interface ' | ||
| + | option device ' | ||
| + | option proto ' | ||
| + | option ipaddr ' | ||
| + | option netmask ' | ||
| + | option ip6assign ' | ||
| + | |||
| + | config interface ' | ||
| + | option device ' | ||
| + | option proto ' | ||
| + | |||
| + | config interface ' | ||
| + | option device ' | ||
| + | option proto ' | ||
| + | </ | ||
| + | |||
| + | Как можно видеть, | ||
| + | |||
| + | OpenWRT по умолчанию открывает порты для управления только на стороне **lan**, и правильно делает! Но мы же это все затеяли для рисковых опытов, | ||
| + | |||
| + | <code bash> | ||
| + | uci add firewall rule | ||
| + | uci set firewall.@rule[-1].name=' | ||
| + | uci set firewall.@rule[-1].enabled=' | ||
| + | uci set firewall.@rule[-1].src=' | ||
| + | uci set firewall.@rule[-1].proto=' | ||
| + | uci set firewall.@rule[-1].dest_port=' | ||
| + | uci set firewall.@rule[-1].target=' | ||
| + | uci add firewall rule | ||
| + | uci commit firewall | ||
| + | service firewall restart | ||
| + | </ | ||
| + | |||
| + | Проверяем подключение по ssh с хоста в физической сети: | ||
| + | |||
| + | < | ||
| + | $ ssh root@10.1.2.105 | ||
| + | The authenticity of host ' | ||
| + | ED25519 key fingerprint is SHA256: | ||
| + | This key is not known by any other names. | ||
| + | Are you sure you want to continue connecting (yes/ | ||
| + | Warning: Permanently added ' | ||
| + | |||
| + | |||
| + | 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 | ||
| + | | ||
| + | | ||
| + | | ||
| + | === WARNING! ===================================== | ||
| + | There is no root password defined on this device! | ||
| + | Use the " | ||
| + | in order to prevent unauthorized SSH logins. | ||
| + | -------------------------------------------------- | ||
| + | root@OpenWrt: | ||
| + | </ | ||
| + | Работает! Можно уверенно воплощать самые смелые фантазии на вашем роутере. | ||