Introduction#
L’objectif de cette infrastructure est de permettre aux appareils de mon réseau local (LAN) ou à distance via VPN d’accéder de manière sécurisée à mes services auto-hébergés, tels que Gitea ou Paperless NGX. Pour y parvenir, je m’appuie sur plusieurs outils open-source, chacun ayant un rôle bien défini :
- pfSense : agit comme passerelle principale, serveur DNS et DHCP.
- Nginx : reverse proxy pour tous les services internes.
- Proxmox : hyperviseur hébergeant toutes les machines virtuelles.
- Pi-hole : serveur DNS pour le trafic interne.
Couche de virtualisation : Proxmox VE#
Architecture#
Mon installation actuelle fonctionne sur un nœud Proxmox unique, hébergé sur un mini-PC AMD avec deux interfaces réseau et cinq machines virtuelles.
Topologie réseau :
- Périphérique réseau 0 : Port Ethernet connecté au routeur domestique (accès Internet).
- Périphérique réseau 1 : Non connecté pour l’instant (réservé pour de futurs VLAN).
- Pont Linux 0 (vmbr0) : Connecté au Périphérique réseau 0 → 192.168.1.0/24.
- Pont Linux 1 (vmbr1) : Connecté au Périphérique réseau 1 → 192.168.100.0/24.
- VM Infra : Connectée uniquement à vmbr1.
- VM pfSense : Connectée à vmbr0 et vmbr1.
- VM Dev
- VM Media
Couche réseau : pfSense et DNS#
pfSense#
pfSense est la pièce maîtresse de mon réseau, gérant le trafic entre les différents ponts et réseaux dans Proxmox.
Interfaces :
- LAN : Liée au Pont Linux 0 (réseau domestique).
- PLAN : Liée au Pont Linux 1 (infrastructure interne).
- DMZ : Réservée aux services exposés (non connectée pour l’instant).
- VPN1 : Connexion NATée vers le routeur domestique.

Configuration DNS#
- DNS PLAN : Pi-hole s’exécute sur la VM Infra et agit comme résolveur DNS principal pour le réseau PLAN.
- DNS LAN : Le résolveur DNS de pfSense est utilisé côté LAN. Le routeur domestique utilise l’adresse IP de pfSense comme serveur DNS principal, ce qui permet à tous les appareils du LAN de résoudre les noms d’hôtes internes.
Configuration DHCP#
- LAN DHCP: Le serveur DHCP du LAN est la box internet.
- PLAN DHCP: Le serveur DHCP du PLAN est la VM pfsense, cela permet d’attribuer des IP statiques par adresses MAC aux VM.
Couche applicative : Nginx#
Déploiement et automatisation#
- Nginx et Certbot sont déployés via Ansible dans des conteneurs Docker, en utilisant une approche GitOps.
- Les fichiers de configuration sont stockés dans Gitea, et Semaphore exécute automatiquement les playbooks de déploiement (planifiés via cron pour Certbot et via requête HTTP vers Semaphore dans la CI/CD pour Nginx).
- Ansible Vault stocke les identifiants de manière sécurisée.
- Le conteneur Nginx et le docker Certbot partagent un volume Docker pour transmettre au nginx les certificats SSL générés avec Let’s Encrypt.
Logique de passerelle#
Mon routeur domestique ne permettant pas le routage direct vers un autre réseau que le WAN, pfSense utilise le NAT pour rediriger correctement les requêtes.
Exemple : Accès à gitea.quentinmarques.com
- Le routeur domestique utilise pfSense comme serveur DNS.
- Un client demande gitea.quentinmarques.com, pfSense le résout vers sa propre IP LAN.
- pfSense effectue une redirection DNAT, transférant le port 443 de son interface LAN vers le port 443 de la VM Infra dans le réseau PLAN.
- Le SNAT garantit que les paquets de réponse sont correctement renvoyés vers le client.
- Enfin, Nginx sur la VM Infra achemine la requête vers la VM:PORT hébergeant Gitea.

Leçons apprises#
- Expérience pratique avec pfSense, Proxmox et Nginx.
- Approfondissement des concepts réseau tels que le NAT grâce à la configuration et au dépannage.
- Amélioration des compétences en documentation technique et création de diagrammes, facilitant la structuration des idées et la maintenance future.
Prochaines étapes#
- Segmentation VLAN : Améliorer l’isolation entre les réseaux et préparer l’évolutivité.
- Terraform pour Proxmox : Automatiser le provisionnement et la configuration des machines virtuelles.

