Proxmox / OpenVZ : réseau public + privé
Published on 2013/01/22
Configuration initiale
Il vous faut tout d'abord choisir une plage d'IP non routées sur Internet type 192.168.x.x. Partons avec 192.168.0.0/24 (soit 192.168.0.1 à 192.168.0.255). Configurez votre VM en mode "réseau virtuel" VENET avec l'IP de votre choix définie dans la range définie précédemment, prenons 192.168.0.11. Démarrez votre VM : vous devriez pouvoir y accéder depuis votre host (ping, connexion SSH si serveur installé). Il vous reste deux dernières commandes à lancer pour permettre à vos VM de communiquer avec l'extérieur :
echo 1 > /proc/sys/net/ipv4/ip_forward # On autorise le host à transmettre des données extérieures aux VM internes
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o vmbr0 -j MASQUERADE # On active le NAT, en sortie via l'interface vmbr0 (à modifier si besoin)
Redirection de ports
Il vous reste à mettre en place les redirections de ports souhaitées. Par exemple, si nous souhaitons que le port 8080 de notre host redirige vers le port 80 de notre VM 192.168.0.11 :
iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.11:80
Si vous avez un serveur qui écoute sur le port 80 de votre VM, essayer maintenant d'accéder à votre host sur le port 8080.
Reverse Proxy
Malheureusement, la redirection de ports sera très vite limitante si vous souhaitez par exemple avoir plusieurs VMs hébergeant un serveur web. Dans ce cas de figure, une solution existe : l'utilisation d'un reverse proxy (type Apache). Son fonctionnement est simple : il est positionné en frontal HTTP et/ou HTTPS sur votre host, et redirige les requêtes vers les différentes VM (sur leurs IP locales) en fonction du nom de domaine. Pour mettre en place un reverse proxy de ce type, rien de plus simple également ; nous allons utiliser le serveur HTTP Apache. Première étape, l'activation du mod_proxy :
sudo a2enmod proxy
Créez maintenant un fichier /etc/apache2/sites-available/monsite :
<IfModule mod_ssl.c>
<VirtualHost *:80>
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
<Proxy https://192.168.0.11/>
Order Deny,Allow
Allow from all
</Proxy>
ServerName mon.domaine.fr
ProxyRequests Off
ProxyPass / https://192.168.0.11/
ProxyPassReverse / https://192.168.0.11/
</VirtualHost>
</IfModule>
Enregistre le fichier puis activez le site nouvellement créé et redémarrez Apache :
sudo a2ensite monsite
sudo service apache2 restart
Il ne vous reste plus qu'à tester dans votre navigateur que le domaine défini dans votre fichier de configuration Apache redirige bien vers le serveur web de votre VM.
I'm Michael BOUVY, CTO and co-founder of Click&Mortar, a digital agency based in Paris, France, specialized in e-commerce.
Over the last years, I've worked as an Engineering Manager and CTO for brands like Zadig&Voltaire and Maisons du Monde.
With more than 10 years experience in e-commerce platforms, I'm always looking for new challenges, feel free to get in touch!