🌐 LAB : Déploiement d'un Routeur/Pare-feu pfSense sous Proxmox
__
_ __ / _|___ ___ _ __ ___ ___
| '_ \| |_/ __|/ _ \ '_ \/ __|/ _ \
| |_) | _\__ \ __/ | | \__ \ __/
| .__/|_| |___/\___|_| |_|___/\___|
|_|
Rôle : Ingénieur Réseau / Administrateur d'Infrastructures Sécurisées
Mission : Concevoir et déployer une architecture réseau segmentée et virtualisée. L'objectif est d'isoler les services applicatifs (DMZ) du réseau de confiance (LAN) au travers d'une appliance de routage professionnelle (pfSense), en configurant le routage, le NAT, le filtrage de flux, les services DHCP et les tunnels VPN chiffrés (OpenVPN).
📚 Documentation : https://docs.netgate.com/pfsense/en/latest/config/
L'intérêt technique 🎯
- Séparation des couches (L2/L3) : Exploiter les ponts virtuels (Linux Bridges) pour créer des topologies propres —
vmbr0pour le LAN physique,vmbr2pour la DMZ isolée. - Maîtrise du NAT et du filtrage : Configurer le masquage d'adresses (MASQUERADE) pour la sortie internet et la redirection de ports (DNAT) pour les services exposés (Plex, VPN).
- Déploiement d'Appliance Réseau : Manipuler pfSense, un standard de l'industrie, pour implémenter des politiques de sécurité et des règles de pare-feu aux frontières de l'infrastructure.
- Tunnels VPN : Implémenter une infrastructure à clés publiques (CA/Certificats) et monter un tunnel OpenVPN (interface tun) pour acheminer le trafic de clients distants vers le sous-réseau privé.
🛠️ Architecture du Lab (Actuelle)
- Environnement : Serveur Proxmox VE (Hyperviseur Bare-Metal)
- Topologie Réseau :
| Bridge | Rôle | Adressage |
|---|---|---|
vmbr0 | LAN physique (Uplink WAN) | 192.168.1.0/24 |
vmbr2 | DMZ isolée (Switch virtuel pur) | 10.0.0.0/24 |
- pfSense (VM) :
- Interface WAN :
192.168.1.251(survmbr0— directement sur le LAN physique) - Interface LAN :
10.0.0.1(survmbr2— passerelle DMZ) - Cartes réseau paravirtualisées (VirtIO)
- Services : routage inter-VLANs, NAT, DHCP (DMZ), DNS Forwarder, OpenVPN, CrowdSec
- Interface WAN :
1️⃣ Création de la VM pfSense
Depuis l'interface Proxmox → Créer une VM :
ID : 1000
Nom : pfSense
ISO : pfSense 2.7.2
Type : Other (pas "Linux")
Disque : 20 Go | SSD Emulation : ✅ | Discard : ✅
RAM : 2048 Mo
CPU : 1
Pont : vmbr0 (⚠️ interface WAN)
Pare-feu Proxmox : décoché (⚠️ pfSense gère son propre filtrage)
Model : VirtIO
Avant de démarrer, ajouter une seconde interface réseau : Matériel > Ajouter > Carte réseau → Pont vmbr2, Pare-feu décoché.
Installation
Démarrer la VM → Console. L'installation est guidée, valider par défaut sauf :
- ⚠️ Lors du choix du disque dur, appuyer sur Espace pour cocher avant Entrée
Une fois terminée, éjecter l'ISO : Matériel > CD/DVD > N'utiliser aucun média.

2️⃣ Configuration Réseau pfSense
Au premier démarrage, pfSense demande de préciser les interfaces :
- VLANs :
no - WAN :
vtnet0 - LAN :
vtnet1
Passer le clavier en Azerty : 8) Shell → kbdcontrol -l /usr/share/vt/keymaps/fr.kbd → exit.
Interface WAN (192.168.1.251)
2) Set interface(s) IP address → 1 (WAN) :
DHCP? : n
IPv4 address : 192.168.1.251
Subnet : 24
Gateway : 192.168.1.254 (Box FAI)
IPv6 DHCP? : n
IPv6 address : (vide)
DHCP server on WAN : n
Revert to HTTP : n
Vérifier l'accès Internet : 7) Ping host → 8.8.8.8
Interface LAN / DMZ (10.0.0.1)
2) Set interface(s) IP address → 2 (LAN) :
DHCP? : n
IPv4 address : 10.0.0.1
Subnet : 24
Gateway : (vide)
IPv6 : (vide)
DHCP server : y
Start : 10.0.0.50
End : 10.0.0.150
Revert to HTTP : n

3️⃣ Configuration Initiale (Wizard)
Depuis une VM du réseau DMZ (vmbr2), ouvrir https://10.0.0.1 dans le navigateur.

Connexion avec admin / pfsense, puis suivre le Wizard :
- Hostname : pfSense
- Domain : pve-server.lan
- Primary DNS : 192.168.1.250 (AdGuard Home)
- Secondary DNS : 9.9.9.9
- Override DNS : décocher
- Timezone : Europe/Paris
- ⚠️ Décocher "Block RFC1918 Private Networks" (sinon le trafic LAN est bloqué)
- Admin password : mot de passe fort
Reload pour appliquer.
💡 Si problème de DNS après le wizard : Services > DNS Resolver → relancer le service (🔄).
💡 Message d'alerte ISC DHCP → System > Advanced > Networking → activer
Kea DHCP.
4️⃣ Redirection de Ports (Box FAI → pfSense)
La Box FAI redirige les ports directement vers pfSense (192.168.1.251) :
| Port | Protocole | Service |
|---|---|---|
| 1194 | UDP | OpenVPN |
| 32400 | TCP | Plex (relayé vers 10.0.0.10 par pfSense) |
Configuration dans l'interface d'administration de la Box FAI → NAT / Port Forwarding.
5️⃣ Serveur OpenVPN
Création du serveur VPN
Dans VPN > OpenVPN → onglet Wizards → Local User Access :
CA :
- Descriptive name : vpn
- Common Name : vpn
Certificat serveur :
- Descriptive name : vpn-cert-server
- Common Name : vpn-cert-server
Serveur OpenVPN :
- Description : vpn-remote-access
- IPv4 Tunnel Network : 10.42.0.0/24
- IPv4 Local Network : 10.0.0.0/24
Firewall :
- Firewall Rule : ✅
- OpenVPN rule : ✅
Utilisateur et certificat client
Dans System > User Manager → Add :
Username : user
Password : mot de passe fort
Certificate : ✅
- Descriptive name : user-vpn-cert
Vérifier dans System > Certificates → onglet Certificates : 2 certificats (serveur + utilisateur).
Export de la configuration client
Dans System > Package Manager > Available Packages → installer openvpn-client-export.
Puis VPN > OpenVPN → onglet Client Export :
- Host Name Resolution : remplacer
Interface IP AddressparOther - Host Name : saisir l'adresse IPv4 publique du serveur (
<IP_PUBLIQUE>)
Télécharger le fichier Inline Configurations → Most Clients ou OpenVPN Connect (iOS/Android).
Connexion au VPN
Installer OpenVPN Connect → Upload File → charger le fichier de configuration → Connect avec les identifiants créés.

Accéder à https://10.0.0.1/ depuis le navigateur → si la page pfSense s'affiche, le VPN fonctionne 🎉
6️⃣ Keep Alive (Maintien des connexions)
OpenVPN
Dans VPN > OpenVPN > Servers → éditer le serveur → Ping settings :
| Paramètre | Valeur |
|---|---|
| Inactivity Timeout | 600 |
| Ping interval | 10 |
| Ping timeout | 60 |
Firewall States
Dans System > Advanced > Firewall & NAT → Firewall Optimization Options → sélectionner Conservative.
Évite que pfSense ne coupe les connexions SSH silencieuses (vers Proxmox par exemple).
🎯 Validation de l'Architecture
- Isolation L2 et Distribution L3 : Le domaine de diffusion DMZ (
vmbr2) est étanche. pfSense agit comme passerelle exclusive (10.0.0.1/24) avec DHCP. - Résolution DNS : Intégration d'AdGuard Home (
192.168.1.250) + Unbound (résolveur récursif). pfSense agit comme relais DNS Forwarder. - Accès Distant (VPN) : Tunnel chiffré L3 OpenVPN (interface tun). Flux bidirectionnel entre le réseau tunnel (
10.42.0.0/24) et la DMZ (10.0.0.0/24).
🔄 Analyse de Flux : Paquet VPN entrant
1. Client externe → <IP_PUBLIQUE>:1194 (UDP)
2. Box FAI → Port Forward vers 192.168.1.251:1194 (pfSense WAN)
3. pfSense → Validation PKI, décapsulation OpenVPN
4. pfSense → Routage vers 10.0.0.0/24 (interface LAN/DMZ sur vmbr2)
📝 Note historique : Évolution de l'architecture
L'architecture initiale utilisait un pont de transit (
vmbr1, réseau192.168.10.0/24) entre Proxmox et pfSense. L'hyperviseur agissait comme routeur intermédiaire avec des règles NAT/iptables, créant un double NAT (Proxmox + pfSense).Cette topologie a été simplifiée en rattachant directement l'interface WAN de pfSense au réseau LAN physique (
vmbr0, IP192.168.1.251). Le pontvmbr1a été supprimé, les règles iptables de transit purgées, et les redirections de ports déplacées vers la Box FAI.Bénéfices : élimination du double NAT, réduction de la charge CPU sur l'hyperviseur, simplification du troubleshooting, et chaîne de routage plus lisible.
Cette évolution illustre le principe d'Efficience : moins il y a de nœuds de translation entre Internet et le pare-feu, plus le réseau gagne en robustesse.
📚 Références
- pfSense Documentation : https://docs.netgate.com/pfsense/en/latest/config/
- OpenVPN Connect : https://openvpn.net/client/