Installer un réseau local virtuel avec Proxmox 4 et pfSense

Aujourd’hui, je vous propose un petit tutoriel qui va vous permettre de mieux gérer le réseau de vos machines virtuelles sous Proxmox, avec entre autre la création d’un nouveau réseau dédié aux machines virtuelles et la mise en place d’un serveur DHCP pour distribuer des adresses IP aux machines et containers.

L’idée est simple : votre serveur hôte dispose d’une seule carte réseau, branchée à votre réseau local (ici 192.168.0.0/24). Une machine virtuelle de routage, sous pfSense, est « bridgée » à cette interface (c’est-à-dire qu’elle agit comme si elle était connectée physiquement à votre réseau local, avec sa propre adresse IP). Cette machine est reliée à une seconde interface, cette fois-ci purement virtuelle (c’est-à-dire que des machines virtuelles peuvent s’y connecter, mais elle n’est associée à aucune carte réseau physique), à laquelle elle fournira des adresses IP.

Bridges, interfaces physiques, késako?

Avant de nous lancer dans le vif du sujet, je vous propose une petite explication sur ce que sont les bridges (que l’on pourrait également qualifier « d’interface virtuelle ») et interfaces physiques.

Commençons par les interfaces physiques. Comme leur nom l’indique, ce sont des cartes réseaux physiques (principalement des cartes Ethernet, donc). Branchées à votre box, elles vous fourniront Internet. Branchées à un ordinateur (et correctement configurées, ce que nous effleurerons dans cet article), elles vous permettront de vous connecter au réseau local dédié aux machines virtuelles. Elles sont notées, sous Proxmox, ethX (X étant un nombre unique, débutant à zéro et incrémenté automatiquement).

Passons ensuite aux bridges (appelées « ponts » dans la traduction française de Proxmox). Notés sous la forme vmbrX (X étant un nombre choisi par l’administrateur système, toujours sans doublon possible), ce sont des cartes réseau totalement virtuelles. C’est-à-dire qu’elles n’existent qu’au travers de quelques lignes d’un fichier de configuration : elles ne correspondent à aucune carte réseau physique. On peut y « brancher » (toujours au travers des fichiers de configuration) deux choses : des machines virtuelles et des interfaces physiques. Du point de vue des machines virtuelles, ce sont les seules cartes réseaux associables.

Ainsi, il n’est pas possible de relier la machine virtuelle « Truc01 » à la carte réseau « eth0 » (que nous considérerons comme reliée à une box) pour lui amener Internet. Pour arriver à cela, il va falloir passer par l’intermédiaire d’un bridge « vmbr0 », auquel sera associé notre carte eth0, que nous brancherons à notre machine Truc01. Ainsi, lorsqu’elle démarrera, notre machine virtuelle se comportera comme si elle était branchée physiquement à notre box et obtiendra, au même titre que notre serveur, sa propre adresse IP sur le réseau.

Mais ce comportement n’est pas forcément idéal, surtout si vous comptez utiliser beaucoup de machines virtuelles et/ou souhaitez expérimenter avec les services réseaux (tel que le DHCP, par exemple). Cela tombe bien : il est possible de faire autrement. C’est ce que nous allons voir ici.

Création de deux réseaux et d’une machine virtuelle de routage

Maintenant que nous en savons un peu plus sur la manière dont fonctionne le réseau sous Proxmox, je vous propose de passer à la configuration. Commencez par vous connecter sur l’interface d’administration de Proxmox (par défaut http://ip-de-l-hyperviseur:8006/). Sélectionnez ensuite dans la vue de gauche votre machine, puis cliquez sur l’onglet « Réseau ».

La première étape consiste ici à vérifier que notre interface physique eth0 n’est pas configurée avec une adresse IP statique (nous la configurerons ailleurs, plus tard). Pour cela, double cliquez dessus puis assurez-vous que l’ensemble des champs (à l’exception de « Nom » et de « Commentaire », qui n’ont aucune importance) sont vides :

Nous allons ensuite pouvoir passer à la création de deux bridges. Le premier, vmbr0, sera l’interface de liaison avec notre box (donc le côté « WAN », du point de vue de notre routeur). Le second, vmbr20 (j’ai choisi ce nom car la plage IP associée sera 10.0.20.0/24), sera une interface purement virtuelle sur laquelle les autre machines virtuelles pourront obtenir une adresse IP. Ce sera donc le côté « LAN » du point de vue du routeur.

Pour créer un bridge, rien de plus simple. Toujours dans l’onglet « Réseau » de l’hyperviseur, cliquez sur « Créer », puis sélectionnez « Linux Bridge ». Une boîte de formulaire s’ouvre alors. Remplissez-là comme il suit :

  • Nom : nom de l’interface virtuelle (vmbr0 par exemple)
  • Adresse IP : adresse que prendra le serveur Proxmox sur l’interface. Sur vmbr0, c’est l’adresse IP (statique) qu’aura le serveur sur le réseau de la box. Remplissez ensuite le masque de sous-réseau en conséquence.
  • Passerelle : adresse par laquelle il est possible de joindre d’autre réseaux (par exemple Internet). Ici l’adresse IP de la box.
  • Ports membres : cartes réseaux (ethX) associées au bridge

Ainsi, pour vmbr0 (connexion à la box) vous devriez obtenir quelque chose comme ceci :

Et pour vmbr20 (réseau local pour les machines virtuelles) :

Note : ici 10.0.20.1 sera l’adresse IP de l’hyperviseur sur le réseau et 10.0.20.254 sera l’adresse IP de la machine virtuelle pfSense

Proxmox n’appliquant les modifications du réseau qu’au redémarrage, relancez votre serveur. Si tout s’est bien passé, votre hyperviseur est toujours accessible et vous pouvez passer à l’étape suivante. Dans le cas contraire, je vous invite à vérifier votre configuration pour déceler d’éventuelles erreurs.

Configuration de pfSense pour le routage et la fourniture d’adresses IP

Maintenant que nos interfaces sont correctement configurées, nous allons pouvoir passer à la dernière étape de notre aventure : la configuration d’une machine virtuelle sous pfSense. Pour cela, commencez par récupérer une ISO d’installation sur le site officiel de pfSense. Une fois celle-ci téléchargée, créez une nouvelle machine virtuelle (pensez à sélectionner « Autre types d’OS » pour le choix du système d’exploitation : pfSense est une BSD, pas une Linux!) avec deux cartes réseaux en accès par pont, sur vmbr0 et vmbr20 (il faudra, pour cela, passer par l’onglet Matériel → Ajouter → Carte réseau). Niveau ressources allouées, à vous de voir : j’ai personnellement choisi d’allouer 1 CPU, 256 Mo de mémoire vive et 5 Go de disque dur, ce qui pour mon usage est amplement suffisant.

Démarrez maintenant la machine virtuelle, puis passez en console : nous allons procéder à l’installation de pfSense. Ne vous prenez pas trop le choux : la « quick install » fonctionne très bien. Pensez simplement à choisir le « standard kernel », indispensable pour la suite de ce tutoriel.

Une fois l’installation terminée et pfSense lancé, nous allons devoir reconfigurer manuellement pfSense. Nous situant du côté « WAN » (c’est-à-dire pour un pare-feu du côté ennemi), nous ne pouvons pas encore accéder aux différents outils d’administration du pare-feu (interface web et SSH).

Pour remédier à cela, nous allons commencer par désactiver temporairement le pare-feu. Dans l’interface console, choisissez l’option « 8) Shell » puis entrez la commande suivante :

pfctl -d

Il vous est maintenant possible d’accéder à l’interface web en vous rendant sur https://[ip-wan-du-firewall/. Connectez-vous ensuite avec l’identifiant admin et le mot de passe pfsense. Configurez votre pare-feu comme bon vous semble. N’oubliez pas, à la fin de l’assistant de configuration, de re-désactiver le pare-feu. Nous procéderons ensuite à l’autorisation du trafic WAN entrant dans le pare-feu et nous reconfigurerons ensemble le réseau LAN pour utiliser la plage d’adresses 10.0.20.0/24.

Commençons si vous le voulez bien par la reconfiguration du pare-feu. Dans le menu situé tout en haut, sélectionnez Firewall → Rules. Cliquez ensuite sur le bouton « ^ Add » pour ajouter une nouvelle règle. Configurez-là comme il suit :

  • Section « Edit Firewall Rule »
    • Action : Pass
    • Interface : WAN
    • Address family : IPv4
    • Protocol : any
  • Section « Source »
    • Source : network, 192.168.0.0/24 (où 192.168.0 est le début de l’adressage IP du réseau de votre box, qui peut également être 192.168.1(.0))
  • Section « Destination »
    • Source: WAN address
    • Destination port range: from HTTPS (443) to HTTPS (443)
  • Section « Extra options »
    • Description : ce que vous voulez

Sur la page qui s’ouvre ensuite, cliquez sur la roue crantée en face de la règle « Block private networks ». Dans la page qui s’ouvre ensuite, descendez jusqu’en bas pour décocher l’option « Block private networks and loopback addresses ». Cliquez enfin sur le bouton « Apply changes » pour valider les changements. Ré-activez ensuite le pare-feu en exécutant la commande suivante :

pfctl -e

Le pare-feu est maintenant correctement configuré pour être administré depuis votre réseau local (perçu, je vous le rappelle, comme le WAN). Il ne nous reste plus qu’à configurer correctement le DHCP.

Pour cela, commencez par vous rendre dans Interfaces → LAN. Dans la section « Static IPv4 Configuration », changez l’adresse IPv4 par 10.0.20.254/24. Appliquez les modifications. Rendez-vous ensuite dans Services → DHCP Server, puis changez la « Range » par quelque chose comme 10.0.20.10 – 10.0.20.100 (n’oubliez pas que 10.0.20.0 et 10.0.20.255 sont des adresses non attribuables, et que 10.0.20.1 et 10.0.20.254 sont déjà utilisées par notre hyperviseur et notre instance pfSense). Sauvegardez ensuite.

Toutes mes félicitations : nous avons maintenant terminé. Je vous laisse tester en créant une nouvelle machine virtuelle connectée à l’interface réseau vmbr20. Voici le résultat chez moi, avec une machine virtuelle sous Fedora 24 :

J’ai une adresse IP dans la bonne plage et l’accès à Internet fonctionne.

Ah, et n’oubliez pas d’activer le démarrage automatique pour votre machine virtuelle, au risque que le réseau ne fonctionne plus au prochain démarrage de votre hyperviseur!

Et voilà. Ce dernier article de notre série sur la création d’un hyperviseur sur le HP Pro 6000 SFF est maintenant terminé. J’espère qu’il vous aura été utile. Comme toujours, enjoy!