Cloud Proxmox derrière une seule IP

Déployer des VM dans un réseau Naté

Mind And Go, Florent THOMAS

Proxmox ou la virtualisation simple d'accès

Proxmox est une solution libre de virtualisation "bare metal" que j'affectionne particulièrement. Plusieurs raisons à cela, la première est sa simplicité de mise en oeuvre, puis d'autres raisons plus liées au modèle économique de Mind And Go et au comparatif avec ses concurrents :
  • Interface d'administration full web (pas besoin de VM supplémentaires pour monitorer, sauvegarder, etc...)
  • Web service REST disponibles pour une intégration avec vos applications
  • Une version mobile pour l'administration
  • Support de Qemu, et des conteneurs OpenVZ ou LXC son remplaçant dans la v4
  • Le support de nombreux systèmes de fichiers distribués pour s'affranchir d'investissement en SAN couteux, ZFS, NFS, Gluster, RDB, DRDB (dans la v4)
  • La possibilité de faire de la haute disponibilité sans coût de licence supplémentaire
  • Et j'en passe...

Ci contre vous pourrez observer que notre parc de VM est plus que convenable, avec pourtant une faible consommation des ressources.

Odoo text and image block

Kimsufi, la solution pour un cloud peu onéreux

Ou comment utiliser une seule IP pour tout son parc

La solution Kimsufi est une solution de serveurs à moindres coûts portée par OVH. Avec des moyens ridicules vous pouvez obtenir des serveurs pour 5 à 10 fois moins chers que chez les hébergeurs classiques, OVH compris. La contrepartie de ce service est la non assistance technique sur la mise en place de votre infrastructure (Sur le matériel en revanche pas de soucis).

Autant le dire tout de suite, pour faire du serveur dédié tout le monde devrait s'en sortir mais dès que l'on souhaite faire du cloud avec de la virtualisation et autres architectures un peu complexes alors il faut savoir une chose toute simple : Impossible d'associer plusieurs IP (Dites failover) à votre serveur Kimsufi, c'est contractuel ! Les habitués d'autres solutions pour lesquelles il est facile d'acheter des IP en pagaille seront désarçonnés. Pour ma part, je trouve cette limitation plus que judicieuse car elle permet de sécuriser votre réseau. Je parlerai de cela ultérieurement.

Notre problème désormais est donc le suivant, comment faire pour poser plein de VM, et les atteindre bien sûr, derrière un seule IP? A cette question, figurez vous que tous vos FAI le permettent dans votre BOX préférée en routant le traffic externe sur l'IP de votre LAN qualifiée de DMZ. Donc rien d'insurmontable pour un Proxmox qui tourne sur Debian, si c'est du routage on va pouvoir s'en sortir, et il nous suffira de mettre en place du NAT.

La stratégie est donc la suivante, Nater tout le trafic réseau (ou presque) sur l'IP publique vers une VM intern dédiée à cela. Pour le choix de cette VM nous choisirons une autre de nos solutions favorites de routage : pfSense. Allons y, nous avons tous les éléments.

Odoo image and text block

Etape 1 - Installation de proxmox et configuration réseau

Dans votre manager Kimsufi, procédez à l'installation de votre proxmox, connectez vous en ssh, effectuez les mise à jour réglementaires (apt-get && apt-upgrade) puis redémarrez votre hyperviseur.

Ensuite connectez vous à son url https://1.2.3.4:8006 (1.2.3.4 est votre IP pulique fournie par Kimsufi). Rendez vous dans le menu du réseau en cliquant sur le noeud puis sur l'onglet qui va bien. Sur la carte réseau vmbr1 (bridge) mettez en place une configuration comme celle présentée ci dessus.

Il vous sera demandé de redémarrer votre serveur.

Etape 2 - Installation de pfSense sur le proxmox

Pour installer pfSense sur un Proxmox, commençons par nous connecter en ssh sur notre Proxmox, puis rendez vous dans le dossier de stockage des iso, téléchargez la dernière version de pfSense puis dézippez là :

# cd /vz/template/iso
# wget http://url.de.votre.version
(à trouver là)
# gzip -d pfSense-LiveCD-x.x.x-RELEASE-amd64.iso.gz

Voilà votre iso est disponible pour la création de VM sous Proxmox. La solution tournant sur une base BSD et non pas linux, quelques précautions sont à prendre en compte sur le site officiel de Proxmox lors de la création de la VM.

Enfin, il nous reste l'installation de pfSense qui est une opération toute simple, j'y reviendrai ultérieurement mais vous pouvez déjà vous fier à cela.

Pensez à activer la VM au démarrage du Proxmox.

Odoo text and image block
Odoo image and text block

Etape 3 - configuration du réseau de la VM

Lors de l'installation de votre pfSense l'installation de base a certainement considéré que votre pate WAN était configuré en trouvant un DHCP sur votre réseau, du coup, vous ne devez pas avoir d'adresse IP sur votre pate WAN.
Pour remédier à cela, connectez vous à la console de la VM dans proxmox et lancez la commande 2 pour configurer l'adresse Ip de votre WAN. Choisissez une IP dans la même plage que celle mise sur la carte vmbr1 de votre Proxmox.
Un fois cette procédure terminée, un reboot de la VM par plus de sécurité mais dans tous les cas vous devriez pouvoir, depuis le pfSense, pinger l'IP de la passerelle de votre WAN (adresse IP du vmbr1). Si vous arrivez là, alors vous serez bons.
Pour ceux qui voudraient tester le ping dans l'autre sens depuis le Proxmox vers le pfSense, vous n'y parviendrez pas si vous ne désactivez pas le firewall sur le pfSense. Par défaut, pfSense bloque les ping sur la pate WAN, plutôt rassurant.

Dernière étape, le Natage de votre IP publique

Voilà nous touchons au plus important, les précédentes étapes étant plutôt classiques. Pour cette dernère étape nous allons utiliser un peu de ligne de commande pour créer deux fichiers de conf qui seront exécutés au démarrage du réseau :

# cd /vz/root
# touch kvm-networking-down.sh kvm-networking.sh
# chmod +x kvm-networking*

Ensuite, référencez ces quelques lignes dans votre fichier de gestion du réseau Proxmox comme écrit ci contre. Occupons nous maintenant de remplir ces fichiers de conf. Commençons par le premier kvm-networking.sh :

# Enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
#Allow the trafic on vmbr1 to be redirected / coming from vmbr0
iptables -t nat -A POSTROUTING -s '10.0.10.0/24' -o vmbr0 -j MASQUERADE
#Activation of services to be nated
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.10.250:80
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to 10.0.10.250:443

#Put here after the other rules for opening other port/services

Dans cette séquence toute simple nous avons activé l'IP forwarding et ouvert les ports 80 et 443 (http et https) de sorte que tout le traffic soit redirigé vers le pfSense.

Pour le second fichier, nous fermerons chacun des services ouverts. Contenu du fichier kvm-networking-down.sh :

#Close the trafic on vmbr1 to/from vmbr0
iptables -t nat -D POSTROUTING -s '10.0.10.0/24' -o vmbr0 -j MASQUERADE
#De-Activation of nated services
iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.10.250:80
iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to 10.0.10.250:443

Voilà, il vous suffit désormais de redémarrer votre Proxmox et nous serons bons.

Odoo text and image block

Synthèse et remerciements

Désormais votre pfSense devrait répondre sur l'URL http://1.2.3.4 pour finaliser l'installation. Je vous conseille vivement de passer ensuite en https sur un autre port que le port standard car nous aurons besoin de nater de nouveau le http et https vers d'autres VM's. Ce genre de configuration fera l'objet d'un autre billet.

Voilà, en tout et pour tout j'aurais mis plus de temps à écrire ce billet qu'à réaliser les opérations décrites. j'aurais également passé un peu de temps à m'assurer que Kimsufi disait vraiment non aux multiples failover IP (à priori cela devait être possible dans le passé). J'aurais également écumé de nombreuses ressources sur le net.

J'en profite donc pour citer quelques précieuses références :

Les commentaires ne sont pas encore ouverts sur ce site mais vous pouvez nous contacter pour en savoir plus sur nos compétences.