Utiliser le RPN sous Proxmox dans vos VMs

Critères requis :
  • Vous avez un compte sur console.online.net
  • Vous avez un serveur dédié Dedibox
  • Vous avez installé le serveur sous Proxmox VE depuis la console de gestion

Comme vu sur la documentation du RPN, vous ne pouvez avoir qu'une seule IP privée par serveur.

Cela peut donc poser des problèmes pour faire communiquer vos VMs entres elles.

La solution est donc de faire du NAT avec du port Forwarding.

Pour se faire, il vous faudra, dans un premier temps :

- Mettre l'interface RPN (généralement eth1) en configuration DHCP
- Ajouter les routes nécessaires sur la VM
- Procéder au NAT & au Port Forwarding directement depuis l'hôte

Mettre en place le DHCP

Pour mettre en place le DHCP sur l'interface eth1, il vous faudra modifier votre fichier “/etc/network/interfaces”.

Supprimez les lignes faisant référence à “eth1” et ajoutez les suivantes :

auto eth1
iface eth1 inet dhcp

Vous pouvez par la suite redémarrer le serveur ou juste l'interface :

ifdown eth1 && ifup eth1

Vous devriez alors voir quelque chose comme cela :

Internet Systems Consortium DHCP Client 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth1/f8:bc:12:48:e7:ec
Sending on   LPF/eth1/f8:bc:12:48:e7:ec
Sending on   Socket/fallback
Internet Systems Consortium DHCP Client 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth1/f8:bc:12:48:e7:ec
Sending on   LPF/eth1/f8:bc:12:48:e7:ec
Sending on   Socket/fallback
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 5
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 10
DHCPREQUEST on eth1 to 255.255.255.255 port 67
DHCPOFFER from 10.90.208.xx
DHCPACK from 10.90.208.xx
bound to 10.90.xx.xx -- renewal in 2147483648 seconds.

Routes & Réseau Privé

Nous allons donc maintenant créer un réseau privé, où les VMs pourront aussi bien communiquer entre elles que sur le réseau RPN.

Je vous invite, dans l'interface Proxmox, à créer un “Linux Bridge”, nommé vmbrX (où X remplace le chiffre de votre choix).

Vous lui assignerez une IP dans un réseau privé de votre choix (dans notre cas : 172.16.42.1) qui servira de gateway vers le RPN.

Redémarrez le serveur pour prendre en compte la nouvelle interface. Retournez dans la configuration physique de la VM et ajoutez une nouvelle interface “veth” en bridge sur votre vmbrX.

Voici la configuration à appliquer par la suite dans votre VM :

auto eth1
iface eth1 inet static
    address 172.16.42.50
    netmask 255.255.255.0
    broadcast 172.16.42.255
    post-up route add -net 10.90.0.0 netmask 255.255.0.0 dev eth1
    post-up route add -net 10.90.0.0 netmask 255.255.0.0 gw 172.16.42.1

Quelques explications :

  • Dans un premier temps nous configurons l'interface dans le sous réseau du vmbrX
  • Ensuite nous ajoutons les routes vers le réseau RPN, pour spécifier par où le trafic doit passer

Firewall

Pour terminer il faudra autoriser la translation d'adresse directement au niveau du pare-feu pour que les packets puissent changer d'interface réseau.

iptables -t nat -A POSTROUTING -o eth1 -s 172.16.42.0/24 -j MASQUERADE
Il pourrait être intéressant de conserver ces règles au démarrage avec par exemple le packet iptables-persistant.

Pour finir, si vous souhaitez “Publier” des ports directement sur le réseau RPN, il vous faudra faire le fameux port forwarding.

iptables -t nat -A PREROUTING -p tcp -d IP_RPN --dport PORT_RPN -i eth1 -j DNAT --to-destination IP_LAN_VMBRX

En remplaçant les variables par les bonnes informations :

  • IP_RPN = IP Privée (RPN) du serveur local récupérée via le DHCP.
  • PORT_RPN = Le port à publier sur le réseau RPN. Cela peut être 80 (HTTP), 443 (HTTPS), etc.
  • IP_LAN_VMBRX = L'IP privée attribuée à la VM sur le range de vmbrX