Навыки routeros-qemu-chr
📦

routeros-qemu-chr

Низкий риск ⚙️ Внешние команды🌐 Доступ к сети📁 Доступ к файловой системе

Run MikroTik RouterOS CHR in QEMU

MikroTik RouterOS CHR предоставляет полнофункциональный виртуальный маршрутизатор для тестирования и разработки, однако настройка требует навигации по параметрам QEMU, драйверам VirtIO и конфигурациям прошивки. Этот навык обеспечивает полное руководство по запуску CHR с ускорением, правильной настройкой VirtIO и интеграцией REST API.

Поддерживает: Claude Codex Code(CC)
⚠️ 63 Плохо
1

Скачать ZIP навыка

2

Загрузить в Claude

Перейдите в Settings → Capabilities → Skills → Upload skill

3

Включите и начните использовать

Протестировать

Использование «routeros-qemu-chr». Boot CHR with KVM acceleration and REST API on port 9180

Ожидаемый результат:

QEMU запускается с аппаратным ускорением. RouterOS загружается примерно за 5 секунд. HTTP 200 ответ от http://127.0.0.1:9180/ подтверждает готовность. REST API доступен по адресу http://127.0.0.1:9180/rest/ с учетными данными admin.

Использование «routeros-qemu-chr». Enable KVM on GitHub Actions Ubuntu runner

Ожидаемый результат:

Правило udev создано по адресу /etc/udev/rules.d/99-kvm4all.rules. Права доступа к устройству KVM обновлены до 0666. QEMU успешно открывает /dev/kvm для аппаратного ускорения. Время загрузки сокращено с ~30с до ~5с.

Использование «routeros-qemu-chr». Configure port forwarding for RouterOS services

Ожидаемый результат:

Сопоставленные порты хоста: 9180→80 (REST API), 9122→22 (SSH), 9728→8728 (API), 9729→8729 (API-SSL), 9291→8291 (WinBox). Сервисы доступны с хоста через локальные порты.

Аудит безопасности

Низкий риск
v2 • 4/16/2026

Documentation and reference skill for running RouterOS CHR in QEMU. Static analysis flagged 343 patterns, but evaluation reveals these are false positives: shell backtick notation in markdown code examples (not execution), sudo in GitHub Actions CI (expected), MD5 references in kernel history docs (not actual usage), and legitimate acceleration detection commands. All network access targets MikroTik infrastructure for downloading CHR images. Risk level set to LOW due to external command patterns in documentation examples, but no actual malicious code present.

5
Просканировано файлов
794
Проанализировано строк
12
находки
2
Всего аудитов

Проблемы высокого риска (4)

Documentation Shell Examples Misidentified as Execution
Static scanner flagged 264 instances of Ruby/shell backtick notation. These are markdown code blocks showing shell command syntax, not actual command execution. Files are documentation with command examples.
sudo Commands in GitHub Actions CI (Expected Behavior)
GitHub Actions workflow uses sudo for package installation (apt-get install). This is standard CI/CD practice, not privilege escalation risk.
nohup for Background QEMU Process (Legitimate Use)
nohup is used to run QEMU in background during CI testing. This is standard practice for running VMs in CI environments.
Base64 HTTP Basic Auth (Standard Practice)
Static scanner flagged btoa('admin:') as weak crypto. This is standard HTTP Basic Auth encoding, not cryptographic weakness.
Проблемы среднего риска (3)
Network Access to External URLs
Skill downloads CHR images from MikroTik infrastructure. URLs point to download.mikrotik.com and cdn.mikrotik.com for official RouterOS images.
Device File Access for Virtualization
/dev/kvm access for KVM acceleration detection. This is standard practice for virtualization tooling.
Temp Directory Access
/tmp used for QEMU vars files, serial sockets, and log files. Standard temp file usage for VM management.
Проблемы низкого риска (2)
Hardcoded IP Addresses (Localhost)
127.0.0.1 used for RouterOS REST API and port forwarding. Standard localhost addressing.
System Information Commands (Acceleration Detection)
uname, sysctl, and stat commands used for platform detection. Standard virtualization tooling practice.

Факторы риска

Оценка качества

45
Архитектура
100
Сопровождаемость
87
Контент
32
Сообщество
40
Безопасность
100
Соответствие спецификации

Что вы можете построить

Автоматизированное тестирование REST API RouterOS в CI

Запустите RouterOS CHR как тестовый фикстура CI для проверки вызовов REST API, генерации RAML схем и тестирования конфигураций /app YAML без ручной настройки маршрутизатора.

Среда разработки и обучения

Загрузите экземпляр CHR с бесплатной лицензией для изучения возможностей RouterOS, тестирования правил файрвола, экспериментов с мостами и изучения сетевых концепций без производственного оборудования.

Тестирование на нескольких архитектурах

Тестируйте конфигурации RouterOS на обеих архитектурах x86_64 и aarch64 с использованием QEMU с соответствующей прошивкой (SeaBIOS для x86, UEFI для ARM) и опциями ускорения.

Попробуйте эти промпты

Базовая настройка CHR
Помогите мне настроить RouterOS CHR в QEMU. Мне нужно скачать последний стабильный образ и загрузить его с ускорением KVM и портом 9180 для REST API.
Интеграция с GitHub Actions CI
Напишите workflow GitHub Actions, который скачивает RouterOS CHR, загружает его с KVM если доступен (fallback на TCG), ждет загрузки, затем запускает тесты REST API.
Конфигурация загрузки ARM64 UEFI
Настройте QEMU для загрузки RouterOS CHR aarch64 на macOS Apple Silicon. Включите настройку UEFI pflash и явную конфигурацию устройства virtio-blk-pci.
Отладка сбоев загрузки
RouterOS CHR не загружается с пустым экраном. Образ диска использует if=virtio на aarch64. Что может быть не так и как это исправить?

Лучшие практики

  • Используйте явное -device virtio-blk-pci вместо сокращения if=virtio на aarch64, чтобы избежать ловушки MMIO, вызывающей тихие сбои загрузки
  • Проверяйте доступность записи в /dev/kvm (не только наличие), перед включением KVM, и всегда корректно возвращайтесь к TCG на случай недоступности KVM
  • Используйте паттерны перенаправления портов вида tcp::9180-:80 вместо жесткого указания IP-адресов localhost, чтобы сделать конфигурацию переносимой и многократно используемой

Избегать

  • Не используйте if=virtio на архитектуре aarch64 - это разрешается в MMIO, который RouterOS не поддерживает, что вызывает тихие сбои загрузки
  • Не пропускайте проверку прав доступа к KVM - /dev/kvm может существовать, но быть недоступным для чтения, и QEMU не выполняет автоматический fallback на TCG при ошибках разрешений
  • Не используйте git pull && git push в параллельных CI сборках - используйте паттерн retry-with-rebase, чтобы избежать отклонений push из-за состояний гонки

Часто задаваемые вопросы

Каков лимит скорости на бесплатной лицензии CHR?
Бесплатная лицензия CHR ограничивает пропускную способность интерфейса до 1 Мбит/с. Вызовы REST API, SSH, WinBox и доступ к WebFig не затрагиваются. Это ограничение применяется только к фактической пересылке данных между интерфейсами.
Почему QEMU Guest Agent не работает с ускорением HVF?
Демон RouterOS QGA запускается только при обнаружении гипервизора KVM через CPUID. При HVF (macOS) или TCG (программная эмуляция) CPUID 0x40000000 возвращает без строки поставщика KVM, поэтому демон никогда не запускается. Используйте Linux с KVM для тестирования QGA.
Как выбрать между SeaBIOS и UEFI для загрузки CHR?
Используйте SeaBIOS для x86_64 (по умолчанию, самая быстрая загрузка). Используйте UEFI для архитектуры ARM aarch64. На x86_64 только SeaBIOS может загрузить проприетарный загрузочный раздел; OVMF не может его прочитать.
Почему мой aarch64 CHR зависает при загрузке с if=virtio?
На виртуальной машине aarch64 virt if=virtio разрешается в транспорт MMIO. RouterOS имеет virtio_pci, но не драйвер virtio_mmio, поэтому ядро зависает без уведомления. Всегда используйте явное -device virtio-blk-pci на aarch64.
Могу ли я запустить несколько экземпляров CHR одновременно?
Да. Используйте уникальные порты хоста для каждого экземпляра (9180, 9181, 9182 для REST API и т.д.). Каждому экземпляру нужен собственный образ диска и отслеживание PID для очистки.
Какой метод ускорения мне следует использовать?
Используйте KVM на Linux, когда архитектуры хоста и гостя совпадают. Используйте HVF на macOS Apple Silicon для гостей aarch64. Используйте TCG как fallback на всех платформах, когда аппаратное ускорение недоступно.

Сведения для разработчиков

Автор

tikoci

Лицензия

MIT

Ссылка

main

Структура файлов