Virtualiser pfSense sur Proxmox VE

Guide d'installation de pfSense sur Proxmox VE

Virtualiser pfSense sur Proxmox VE
proxmoxve pve proxmox pfsense

Au sommaire :

  • 1-Qu'est-ce que pfSense ?
  • 2-Objectif du tutoriel
  • 3-Création de la machine virtuelle
  • 4-Installation
  • 5-Configuration des interfaces
  • 6-Accéder à Interface web
  • 7-Post-installation

1-Qu'est-ce que pfSense ?

pfSense est une solution réseau basé sur FreeBSD utilisé principalement comme routeur/pare-feu.

Sortis en 2006, c'est un fork de M0n0wall, projet d'interface graphique basé sur le pare-feu Packet Filter, très connu dans l’écosystème BSD.

Il intègre également un gestionnaire de paquet qui permet d'enrichir considérablement ses fonctionnalités.

pfSense est en quelque sorte le couteau suisse du réseau au même titre que Proxmox VE pour la virtualisation et la conteneurisation.

Nous aurons l'occasion de parler des nombreuses fonctionnalités de pfSense dans un article qui lui sera consacré.

Pour en savoir plus sur Packet Filter et M0n0wall.

Packet Filter — Wikipédia
M0n0wall — Wikipédia

2-Objectif du tutoriel

Pour ce premier tutoriel, nous allons voir ensemble les étapes suivantes :

  • Préparation de la machine virtuelle,
  • Installation,
  • Configuration des interfaces WAN et LAN,

Sachez également qu'il existe 3 méthodes pour utiliser pfSense :

  • VirtIO,
  • PCI passthrough,
  • SR-IOV,

Nous allons essentiellement utiliser la première méthode qui permet d'utiliser les SDN (Software Defined Network) Open vSwitch et Linux Bridge ainsi que de pouvoir placer pfSense en front des machines virtuelle en reliant ces dernières directement via l'interface réseau virtuelle LAN.

3-Création de la machine virtuelle

Avant toute chose, procurez vous une carte réseau avec chipset Intel (Realtek étant mal supportés par les distros BSD). Vous pouvez trouver des cartes dual NICs pour environs 25-30 euros environs sur Aliexpress.

Note : j'ai eu cette carte en 2020 pour 15 euros mais pénurie et inflation oblige, les prix augmente donc ne tardez pas trop.

23.55€ |Adaptateur de carte réseau, carte lan pour INTEL 1000pt 1000 pt PCI E 9402 pt 9402PT 82571 NC360T 0X3959, double Port PCI E | AliExpress
Achetez malin, vivez mieux! Aliexpress.com

Créez les ponts "vmbr1" et "vmbr2" qui correspondront aux interfaces réseaux physiques 1 et 2 de la carte.

Dans Proxmox VE, cliquez sur "Create VM" puis indiquez un nom et un VMID à votre machine virtuelle.

Sélectionnez votre image.

Indiquez comme pilote graphique le protocole SPICE. Vous pouvez utiliser NoVNC mais SPICE est plus économe en ressources et permet de transférer des fichiers (comme une configuration en .xml) à la machine virtuelle pfSense.

Voir mon tutoriel sur le protocole SPICE pour en connaitre les nombreux avantages.

Proxmox VE : SPICE (partie 7)
Au sommaire : * 1-Qu’est-ce que SPICE ? * 2-Les caractéristiques * 3-Activation des options * 4-Installation du pilote * 5-Installation du client Virt-Viewer 1-Qu’est-ce que SPICE ? SPICE (Simple Protocol for Independent Computing Environments) est un protocole d’affichage à distance open-source développé à l’origine par Qumranet (créateur de KVM) qui permet de prendre en main à distance

Cochez les options "SSD emulation" et "Discard" pour indiquer à la machine virtuelle quelle tourne sur un SSD et pouvoir supprimer les blocs inutilisés (jamais testé sur les distributions BSD, je vous ferait un retour dessus).

Mettez 2 cores au minimum et "Westmere" ou "Host" comme type de processeur pour bénéficier des instructions AES-NI pour le chiffrement/déchiffrement matériel du trafic VPN.

Pour votre culture générale, Westmere est la première micro-architecture d'Intel qui supporte les instructions AES-NI. C'est celle utilisé dans les premiers séries de Core i3, i5 et i7.

Je conseille "Westmere" car votre machine virtuelle sera compatible sur tout type de processeurs Intel sortis depuis 2010. Vous aurez donc une portabilité maximale.

Le mode "Host" donne un accès direct au processeur mais une portabilité moindre car si vous êtes sur un processeur récent (Intel 12th gen) et que vous migrer votre machine virtuelle sur une architecture plus ancienne (Intel 8th gen par exemple), vous aurez des instructions manquantes (les plus récentes) et donc des risques que ça ne démarre pas correctement.

Pour en savoir plus.

Westmere — Wikipédia
Jeu d’instructions AES — Wikipédia

Mettez 1024 Mib au minimum et davantage si vous comptez installer des paquets comme ntop ou squid.

Décochez la case "Firewall" car nous souhaitons que OPnsense ne dépendent pas de celui de Proxmox VE (iptable/netfilter). La première interface réseau utilisera le pont "vmbr0" qui servira d'interface "WAN" côté OPNsense.

Validez la configuration en cliquant sur "Finish".

L'interface réseau utilisant le pont "vmbr0" étant destiné au WAN, il vous faut ajouter une deuxième pour l'interface LAN.

Allez dans Hardware/Network Device puis ajoutez l'interface réseau.

Utilisez le pont "vmbr1" et décochez la case "Firewall".

Vous devriez avoir une configuration identique à celle-ci :

  • L'interface "WAN" sur le pont "vmbr0" est relié au port par défaut de Proxmox VE et sert principalement à fournir l’accès internet aux interfaces LAN (réseau local),
  • L'interface "LAN" sur le pont "vmbr1" qui est relié au port 1 de la carte dual NIC sert à gérer votre réseau local ainsi que vos VLANs (réseaux virtuels),

Vous pouvez également créer un pont "vmbr2" qui sera relié au port 2 de la carte dual NIC mais on va faire au plus simple.

Enfin, désactivez le mode "tablet" dans les options qui consomme des ressources inutilement.

Maintenant que tout est prêt, installons pfSense.

4-Installation

Démarrez la machine virtuelle pfSense.

Acceptez les conditions générales d'utilisation.

Choisissez "Install".

Sélectionnez "French" si vous avez un clavier AZERTY et validez par "Continue with fr.kbd keymap".

Validez par "Auto (UFS) BIOS" car la machine virtuelle est configuré sur un BIOS legacy avec UFS comme format de stockage.

pfSense s'installe sur le disque.

Enfin, finalisez l'installation pfSense en validant par "No" puis par "Reboot" pour commencer à configurer les interfaces WAN et LAN.

5-Configuration des interfaces

Vous allez devoir configurer les interfaces WAN et LAN. Suivez mes instructions et tout se ira bien.

Vous n'allez pas configurer les VLANs pour le moment donc validez par "n".

Il va falloir indiquer quels seront les interfaces "WAN" et "LAN". Indiquez :

  • "vtnet0" pour l'interface "WAN",
  • "vtnet1" pour l'interface "LAN",

Puis validez par "y".

Configuration de l'interface WAN

Suivez les instructions suivantes :

  • Enter an option: 2
  • Enter the number of the interface you with to configure: 1
  • Configure WAN interface via DHCP? [y|n]: n
  • Enter the new WAN IPv4 address: 192.168.0.70/24
  • For a WAN, enter the new WAN IPv4 upstream gateway address: 192.168.0.254
  • Configure IPv6 address WAN interface via DHCP6?: n
  • Enter the new WAN IPv6 address: none
  • Do you want to revert to HTTP as the webConfigurator protocol? (y/n): n

Vous indiquez que vous configurer l'adresse IPv4 de l'interface WAN en statique ainsi que sa passerelle, que vous ne voulez pas configurer l'adresse IPv6 et que vous ne voulez pas utiliser le protocole HTTP.

Configuration de l'interface LAN

Suivez les instructions suivantes :

  • Enter an option: 2
  • Enter the number of the interface you with to configure: 2
  • Enter the new LAN IPv4 address: 192.168.1.1/24
  • Do you want to enable the DHCP server on LAN? [y|n]: y
  • Enter the start address: 192.168.1.20
  • Enter the end address: 192.168.1.50

Vous indiquez l'adresse IPv4 (sans passerelle) de l'interface LAN, que vous ne voulez pas configurer l'adresse IPv6 ainsi que le serveur DHCP et que vous ne voulez pas utiliser le protocole HTTP.

6-Accéder à Interface web

Pour accéder à l'interface web, je passe par une machine virtuelle bureautique (Manjaro XFCE) qui me permet d'effectuer les réglages sans prise de tête.

Branchez un switch au port 1 (LAN) de la carte dual NIC puis branchez votre appareil (PC bureautique ou PC portable), vous devriez avoir une adresse IP fournis par le serveur DHCP.

Si vous utilisez une machine virtuelle, indiquez le pont "vmbr1" à l'interface réseau de votre instance bureautique pour pouvoir obtenir une adresse IP du serveur DHCP.

L'adresse IP de l'interface web est https://192.168.1.1 et les identifiants par défaut sont les suivants :

  • User : admin
  • Password : pfsense

Cliquez deux fois sur "Next"

Indiquez le "Hostname" et le "Domain" (pfsense.lan pour ma part) puis les serveurs DNS primaire et secondaire (cloudflare et quad9 dans l'image ci-dessous).

Indiquez votre "Timezone" (Europe/Paris).

Laissez sur "Static" l'adresse WAN indiqué précédemment (192.168.0.70) puis désactivez les deux options.

Laissez comme indiqué l'adresse IP de l'interface LAN.

Changez le mot de passe par défaut (chiffres, lettres, minuscules, majuscules, caractères spéciaux, salade, tomate, oignon).

Rechargez pfSense pour que les paramètres soient pris en compte.

Cliquez sur "Finish".

Félicitation!!!! pfSense est enfin configuré.

7-Post-installation

Désactivation du résolveur DNS

Si vous disposez de votre propre serveur DNS, décochez l'option "Enable DNS resolver" sur pfSense.

Si ce n'est pas le cas, laissez le activé par défaut. Ce sera le serveur DNS par défaut pour toute les machines passant par le pare-feu.

Pour ma part, j'ai un conteneur LXC avec le duo Pi-Hole/Unbound/isc-dhcp qui sert de serveur DNS pour mes serveurs Proxmox VE ainsi que pour les machines de mon foyer.

Mon interface WAN se vois attribué une adresse IP par le serveur DHCP de Pi-hole, il obtient par la même occasion l'adresse IP du serveur DNS Unbound du conteneur Pi-hole.

Désactivation du déchargement matériel

Si vous utilisez le pilote de para-virtualisation Virtio, vous aurez surement des performances réseaux médiocres ainsi qu'une impossibilité d'utiliser le mode NAT.

Pour améliorer tout ça :

  • Cochez "disable hardware checksum offloading" dans System/Advanced/Networking/Hardware Checksum Offloading. Cela désactivera le déchargement matériel à partir de la carte réseau (sauf avec les cartes de marque Realtek),
  • L'option "Disable hardware TCP segmentation offload" est désactivé par défaut.

Lorsque vous aurez sauvegarder les modifications, un pop-up devrait apparaître. Cliquez sur "OK" pour redémarrer le pare-feu.

Activation du protocole SSH

Le service SSH est désactivé par défaut. Pour pouvoir vous connecté à distance à partir d'un poste authentifié via une clé publique, allez dans "System/Advanced/Admin Access/Secure Shell Server" puis :

  • Activez le protocole SSH,
  • Activez la connexion par clé publique pour plus de sécurité,
  • Changez le port par défaut (optionnel),

Enfin, ajoutez votre clé SSH dans "System/User Manager/Users/Edit".

Connectez vous en SSH avec le compte "admin" (compte par défaut), l'adresse IP LAN ainsi que le port que vous avez modifier au préalable (1987 pour l'exemple au lieu de 22).

ssh admin@192.168.1.1 -p 1987

Vous devriez vous connecté avec succès.

Changement du thème d'affichage

Si vous passez trop de temps devant l'écran, le mieux est que vous changiez le thème d'affichage dans "System/General Setup/webConfigurator".

Je choisis systématiquement un thème sombre pour ne pas fatiguer mes pauvres yeux.

Changement du port d'écoute de l'interface web

Pour plus de sécurité, changez le port d'écoute de l'interface web dans "System/Advanced/Admin Access/TCP Port".

Pour ma part, j'utilise des dates historiques (1492, 1453, 1789, 1917 etc.).

Ensuite, cochez "disable webConfigurator redirect rules" et tapez l'adresse "https://192.168.1.1:1453". Vous devriez avoir accès à l'interface web.

C'est le premier article d'une longue fournée donc restez à l'écoute. See yaaa!!!!!!

Sources :

Optimisation de PFsense dans Proxmox VE
PFsense + Proxmox VE = <3 Si vous suivez ce blog, vous savez que je parle régulièrement de Proxmox VE. En particulier, j’ai travaillé avec 2 autres personnes (M4vr0x et Charles BORDET) pour écrire 2 suites de plusieurs articles sur Proxmox et PFsense. Dans ces deux suites d’articles, à chaque foi…
What is ssh-keygen & How to Use It to Generate a New SSH Key?
Ssh-keygen is a tool for creating new authentication key pairs for SSH. Such key pairs are used for automating logins, single sign-on, and for authenticating hosts.