Chapitre 216 minIntermédiaire
Installer pfSense sur Proxmox VE
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- préparer les ponts de l'hyperviseur, dont un pont sensible aux VLAN ;
- créer la machine virtuelle de pfSense avec des cartes et un disque VirtIO ;
- dérouler le Netgate Installer, la console et l'assistant de configuration ;
- régler les options indispensables d'un pfSense virtualisé.
4 exercices corrigés
Installer pfSense sur Proxmox VE, c'est créer une machine virtuelle avec des cartes réseau VirtIO reliées à des ponts (bridges) de l'hyperviseur, une par réseau à raccorder, puis lancer l'installateur de Netgate et attribuer les interfaces WAN et LAN. Ce chapitre prépare les ponts de l'hôte, crée la machine virtuelle de pf1, déroule l'installation, la console et l'assistant de configuration, puis règle les deux options indispensables en virtuel.
Ce qu'il faut préparer
Chez Sorbier, l'hôte Proxmox VE 9.2 du siège, pve1, a trois ports réseau physiques :
| Port de l'hôte | Pont Proxmox | Relié à | Rôle pour pfSense |
|---|---|---|---|
eno1 | vmbr0, sensible aux VLAN | Un port trunk de SW-COEUR | Tous les VLAN internes : POSTES, SERVEURS, ENTREPOT, VISITEURS, TELEPHONIE, ADMIN |
eno2 | vmbr1 | La box de l'opérateur | WAN, Internet |
eno3 | vmbr2 | Le switch de la DMZ | DMZ |
Un pont Linux (Linux bridge) est un switch virtuel à l'intérieur de l'hôte : les cartes réseau des machines virtuelles s'y branchent, et le port physique indiqué dans Bridge ports le relie au réseau réel. Un pont sensible aux VLAN (VLAN aware) transporte les trames étiquetées 802.1Q au lieu de les ignorer : c'est lui qui permet de faire arriver tous les VLAN sur une seule carte de la machine virtuelle.
La DMZ a son propre pont et son propre port : un problème sur le trunk interne ne touche pas la DMZ, et la séparation se lit sur le schéma. Dans une maquette à un seul hôte, vmbr2 peut n'avoir aucun port physique : les machines de la DMZ sont alors des machines virtuelles du même hôte, branchées sur ce pont isolé.
Créer les ponts sur l'hôte
Dans l'interface web de Proxmox VE (https://<adresse de l'hôte>:8006) : sélectionne le nœud pve1, puis System > Network > Create > Linux Bridge.
- Name :
vmbr1; Bridge ports :eno2; aucune adresse IPv4 (l'hôte n'a rien à faire sur le WAN) ; Comment : « WAN pfSense ». - Recommence pour
vmbr2sureno3, commentaire « DMZ ». - Ouvre
vmbr0, créé à l'installation de Proxmox sureno1, et coche VLAN aware. - Clique sur Apply Configuration : Proxmox VE 9 applique les changements sans redémarrer, grâce à
ifupdown2.
Le fichier /etc/network/interfaces de l'hôte contient alors, pour les trois ponts :
auto vmbr0
iface vmbr0 inet manual
bridge-ports eno1
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
#Trunk VLAN internes
auto vmbr1
iface vmbr1 inet manual
bridge-ports eno2
bridge-stp off
bridge-fd 0
#WAN pfSense
auto vmbr2
iface vmbr2 inet manual
bridge-ports eno3
bridge-stp off
bridge-fd 0
#DMZ
bridge-vids 2-4094 est la valeur par défaut : le pont accepte toutes les étiquettes de VLAN. L'hôte lui-même garde son adresse de gestion dans le VLAN 99, sur une interface vmbr0.99 ; le cours Virtualisation détaille le réseau de l'hyperviseur.
Créer la machine virtuelle
Télécharge l'image de l'installateur sur la boutique de Netgate (le Netgate Installer, gratuit, délivré par un passage en caisse à 0 €), décompresse-la si elle est compressée, puis téléverse-la dans un stockage de l'hôte : local > ISO Images > Upload. Clique ensuite sur Create VM et remplis les onglets :
| Onglet | Champ | Valeur | Pourquoi |
|---|---|---|---|
| General | Name | pf1 | Nom de la machine dans Proxmox |
| OS | ISO image | L'image du Netgate Installer | |
| OS | Guest OS Type | Other | pfSense est un FreeBSD, pas un Linux ni un Windows |
| System | Machine | q35 | Châssis moderne, conseillé |
| System | BIOS | SeaBIOS (ou OVMF (UEFI), voir plus bas) | |
| Disks | Bus/Device | VirtIO Block | Pilote paravirtualisé, le plus rapide |
| Disks | Disk size | 32 GiB | 8 Gio au minimum ; de la place pour les journaux, Suricata et pfBlockerNG |
| CPU | Cores | 2 | 4 si tu ajoutes Suricata |
| CPU | Type | host | Le processeur virtuel expose les instructions AES-NI du vrai processeur : VPN plus rapides |
| Memory | Memory | 4096 MiB | 1 Gio suffit pour démarrer, mais pfBlockerNG et Suricata en consomment beaucoup |
| Memory | Ballooning Device | Décoché | La mémoire d'un pare-feu ne doit pas être reprise par l'hôte |
| Network | Bridge | vmbr1 | La première carte sera le WAN |
| Network | Model | VirtIO (paravirtualized) | |
| Network | Firewall | Décoché | Le pare-feu de Proxmox n'a rien à filtrer devant un pare-feu |
Une fois la machine créée, ajoute les deux autres cartes : Hardware > Add > Network Device, pont vmbr0 sans étiquette de VLAN (VLAN Tag vide, pour recevoir toutes les étiquettes), puis pont vmbr2, toujours en VirtIO et sans le pare-feu de Proxmox. Dans Options, active Start at boot et donne à pf1 l'ordre de démarrage 1 (Start/Shutdown order) : le pare-feu doit démarrer avant les serveurs.
La même machine se crée en une commande, dans le shell de l'hôte :
qm create 100 --name pf1 --ostype other --machine q35 \
--cores 2 --cpu host --memory 4096 --balloon 0 \
--virtio0 local-lvm:32 \
--net0 virtio,bridge=vmbr1,firewall=0 \
--net1 virtio,bridge=vmbr0,firewall=0 \
--net2 virtio,bridge=vmbr2,firewall=0 \
--cdrom local:iso/netgate-installer-amd64.iso \
--boot 'order=virtio0;ide2' --onboot 1 --startup order=1
local-lvm:32 demande un disque neuf de 32 Gio sur le stockage local-lvm ; le nom de l'image ISO est celui sous lequel tu l'as téléversée. Côté pfSense, les cartes VirtIO s'appellent vtnet0, vtnet1 et vtnet2, dans l'ordre de net0, net1 et net2. Note les adresses MAC de chaque carte (onglet Hardware) : elles permettent de vérifier, dans l'installateur, quelle carte est laquelle.
Dérouler l'installation
Démarre la machine et ouvre sa Console. Le Netgate Installer est un installateur en ligne : il configure d'abord le réseau, vérifie l'accès à Internet, puis télécharge le système. Les étapes :
- License : accepte les conditions d'utilisation.
- Welcome : choisis Install (les autres choix servent au dépannage : Rescue Shell, et Configuration Restore si une ancienne configuration est trouvée sur le disque).
- Select WAN Interface :
vtnet0(vérifie l'adresse MAC). Configure WAN Interface : Interface Mode Static IP chez Sorbier, avec203.0.113.17/29et la passerelle203.0.113.22; en salle de TP, laisse DHCP. - Select LAN Interface :
vtnet1. Laisse provisoirement l'adresse proposée,192.168.1.1/24: tu la remplaceras juste après par l'adresse du VLAN ADMIN. - Confirm Network Configuration : Continue. L'installateur doit maintenant joindre Internet.
- L'installateur vérifie auprès de Netgate si la machine a droit à pfSense Plus. Sans abonnement, choisis Install CE.
- File System : garde ZFS, le choix par défaut et recommandé : il supporte bien mieux les coupures de courant que UFS. (Les environnements de démarrage ZFS, une copie du système avant chaque mise à jour, sont réservés à pfSense Plus ; en CE virtualisé, l'instantané de la machine virtuelle joue ce rôle, voir le chapitre 14.) Schéma de partitions : GPT.
- Choisis le disque
vtbd0, confirme, choisis la version (la plus récente de l'édition CE), laisse l'installation se faire, puis Reboot. Retire l'image ISO du lecteur virtuel (Hardware > CD/DVD Drive > Do not use any media) pour que la machine démarre sur son disque.
Le menu de la console
Après le redémarrage, la console affiche les interfaces et un menu numéroté. Il sert quand l'interface web est inaccessible, et à la toute première configuration.
| N° | Option | Quand t'en servir |
|---|---|---|
| 1 | Assign Interfaces | Attribuer les cartes et créer des VLAN depuis la console |
| 2 | Set interface(s) IP address | Changer l'adresse d'une interface (par exemple quand l'accès web est perdu) |
| 3 | Reset webConfigurator password | Mot de passe administrateur oublié (accès physique à la console nécessaire) |
| 4 | Reset to factory defaults | Repartir de zéro |
| 5 et 6 | Reboot system, Halt system | Redémarrer, arrêter proprement |
| 7 | Ping host | Tester la connectivité depuis le pare-feu |
| 8 | Shell | Ligne de commande FreeBSD |
| 11 | Restart webConfigurator | L'interface web ne répond plus |
| 13 | Update from console | Mettre à jour sans l'interface web |
| 14 | Enable Secure Shell (sshd) | Activer SSH (à limiter ensuite au VLAN ADMIN) |
| 15 | Restore recent configuration | Revenir à une configuration précédente après une erreur |
Chez Sorbier, l'administration se fait uniquement depuis le VLAN 99. On crée donc tout de suite ce VLAN sur vtnet1 et on en fait l'interface LAN :
- Option 1. À la question Should VLANs be set up now?, réponds
y. Parent :vtnet1, étiquette (VLAN tag) :99. Laisse vide pour terminer la saisie des VLAN. - WAN :
vtnet0. LAN :vtnet1.99. Interface optionnelle 1 :vtnet2(la future DMZ). Confirme avecy. - Option 2, interface LAN : adresse
192.168.10.222, masque28, pas de passerelle (upstream gateway : aucune, c'est un réseau interne), pas d'IPv6 pour l'instant, pas de serveur DHCP (les machines du VLAN ADMIN ont des adresses fixes), et garde HTTPS pour l'interface web.
Depuis le poste d'administration (192.168.10.209/28, passerelle 192.168.10.222, branché sur un port du VLAN 99), ouvre https://192.168.10.222. Le navigateur prévient que le certificat est autosigné : c'est normal à ce stade, on le remplacera (chapitre 14).
L'assistant de configuration
À la première connexion (admin / pfsense, les identifiants par défaut), pfSense lance l'assistant (System > Setup Wizard) :
- General Information : Hostname
pf1, Domainad.sorbier.example. Laisse les serveurs DNS vides : pfSense résout lui-même les noms grâce à son résolveur Unbound (chapitre 8). - Time Server Information : garde le serveur de temps proposé et choisis le fuseau
Europe/Paris. Des journaux à la mauvaise heure ne valent rien dans une enquête. - Configure WAN Interface : l'adresse est déjà réglée. Laisse cochées Block RFC1918 Private Networks et Block bogon networks : la première refuse sur le WAN les paquets dont l'adresse source est privée (forcément usurpée sur Internet), la seconde les plages qui ne devraient jamais circuler sur Internet (adresses non attribuées ou réservées).
- Configure LAN Interface :
192.168.10.222/28, déjà réglé. - Set Admin WebGUI Password : un mot de passe long et unique, rangé dans le coffre-fort de mots de passe de l'équipe.
- Reload, puis Finish.
Deux réglages indispensables en machine virtuelle
Désactiver le déchargement des sommes de contrôle. Avec les cartes VirtIO, Netgate impose de cocher System > Advanced > Networking > Disable hardware checksum offload, puis de redémarrer (Diagnostics > Reboot). Sans cela, la carte virtuelle laisse au matériel le calcul des sommes de contrôle que personne ne fait vraiment : des paquets partent avec une somme fausse, et certains flux (souvent le DNS, le DHCP ou le VPN) échouent de façon aléatoire. C'est la panne la plus fréquente des pfSense virtualisés.
Choisir le serveur DHCP Kea. Dans le même onglet, la section DHCP Options propose le moteur du serveur DHCP (Server Backend) : Kea DHCP, le moteur actuel, ou ISC DHCP, l'ancien, qui n'est plus maintenu. Choisis Kea : c'est le seul à recevoir des correctifs, et il est nécessaire pour la haute disponibilité du DHCP (chapitre 13).
Vérifie enfin que tout répond :
- Status > Dashboard : la version, le processeur (avec AES-NI), la mémoire, les interfaces actives ;
- Diagnostics > Ping :
9.9.9.9depuis le WAN, puis un nom (deb.debian.org) pour tester la résolution ; - System > Update : la branche Current Stable Version et l'état « à jour ».
Exercices
Exercice 1 sur 4 Le bon pont pour chaque carte Réussi À revoir
Un étudiant crée pf1 avec net0 sur vmbr0 (étiquette 99), net1 sur vmbr1 et net2 sur vmbr2. Il attribue vtnet0 au WAN et vtnet1 au LAN, comme dans le cours.
- Quelle carte reçoit en réalité le trafic d'Internet ?
- Que se passe-t-il pendant l'installation ?
- Pourquoi l'étiquette 99 sur
net0est-elle de toute façon un mauvais choix pour la carte des VLAN internes ?
Voir la réponseMasquer la réponse de l'exercice 1
vtnet1, puisque c'estnet1qui est branchée survmbr1, le pont du WAN. Les nomsvtnetNsuivent l'ordre des cartesnetN.- L'installateur cherche Internet sur
vtnet0, qui est en réalité dans le VLAN ADMIN : pas de passerelle vers Internet, la vérification auprès de Netgate échoue (Cannot verify the eligibility of this system) et l'installation ne peut pas continuer. D'où le conseil de vérifier les adresses MAC. - Avec une étiquette, Proxmox ne fait passer vers la carte que le VLAN 99, sans étiquette : la carte ne verra jamais les autres VLAN. La carte qui porte les VLAN internes doit être branchée sur un pont sensible aux VLAN sans étiquette, pour recevoir toutes les trames étiquetées et laisser pfSense créer ses interfaces VLAN.
Tu avais trouvé ?
Exercice 2 sur 4 Dimensionner la machine virtuelle Réussi À revoir
Pour un pfSense qui doit faire tourner Suricata sur deux interfaces et pfBlockerNG, un collègue propose 1 vCPU, 1 Gio de mémoire avec ballooning, un disque IDE de 8 Gio et des cartes Intel E1000. Corrige chaque choix en une phrase.
Voir la réponseMasquer la réponse de l'exercice 2
- Processeur : 2 à 4 cœurs, type host ; Suricata analyse chaque paquet et a besoin de puissance, et le type host donne AES-NI aux VPN.
- Mémoire : au moins 4 Gio, sans ballooning ; Suricata et les listes de pfBlockerNG vivent en mémoire, et l'hôte ne doit pas pouvoir en reprendre.
- Disque : VirtIO Block et au moins 32 Gio ; le bus VirtIO est bien plus rapide que l'IDE émulé, et les journaux, les règles de Suricata et les listes prennent de la place.
- Cartes réseau : VirtIO (paravirtualized) ; les cartes E1000 sont émulées, donc lentes et gourmandes en processeur. Ne pas oublier ensuite de désactiver le déchargement des sommes de contrôle.
Tu avais trouvé ?
Exercice 3 sur 4 Le DNS qui marche une fois sur deux Réussi À revoir
Sur un pfSense tout juste installé dans Proxmox, les postes naviguent, mais la résolution DNS échoue de temps en temps et le VPN OpenVPN refuse de s'établir. Les règles sont correctes. Quelle est la cause la plus probable ? Où corriges-tu ?
Voir la réponseMasquer la réponse de l'exercice 3
Le déchargement matériel des sommes de contrôle n'a pas été désactivé : avec des cartes VirtIO, des paquets UDP (DNS, OpenVPN) partent avec une somme de contrôle invalide et sont rejetés par le destinataire. Correction : System > Advanced > Networking, cocher Disable hardware checksum offload, enregistrer, puis redémarrer le pare-feu.
Tu avais trouvé ?
Exercice 4 sur 4 Retrouver l'accès Réussi À revoir
Après une fausse manipulation dans Interfaces > LAN, l'interface LAN de pf1 a pris l'adresse 192.168.10.226/28 et plus personne n'accède à l'interface web. Comment rétablis-tu l'accès, sans perdre le reste de la configuration ?
Voir la réponseMasquer la réponse de l'exercice 4
Par la console de la machine virtuelle dans Proxmox (qui ne dépend pas du réseau) : option 2 Set interface(s) IP address, interface LAN, adresse 192.168.10.222, masque 28, sans passerelle ni DHCP. L'option 15 Restore recent configuration permet aussi de revenir à la configuration enregistrée juste avant l'erreur. Ni l'une ni l'autre ne touche aux règles ou aux VPN.
Tu avais trouvé ?