Routeur OS dans une VM Proxmox

Avec Proxmox, il est possible de reproduire virtuellement une infrastructure comprenant un routeur directement connecté à Internet en arrière duquel se trouve un réseau local/privé avec de multiples VMs.

Personnellement, j’ai retenu « Router OS » de Mikrotik qui fonctionne sur plateforme x86 et qui offre les mêmes fonctionnalités que celles proposées dans leurs RouterBoard (routeurs « hardwares ») : il s’agit de routeurs performants et très abordables qui sont bourrés d’une multitudes de fonctionnalités. (Un gros merci en passant à MDB qui m’a fait découvrir il y a peu ces routeurs !)

Voici les étapes à suivre :

  • Étape 1. Créer un bridge
  • Étape 2. Créer une VM pour le routeur Mikrotik
  • Étape 3. Ajouter une seconde interface réseau
  • Étape 4. Installer Router Os
  • Étape 5. Pré-configurer le routeur via ssh
  • Étape 6. Activer la licence de Router OS
  • Étape 7. Configurer le LAN via l’interface Web du Routeur

Étape 1. Créer un bridge

Il faut créer un bridge qui correspondra virtuellement à une switch locale/privée qui permettra l’interconnexion des différentes VMs placées derrière le routeur Mikrotik.

  1. Se connecter à l’interface graphique de Proxmox
  2. Dans la partie gauche, choisir « Centre de données » puir choisir votre serveur Proxmox.
  3. Dans la partie droite, cliquer sur l’onglet « Réseau »
  4. En haut à gauche de la partie droite, cliquer sur le bouton « Créer » puis choisir « Bridge »
  5. Changer le nom du bridge pour vmbr9999 (le nom bridge doit nécessairement commencer par « vmbr » et être suivi d’un nombre entre 0 et 9999)
  6. S’assurer que « Autostart » est bien coché
  7. Laisser vide tous les autres champs : Adresse IP, Subnet mask, Gateway et Bridge ports.
  8. Cliquer sur le bouton « Créer »

Pour que le bridge soit effectivement créé, il faut obligatoirement redémarrer le serveur Proxmox. Il suffit de cliquer en haut à droite de la fenêtre sur « Redémarrer ».

Après le redémarrage du serveur, vérifier dans l’onglet « Réseau » que le bridge vmbr9999 qu’on vient de créer a bien « Yes » dans la colonne « Actif » et « Autostart ».

Étape 2. Créer une VM pour le routeur Mikrotik

La version de Proxmox 2.1-14/f32f3f46 est buggée : impossible avec l’interface en français de créer un disque dur d’une taille inférieure à 1 GB … je suggère donc d’utiliser la version anglaise de l’interface graphique de Proxmox (le choix de la langue se fait sur l’écran de login uniquement)

Tout en haut à droite de l’interface graphique de Proxmox, cliquer sur le bouton « Créer VM » (d’après quelques recherches très rapide, il n’est pas possible de mettre Router OS dans un CT – « Conteneur OpenVZ ».)

Paramètres de l’onglet « Général » :

  • VM ID: 999 (ou un autre nombre de votre choix)
  • Nom: Mikrotik (ou un autre nom de votre choix)
  • Pool de ressource: non requis

Paramètres de l’onglet « OS » :

  • Choisir « Linux 3.X/2.6 Kernel (l26) » en-dessous de « Linux/Other »

Paramètres de l’onglet « CD/DVD » :

  • Stockage: choisir « local » (sauf si vous avez mis le fichier ISO de Router OS à un autre emplacement)
  • ISO Image: choisir « mikrotik-5.20.iso » (ou l’ISO de la version actuelle/stable de Router OS

Paramètres de l’onglet « Disque Dur » :

  • Bus/Device: IDE / 0
  • Stockage: local
  • Taille du disque (GB): 0,256
  • Format: Raw disk image (raw)
  • Cache: Default (no cache)
  • Read limit (MB/s): unlimited
  • Write limit (MB/s): unlimited
  • Read limit (ops/s): unlimited
  • Write limit (ops/s): unlimited

Note: avec l’interface en Français de Proxmox, Proxmox semble vouloir une virgule comme séparateur pour spécifier une taille de disque dur inférieure à 1 GB (ex : 0,256 pour un disque d’environ 256 Mo …) mais à l’étape de confirmation de la création de la VM, il refuse cette valeur … avec la version en anglais de l’interface, il est possible de saisir 0.256 (avec un point comme séparateur) et il accepte alors de créer la VM suite à la confirmation de la dernière étape.

Paramètres de l’onglet « CPU » :

  • Sockets: 1 (nombre de CPU « physique » de votre serveur)
  • Cores: 4 (nombre de coeurs de votre serveur à allouer)
  • CPU Type: mettre Default (qemu64)
  • Total cores: 128

Paramètres de l’onglet « Memory » :

  • Memory (MB): 128

Selon le traffic/nombre de connexions attendu sur ce serveur, on peut mettre de 32 (peu de traffic) à 256 MB (voir plus !)

Paramètres de l’onglet « Réseau » :

  • Sélectionner « Bridged Mode »
  • Bridge: choisir « vmbr0 »
  • VLAN Tag: (no vlan)
  • Model: Realtec RTL8139
  • Mac Address (important !!) : inscrire la mac adresse virtuelle fournie par votre hébergeur (ex: OVH le propose avec ses IP failovers incluses avec chacun de ses serveurs dédiés)
  • Rate limit (MB/s): unlimited
Voici le contenu du fichier de configuration de la VM /etc/pve/nodes/nsXXXXXX/qemu-server/999.conf :
boot: c
bootdisk: ide0
cores: 4
ide0: local:999/vm-999-disk-1.raw
memory: 128
name: Mikrotik
net0: rtl8139=02:00:00:F4:XX:7C,bridge=vmbr0
net1: rtl8139=2E:4B:3F:A5:XX:F1,bridge=vmbr9999
ostype: l26
sockets: 1

 Étape 3. Ajouter une seconde interface réseau

Il n’est pas possible d’ajouter une seconde carte réseau lors de la création de la VM, il faut donc l’ajouter une fois la VM créée.

  1. Aller dans l’onglet « Matériel » de la VM
  2. Cliquer sur le bouton « Ajouter »
  3. Choisir « Network Device »
  4. Choisir « Bridged Mode »
    1. Bridge: vmbr9999 (choisir le bridge créé à l’étape 1.)
    2. VLAN Tag: laisser vide (no vlan)
  5. Model: Realtek RTL8139
  6. Mac Address: laisser vide
  7. Rate Limits (MB/s): laisser vide (unlimited)

Étape 4. Installer Router Os

  1. Démarrer la VM
  2. Cliquer sur le lien « Console » en haut à droite de l’interface de Proxmox (requiert un plugin Java installé dans votre navigateur)
  3. La VM démarre sur l’image ISO et affiche une liste des modules à installer.
  4. Voici les modules que je suggère d’installer :
    • System
    • PPP
    • DHCP
    • Advanced Tools
    • IPv6
    • NTP
    • Routing
    • Security
  5. Une fois les modules sélectionnés, presser la touche « i » pour débuter l’installation.
  6. À la question « Do you want to keep old configuration? » (Souhaitez-vous conserver l’ancienne configuration?), répondre « n » pour « Non ».
  7. À la question « Continue? » (Continuer ?), confirmer que vous accepter de supprimer toutes les données du disque dur en répondant « y » pour « Oui ».
  8. Lorsqu’il est inscrit « Press ENTER to reboot » … alors presser ENTRÉE pour redémarrer 🙂
  9. Je suggère une fois la VM rebootée de la stopper ou de l’arrêter afin de pouvoir supprimer le lecteur CD-Rom qui ne servira plus à rien : aller dans l’onglet « Matériel » de la VM et supprimer le lecteur CD-Rom. Dans l’onglet « Options » de la VM, changer le « Boot order » pour avoir le « Disque ‘ide0′ » comme premier choix et « none » pour le second et le troisième choix.
Important : Il faudra configurer la connexion à Internet et activer la licence (même la licence gratuite) d’ici les prochaines 24h ou recommencer cette installation.

Étape 5. Pré-configurer le routeur via ssh

  • Démarrer la VM du routeur Mikrotik
  • Ouvrir la console de cette VM.
  • Se logguer avec l’utilisateur « admin » (aucun mot de passe par défaut).
  • Un message vous informe qu’il faudra connecter le routeur à Internet et activer la licence d’ici les prochaines 24h: « You have 23h44 to configure the router to be remotely accessible, and to enter the key by pasting it in a Telnet window or in Winbox. See www.mikrotik.com/key for more details. Current installation « software ID » : ABCD-EFGH. Please presse « Enter » to continue!
  • Avant de rendre votre routeur accessible d’Internet, il faut définir un mot de passe pour le compte admin avec la commande suivante :
[admin@MikroTik] > /password new-password=myAdminPassw0rd confirm-new-password=myAdminPassw0rd
old-password:

(étant donné qu’il n’y a actuellement aucun mot de passe pour le compte admin, il suffit de presser « Enter » quand on nous demande le « old-password ».)

  • Voici la commande pour définir l’adresse IP publique de la première carte réseau (WAN / vmbr0) :
/ip address add address=votre.ip.fail.over/32 disabled=no interface=ether1 network=votre.ip.fail.over

À contre-valider: chez OVH, pour être conforme avec la configuration d’OVH, il faut mettre comme adresse de network l’adresse IP de la gateway (IP.DU.HOST.254)

  • Il faut à présent créer la route par défaut (vers Internet) :
/ip route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=ether1 scope=30 target-scope=10 vrf-interface=ether1

À contre-valider: chez OVH, pour être conforme avec la configuration d’OVH, il faut mettre comme gateway l’adresse IP de la gateway (IP.DU.HOST.254)

  • On peut à présent tester que la connexion avec Internet fonctionne :
/ping 8.8.8.8
  • On peut également configurer l’adresse IP de la seconde carte réseau qui permettra la connexion au réseau privé/local (LAN):
[admin@MikroTik] > /ip address add address=192.168.0.1/24 network=192.168.0.0 interface=ether2 netmask=255.255.255.0

 

Étape 6. Activer la licence de Router OS

  • Se connecter en ssh au routeur Mikrotik à partir d’un client dans lequel on est capable de copier-coller du contenu (la console Java de Proxmox ne le permet pas)
  • Exécuter la commande suivante pour afficher le « software ID » requis pour obtenir la licence de Router OS
[admin@MikroTik] > /system license print 
  software-id: XXXX-XXXX
   expires-in: 23h8m23s
  • Se rendre sur le site de Mikrotik et créer un compte à partir de la page suivante : https://www.mikrotik.com/client/
  • Connectez-vous sur le site de Mikrotik avec votre compte
  • Dans la section « Generate a NEW software KEY », cliquer sur le lien « make a demo key » (pour obtenir une licence gratuite). Je vous invite cependant à consulter le tableau comparatif des différents niveaux de licences proposés par Mikrotik afin de déterminer le niveau de licence qui répondra le mieux à vos besoins.
  • Recopier le « software ID » obtenu précédement et choisissez « x86 system » dans « device type » et cliquer sur « suivant »
  • Copier dans le presse-papier TOUT le contenu de la license qui ressemble à ceci :
-----BEGIN MIKROTIK SOFTWARE KEY------------
ZXwXXXXX3LYpPwdjh/ezAGIu2de/ibCvLhkm73xRqR 
PcJsElolfvPrLV515WJrJnOGirASoBySkvhHnMj7GA== 
-----END MIKROTIK SOFTWARE KEY--------------
  •  Coller la license dans le terminal de votre connexion SSH. Voilà ce que ça donne concrêtement :
[admin@MikroTik] > -----BEGIN MIKROTIK SOFTWARE KEY------------
line 1 of 2> -----BEGIN MIKROTIK SOFTWARE KEY------------ZXwXXXXX3LYpPwdjh/ezAGIu2de/ibCvLhkm73xRqR 
line 1 of 3> -----BEGIN MIKROTIK SOFTWARE KEY------------ZXwXXXXX3LYpPwdjh/ezAGIu2de/ibCvLhkm73xRqR PcJsElolfvPrLV515WJrJnOGirASoBySkvhHnMj7GA== 
line 1 of 4> -----BEGIN MIKROTIK SOFTWARE KEY------------ZXwXXXXX3LYpPwdjh/ezAGIu2de/ibCvLhkm73xRqR PcJsElolfvPrLV515WJrJnOGirASoBySkvhHnMj7GA== -----END MIKROTIK SOFTWARE KEY--------------
You must reboot before new key takes effect. Reboot? [y/N]:
  • Presser « y » pour confirmer le reboot du routeur
  • Pour vérifier que la license a bien été prise en compte, se reconnecter en ssh et exécuter la commande suivante :
[admin@MikroTik] > /system license print 
  software-id: XXXX-XXXX
       nlevel: 1
     features:

Étape 7. Configurer les autres VM pour se connecter en LAN

  • Lors de la configuration des VMs que vous souhaitez mettre en arrière du routeur Mikrotik, il suffira de choisir lors de l’ajout de la carte réseau le bridge « vmbr9999 ».
  • Pour la configuration réseau des VMs connectées au bridge « vmbr9999 », il suffira de configurer le réseau avec les paramètres suivants :
    • Adresse IP: 192.168.0.xyz
    • Masque de sous-réseau: 255.255.255.0
    • Passerelle: 192.168.0.1 (l’adresse IP définit plus haut pour l’interface ether2)
  • Il faudra ensuite configurer le NAT dans le routeur pour permettre aux VMs d’avoir accès à Internet et/ou pour permettre l’accès à une VM de l’extérieur (eg: redirection de ports du routeur vers une VM spécifique.