Aller au contenu
Background Image
  1. Projects/

Architecture de mon Homelab avec pfSense, Proxmox, et Nginx

Sommaire

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.

diagramme

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

  1. Le routeur domestique utilise pfSense comme serveur DNS.
  2. Un client demande gitea.quentinmarques.com, pfSense le résout vers sa propre IP LAN.
  3. 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.
  4. Le SNAT garantit que les paquets de réponse sont correctement renvoyés vers le client.
  5. Enfin, Nginx sur la VM Infra achemine la requête vers la VM:PORT hébergeant Gitea.

diagramme


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.
Quentin Marques
Auteur
Quentin Marques
Future Architecte en Cybersecurity