Comment créer des VLANs avec Proxmox et pfSense ?
Sommaire
- I. Présentation
- II. L'infrastructure : logiciel, matériel, VM
- III. Mise en place du VLAN administratif
- IV. Ajout de l’interface « Linux Bridge » à la VM pfSense
- V. Installation de la VM pfSense
- VI. Configuration du réseau sur la machine d’administration
- VII. Ajout d’une nouvelle interface dédiée aux VLANs
- VIII. Ajout de VLANs dans Proxmox
- IX. Création de VLANs dans pfSense
- X. Tests de bon fonctionnement
I. Présentation
Dans ce tutoriel, nous allons voir comment mettre en place des VLANs au sein de Proxmox, l’hyperviseur de type 1 en licence AGPL-3.0 (d) et le coupler au firewall Open Source pfSense qui lui est sous licence Apache 2.0.
Ce tutoriel n’abordera pas la mise en place de l’hyperviseur et sa sécurisation ou encore la création des machines virtuelles, ni même l’installation et le paramétrage du firewall pfSense. Il a pour but d’appréhender la façon particulière de créer des VLANs et la mise en place de ceux-ci au sein du firewall.
II. L'infrastructure : logiciel, matériel, VM
A. Proxmox et PfSense
Proxmox est un hyperviseur de type 1, qui est basé sur un système que vous connaissez surement : Debian. Pour ma part, je vais utiliser Proxmox 7.0-11 basé sur Debian 11 « Bullseye » et sur un noyau Linux 5.11.
Proxmox permet de créer des machines virtuelles, mais aussi des containers. Il permet en outre la mise en place du provisionnement de machines ou de containers. Cependant, cette opération reste assez complexe à mon sens.
En ce qui concerne pfSense, il s’agit d’un routeur/pare-feu basé sur le système FreeBSD. En plus d’être une solution open source, il dispose de plusieurs paquets installables permettant d’installer une solution IDS/IPS, ce qui en fait un firewall plutôt modulable et efficace. Pour ma part, je vais utiliser la version 2.5.2 dans le cadre de ce tutoriel.
B. La configuration matérielle
Maintenant que vous connaissez les outils logiciels que je vais utiliser, parlons de mon matériel. J’utilise un serveur « home made » confectionné par mes soins dont voici la configuration :
Une mini tour ATX, une carte mère B550M-ITX/AC, un processeur AMD Ryzen 7 3700x, 32 Go de RAM et une carte graphique ASUS GT 710.
Malheureusement pour moi, cette configuration n’est plus compatible avec VMware ESXi 7, que j’aurais bien aimé approfondir (qui sait peut-être que quelqu’un partagera une image contenant les drivers compatibles).
Je ne dispose que d’une seule carte réseau sur cette machine pour virtualiser l’ensemble de mon infrastructure et je n’utilise pas d’IPv6.
C. La liste des machines virtuelles
Dans un premier temps, je me concentre sur la création des machines virtuelles nécessaires à mon environnement. Celui-ci sera composé des VM suivantes :
- Une machine d’administration (de rebond par VPN, etc… pour limiter les attaques).
- Une machine faisant office de firewall (pfSense), un peu de documentation.
- Une machine cliente (Linux ou Windows pour le test de mes VLANs et de connectivité).
D. Schéma de l’infrastructure
Je pense que le schéma suivant et les annotations permettront même à un néophyte de parvenir à mettre en place une telle architecture sans trop de mal, le reste est affaire de curiosité et de culture.
III. Mise en place du VLAN administratif
Lors de l’installation de l’hyperviseur, celui-ci a créé ses propres bridge (notés vmbrx, au pluriel, car certains d’entre vous pourraient avoir plusieurs cartes réseau sur leur serveur), la désignation de(s) carte(s) physique(s) est sous le type « enp2s0, enp2s1… ».
Je passe volontairement sur les différents types de connexion possible, la documentation officielle est bien faite et le forum officiel bien actif, avec un bon esprit.
Via le bandeau d’administration de Proxmox, nous créons donc une nouvelle interface « Linux Bridge » qui servira de « LAN d’administration ».
Cliquez sur le nom de votre serveur sous « Datacenter », puis sur « Network » et enfin sur « Create » pour créer une nouvelle interface « Linux Bridge ».
Complétez le formulaire de création de l’interface comme dans l’exemple ci-dessous.
Dans le bandeau supérieur, valider la configuration en cliquant sur « Apply configuration » (si vous rencontrez un souci, installez via apt l’outil « ifupdown2 »).
IV. Ajout de l’interface « Linux Bridge » à la VM pfSense
Sur la machine virtuelle pfSense, il est nécessaire d’ajouter le périphérique réseau que nous venons de créer sur l’hôte Proxmox.
Pour réaliser cette action : sélectionnez votre machine virtuelle pfSense, cliquez sur « Hardware » (matériel) puis cliquez sur « Add » et sélectionnez « Network Device » (périphérique réseau) et renseigner la nouvelle interface bridge (vmbr1).
Sélectionnez le « Bridge » créé précédemment, pour ma part « vmbr1 ». Choisissez un modèle de carte réseau virtuel : « Intel E1000 » fera l’affaire. Cependant, rien ne vous empêche de choisir un autre modèle de carte réseau virtuelle.
Retournez sur votre VM et si vous regardez la configuration, vous pourrez voir la nouvelle carte réseau que l’on vient d’ajouter.
Important :
Depuis la version 7.0 de Proxmox, il semble être nécessaire de fixer manuellement l’adresse MAC de la carte réseau dans le fichier /etc/network/interfaces sur l’interface WAN.
L’éditeur de texte « nano » étant installé nativement, cela n’est pas réellement compliqué.
On sélectionne le nœud de notre serveur Proxmox dans la partie gauche de l’interface graphique ou en SSH pour les puristes, puis un petit coup de « nano /etc/network/interfaces »
Recherchez le bloc correspondant à votre WAN (normalement il s’agit du 1er et ajoutez en dessous de la dernière ligne, après avoir effectué une tabulation, la valeur « hwaddress ma_mac_adresse ».
Si vous ne connaissez pas l’adresse MAC, vous pouvez l’obtenir avec la commande ip a dans le Shell, car elle vous remontera toutes les interfaces. À vous de retrouver la bonne correspondance. 😊
Exemple :
V. Installation de la VM pfSense
Il est temps de procéder à l’installation de pfSense sur la machine virtuelle du même nom (le tutoriel date un peu, mais vous ne devriez pas être trop dérouté). L’objectif étant de configurer les deux interfaces associées à cette VM..
Pour moi les interfaces se nomment em0 et em1. Cela est peut-être différent chez vous (vtnet0, vtnet1), il me semble que cela est dû au choix de la carte réseau installée sur la machine virtuelle. Le nom « vtnet » faisant référence à du para virtualisé.
Concernant mes interfaces elles sont donc configurées ainsi :
em0 = WAN à 192.168.1.X /24 (statique ou attribué par le DHCP du routeur de votre fournisseur, préférez attribuer une IP statique).
em1 = LAN à 10.0.0.1/32 (ce LAN ne servira qu’à une seule machine d’administration).
Attention, on ne définit pas de gateway (passerelle) pour le LAN.
Accès à l’interface d’administration de PfSense : pour ce qui est du choix HTTP ou HTTPS à vous de voir, mais je vous recommande le HTTPS bien sûr 😊.
Félicitation ! Vous avez installé votre pfSense ! À présent, il ne vous reste plus qu’à configurer celui-ci via le « Wizard », en accédant à l’URL que vous avez définie sur l’interface LAN. Mais avant cela, il va falloir préparer la machine d’administration. Pourquoi ? Tout simplement, car l’accès à l’interface de gestion de pfSense est interdit (par défaut) via le WAN, c’est aussi une sécurité supplémentaire (la documentation officielle vous en dira plus concernant les normes NFC).
Rappel :
- Si pour une raison ou une autre vous rencontrez un problème durant cette phase, il est toujours possible de modifier sa configuration.
- En cas d'erreur d'interface choix 1 afin de définir le rôle de chaque interface (WAN ou LAN).
- En cas d'erreur d'adressage choix 2 puis sélectionner le numéro de l'interface à reconfigurer, attention la notation est en CIDR (/24, mais sans le "/").
- Je vous rappelle également les identifiants par défaut pour s’authentifier sur l’interface pfSense :
- login: admin
- password: pfsense
VI. Configuration du réseau sur la machine d’administration
Sur la machine virtuelle dédiée à l’administration du pfSense et de votre infrastructure, ajoutez une nouvelle interface réseau et sélectionnez « vmbr1 ». Autrement dit, la même carte « Linux Bridge » que celle associée au « LAN » sur le PfSense pour que les deux machines puissent communiquer.
Démarrez la machine d’administration et définissez l’adressage IP tel que :
Pourquoi un tel masque de sous-réseau ? Je vous renvoie à vos cours de réseau et au calcul de masque de sous-réseau ? 😊
À ce stade-là, vous devriez être en mesure d’accéder à la page d’administration pfSense (via l’adresse IP de l’interface LAN) et donc de configurer le « Wizard », vos règles de firewall (DNS / DNS over TLS / HTTP / HTTPS / SSH / VPN).
VII. Ajout d’une nouvelle interface dédiée aux VLANs
Comme dans le chapitre précédent, effectuez la création d’un nouveau « Linux Brigde » (vmbr2) sur Proxmox. Nommez-le explicitement (pour moi ce sera « LAN_VLANs »), pas d’adressage ou autre…
Validez la création et appliquez la configuration au Proxmox.
Ajoutez à présent une nouvelle carte réseau à votre machine virtuelle pfSense et sélectionnez vmbr2. Vous savez comment faire puisque nous l’avons fait précédemment.
Cette interface permettra la création des VLANs.
Connectez-vous via la machine d’administration à votre interface web de gestion pfSense et rendez-vous dans l’onglet « Interfaces » puis « Interface Assignments ».
Ajoutez la nouvelle interface disponible, qui devrait apparaitre « +Add ». Sélectionnez la nouvelle interface (renommez-la si besoin en sélectionnant le nom de l’interface en bleu).
Activez l’interface en cochant « Enable interface » et ne modifiez rien d’autre. Cliquez sur « Save » en bas de page pour sauvegarder et comme d’habitude cliquez sur « Apply Changes » pour appliquer la nouvelle configuration.
Une fois cela effectué nous pouvons éteindre la machine d’administration et le pfSense (touche 6 dans la console) pour le moment afin de se concentrer sur l’étape suivante : les VLANs !
VIII. Ajout de VLANs dans Proxmox
Comme précédemment nous allons ajouter une interface à notre Proxmox, mais ce coup-ci, il s’agit d’une interface du type « Linux VLAN ». Effectuez le bon choix au moment de la création.
Je vous invite à créer vos VLANs. Pour ma part, je vais créer les VLANs présents sur le schéma que je vous ai montré au début du tutoriel.
Voici un exemple :
Répétez l’opération autant de fois que nécessaire pour créer vos différents VLANs. Attention, veillez à garder une certaine logique de nommage de vos VLANs.
Un détail et non des moindres, il est nécessaire de redémarrer l’hyperviseur lorsque l’on crée les VLANs. C’est nécessaire pour une raison que j’ignore… En tout cas, sans cette action cela ne fonctionne pas chez moi. C'est pour cette raison que je vous recommande de créer tout vos VLANs et de redémarrer, sinon il faudra redémarrer à chaque fois que vous souhaitez créer un VLAN. Si c'est en production, cela peut s'avérer très contraignant.
IX. Création de VLANs dans pfSense
Votre hyperviseur Proxmox est à présent redémarré. Je vous invite à démarrer également le pare-feu PfSense et la machine d’administration afin de poursuivre la configuration.
Connectez-vous à PfSense via son interface Web, toujours depuis la machine d’administration. Rendez-vous de nouveau dans l’onglet « Interfaces » et « Interfaces Assignments ».
Sélectionnez l’onglet du ruban nommé « VLANs ».
Cliquez-en bas à droite sur « +Add ». Sélectionnez l’interface parente (em2 chez moi, (autrement dit la vmbr2) initialement nommée Opt1)
Renseignez les différents champs, tels que le tag du VLAN (c’est-à-dire le numéro du VLAN), ainsi que la priorité si vous en avez la nécessité. Enfin, indiquez une description du VLAN, explicite comme toujours.
Sélectionnez « Save ».
Revenez sur l’onglet « Interface Assignments », sélectionnez le nouveau port disponible et cliquez sur « +Add ».
Sélectionnez l’interface VLAN en bleu (chez moi elle se nomme OPT2 (em2.10)).
Nous pouvons alors la renommer au choix (pour moi ce sera VLAN10 sur cette capture) et je coche « Enable Interface » pour l’activer.
Pour l’option « IPv4 Configuration Type », je passe en « Static IPv4 » et je n’ai pas d’IPv6 à la maison donc je n’active pas cette partie-là.
J’attribue une adresse IP à ma sous-interface du VLAN, ainsi que son masque de sous-réseau associé (en fonction de vos besoins et préférences, 1ère ou dernière adresse IP du réseau).
On ne définit pas de « IPv4 Upstream gateway » (le pare-feu se débrouillera par la suite avec vos règles). Validez.
Pour finir, on est invité à appliquer les changements.
X. Tests de bon fonctionnement
Remarque : Afin d’être sûr que tout fonctionne, je crée une règle « Open-bar » sur mon pare-feu dans l’onglet Firewall / Rules. De cette façon, s’il y a un souci on sait que ça ne vient pas des règles 😊. Soyons clairs : ce n’est pas une bonne pratique et supprimez cette règle juste après vos tests !
Créez ou utilisez une machine cliente que vous avez installée au préalable (Linux ou Windows).
Concernant la configuration matérielle de celle-ci, il faut bien configurer la carte réseau. En effet, il faut définir l’interface et attribuer le VLAN via le champ "VLAN Tag" (10,20,30 en fonction du VLAN souhaité).
L’adressage IP n’est pas distribué par le DHCP il vous faudra donc attribuer un adressage valide manuellement à votre machine cliente :
Ne restera dès lors que la configuration de votre DHCP Server, configurer le DNS Resolver ou forwarder au choix et créer vos règles de Firewall.
Vous disposez à présent d’une infrastructure sécurisée (ou presque 😊), il sera possible à présent de répéter l’opération afin d’étendre votre réseau, de permettre des échanges inter-VLAN ou d’isoler un VLAN spécifique.
Merci Guilhem, vous pouvez rajouter sans doute une nouvelle compétence à la liste énuméré par vous: la pédagogie 🙂
Tout compris et maintenant l’action 🙂
Ce que j’ai un peu de mal c’est de comprendre pourquoi il faut utiliser encore le firewall de Proxmox alors que vous avez utilisé pfSense dans cet exemple?
Hey!
J’ai tout suivi à la lettre,
Et je ne comprend pas,
Ma VM de test à la fin n’arrives pas à ne serait ce que ping ma mon pfsense ?
Ils arrivent pas à communiquer ensemble à travers le VLAN. :/
Merci pour le tuto très intéressant, mais je tiens à noter qu’il est nécessaire au préalable lorsque l’on configure les ponts au niveau de proxmox de cocher la case vlan aware pour permettre aux clients des vlans de pouvoir s’y attacher car sinon la machine cliente ne boot pas suite à une erreur de réseau. Je le note pour permettre aux autres de pas galérer à cause de ça 😉
bonjour
petit point que je ne comprends c’est par rapport a proxmox, est-il installer sur physique ou VM ?
Car je suis sur un projet de la sorte mais je suis perdu
Bonjour,
Super tutorial. :):)) merci
Est-il possible de bénéficier d’un petit tutorial décrivant la mise ne place du NAT et règles Firewall pour accéder aux VLAN ?
J’ai eu beau essayer ce tutoriel mais cela ne semble pas fonctionner.
J’ai l’impression qu’il manque des étapes entre les explications et les captures d’écrans