Compétences routeros-qemu-chr
📦

routeros-qemu-chr

Risque faible ⚙️ Commandes externes🌐 Accès réseau📁 Accès au système de fichiers

Exécuter MikroTik RouterOS CHR dans QEMU

MikroTik RouterOS CHR offre un routeur virtuel complet pour les tests et le développement, mais sa configuration nécessite de naviguer parmi les options QEMU, les pilotes VirtIO et les configurations de firmware. Ce skill fournit des instructions complètes pour exécuter CHR avec l'accélération matérielle, la configuration appropriée de VirtIO et l'intégration de l'API REST.

Prend en charge: Claude Codex Code(CC)
⚠️ 63 Médiocre
1

Télécharger le ZIP du skill

2

Importer dans Claude

Allez dans Paramètres → Capacités → Skills → Importer un skill

3

Activez et commencez à utiliser

Tester

Utilisation de "routeros-qemu-chr". Démarrer CHR avec l'accélération KVM et l'API REST sur le port 9180

Résultat attendu:

QEMU se lance avec l'accélération matérielle. RouterOS démarre en ~5 secondes. Une réponse HTTP 200 de http://127.0.0.1:9180/ confirme la disponibilité. L'API REST est accessible à http://127.0.0.1:9180/rest/ avec les identifiants admin.

Utilisation de "routeros-qemu-chr". Activer KVM sur le runner Ubuntu GitHub Actions

Résultat attendu:

Règle udev créée dans /etc/udev/rules.d/99-kvm4all.rules. Permissions du périphérique KVM mises à jour à 0666. QEMU ouvre avec succès /dev/kvm pour l'accélération matérielle. Le temps de démarrage est réduit de ~30s à ~5s.

Utilisation de "routeros-qemu-chr". Configurer la redirection de ports pour les services RouterOS

Résultat attendu:

Ports hôte mappés : 9180→80 (API REST), 9122→22 (SSH), 9728→8728 (API), 9729→8729 (API-SSL), 9291→8291 (WinBox). Services accessibles depuis l'hôte via les ports localhost.

Audit de sécurité

Risque faible
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
Fichiers analysés
794
Lignes analysées
12
résultats
2
Total des audits

Problèmes à risque élevé (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.
Problèmes à risque moyen (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.
Problèmes à risque faible (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.

Score de qualité

45
Architecture
100
Maintenabilité
87
Contenu
32
Communauté
40
Sécurité
100
Conformité aux spécifications

Ce que vous pouvez construire

Tests automatisés de l'API REST RouterOS en CI

Exécutez RouterOS CHR comme environnement de test CI pour valider les appels à l'API REST, générer des schémas RAML et tester les configurations /app YAML sans configuration manuelle du routeur.

Environnement de développement et d'apprentissage

Démarrez une instance CHR avec une licence gratuite pour explorer les fonctionnalités de RouterOS, tester les règles de pare-feu, expérimenter le bridging et apprendre les concepts réseau sans matériel de production.

Tests multi-architecture

Testez les configurations RouterOS sur les architectures x86_64 et aarch64 en utilisant QEMU avec les firmwares appropriés (SeaBIOS pour x86, UEFI pour ARM) et les options d'accélération.

Essayez ces prompts

Configuration CHR de base
Aidez-moi à configurer RouterOS CHR dans QEMU. Je dois télécharger la dernière image stable et la démarrer avec l'accélération KVM et le port 9180 pour l'API REST.
Intégration CI GitHub Actions
Écrivez un workflow GitHub Actions qui télécharge RouterOS CHR, le démarre avec KVM si disponible (repli sur TCG), attend le démarrage, puis exécute les tests de l'API REST.
Configuration de démarrage UEFI ARM64
Configurez QEMU pour démarrer RouterOS CHR aarch64 sur macOS Apple Silicon. Incluez la configuration UEFI pflash et la configuration explicite du périphérique virtio-blk-pci.
Débogage des échecs de démarrage
RouterOS CHR ne parvient pas à démarrer avec un écran noir. L'image disque utilise if=virtio sur aarch64. Quel pourrait être le problème et comment le résoudre ?

Bonnes pratiques

  • Utilisez -device virtio-blk-pci explicite au lieu de la forme abrégée if=virtio sur aarch64 pour éviter le piège MMIO qui provoque des échecs de démarrage silencieux
  • Vérifiez les permissions en écriture de /dev/kvm (et pas seulement son existence) avant d'activer KVM, et effectuez toujours un repli gracieux vers TCG si KVM n'est pas disponible
  • Utilisez des modèles de redirection de ports comme tcp::9180-:80 au lieu de coder en dur les adresses IP localhost pour rendre la configuration portable et réutilisable

Éviter

  • N'utilisez pas if=virtio sur l'architecture aarch64 - cela se résout en MMIO que RouterOS ne prend pas en charge, provoquant des échecs de démarrage silencieux
  • Ne skippez pas la vérification des permissions KVM - /dev/kvm peut exister mais être illisible, et QEMU ne revient pas silencieusement à TCG en cas d'erreur de permission
  • N'utilisez pas git pull && git push dans les builds CI concurrents - utilisez le modèle retry-with-rebase pour éviter les rejets de push dus aux conditions de concurrence

Foire aux questions

Quelle est la limite de vitesse sur la licence CHR gratuite ?
La licence CHR gratuite limite le débit des interfaces à 1 Mbps. Les appels à l'API REST, SSH, WinBox et l'accès WebFig ne sont pas affectés. Cette limite s'applique uniquement au transfert effectif de données entre les interfaces.
Pourquoi QEMU Guest Agent ne fonctionne-t-il pas avec l'accélération HVF ?
Le daemon QGA RouterOS ne démarre que lorsqu'il détecte un hyperviseur KVM via CPUID. Sous HVF (macOS) ou TCG (émulation logicielle), CPUID 0x40000000 ne retourne aucune chaîne de fournisseur KVM, donc le daemon ne démarre jamais. Utilisez Linux avec KVM pour les tests QGA.
Comment choisir entre SeaBIOS et UEFI pour le démarrage CHR ?
Utilisez SeaBIOS pour x86_64 (par défaut, démarrage le plus rapide). Utilisez UEFI pour l'architecture aarch64 ARM. Sur x86_64, seul SeaBIOS peut démarrer la partition de démarrage propriétaire ; OVMF ne peut pas la lire.
Pourquoi mon CHR aarch64 reste-t-il bloqué au démarrage avec if=virtio ?
Sur la machine virtuelle aarch64, if=virtio se résout en transport MMIO. RouterOS dispose du pilote virtio_pci mais pas de virtio_mmio, donc le noyau se bloque silencieusement. Utilisez toujours -device virtio-blk-pci explicite sur aarch64.
Puis-je exécuter plusieurs instances CHR simultanément ?
Oui. Utilisez des ports hôte uniques pour chaque instance (9180, 9181, 9182 pour l'API REST, etc.). Chaque instance nécessite sa propre image disque et un suivi PID pour le nettoyage.
Quelle méthode d'accélération dois-je utiliser ?
Utilisez KVM sur Linux lorsque les architectures hôte/invité correspondent. Utilisez HVF sur macOS Apple Silicon pour les invités aarch64. Utilisez TCG comme solution de repli sur toutes les plateformes lorsque l'accélération matérielle n'est pas disponible.

Détails du développeur

Structure de fichiers