La plupart des homelabs commencent à plat : un Raspberry Pi qui fait tourner Pi-hole, un NAS, un mini PC avec Proxmox et une douzaine de conteneurs, le tout sur le réseau 192.168.1.0/24 distribué par le routeur de votre FAI. La smart TV et une caméra qui ne reçoit plus de mises à jour de firmware le partagent avec la page d'administration de votre NAS, et la redirection de port ouverte pour Jellyfin il y a deux ans l'est toujours.
Cet article conçoit un réseau de homelab qui isole les appareils IoT et les invités, expose les services en toute sécurité et se restaure facilement, puis le dessine.
Ce que le réseau doit faire
- Isolation. Les téléviseurs, les caméras et les téléphones des invités accèdent à Internet, pas à votre NAS ni à votre hyperviseur.
- Exposition sûre. Une seule entrée authentifiée et chiffrée, pas un port par service.
- Restauration. Quand un disque lâche, vous reconstruisez à partir des sauvegardes et d'un diagramme, pas de mémoire.
Le matériel : un modem du FAI en mode bridge, pour éviter le double NAT ; un pare-feu OPNsense ou pfSense CE, tous deux open source, qui route entre les VLAN et fait tourner DHCP, DNS et les VPN ; un switch administrable compatible VLAN 802.1Q ; un point d'accès qui associe des SSID à des VLAN ; un hôte Proxmox VE pour les VM et les conteneurs LXC ; et un NAS.
Le plan de VLAN
Choisissez un /16 dans les plages privées de la RFC 1918 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) et donnez un /24 à chaque VLAN. Évitez 192.168.0.0/24 et 192.168.1.0/24, courants sur les réseaux depuis lesquels vous vous connecterez chez vous, ainsi que 172.17.0.0/16 (le bridge par défaut habituel de Docker) et 100.64.0.0/10 (les adresses de Tailscale). Cet exemple utilise 10.23.0.0/16, avec l'ID du VLAN comme troisième octet.
| VLAN | Nom | Sous-réseau | Ce qu'on y trouve | Sortie autorisée |
|---|---|---|---|---|
| 10 | Management (administration) | 10.23.10.0/24 | Interfaces d'administration du pare-feu, du switch, de l'AP et de Proxmox | Mises à jour uniquement |
| 20 | Trusted (de confiance) | 10.23.20.0/24 | Vos ordinateurs portables et vos téléphones | Internet, proxy, administration depuis les postes d'admin |
| 30 | Servers (serveurs) | 10.23.30.0/24 | VM, conteneurs, NAS, proxy, Pi-hole | Internet pour les mises à jour |
| 40 | IoT | 10.23.40.0/24 | TV, enceintes, caméras, prises connectées | Internet uniquement |
| 50 | Guest (invités) | 10.23.50.0/24 | Visiteurs | Internet uniquement |
Les liens pare-feu–switch, switch–point d'accès et switch–Proxmox sont des trunks tagués ; la documentation d'OPNsense déconseille de mélanger des VLAN non tagués dans le trunk du pare-feu. Les autres appareils reçoivent des ports d'accès non tagués.
Sur Proxmox, rendez le bridge VLAN-aware et placez l'adresse de gestion de l'hôte sur le VLAN 10, comme dans la documentation réseau de Proxmox VE. Chaque VM reçoit alors son propre tag VLAN :
auto vmbr0
iface vmbr0 inet manual
bridge-ports eno1
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
auto vmbr0.10
iface vmbr0.10 inet static
address 10.23.10.5/24
gateway 10.23.10.1
Créez un SSID par VLAN sans fil : Trusted, IoT et Guest. Cisco Meraki recommande au plus trois SSID par point d'accès, car chaque SSID envoie sa propre balise (beacon) toutes les 100 ms au débit le plus bas.
Règles de pare-feu entre VLAN
OPNsense et pfSense évaluent les règles sur l'interface par laquelle le trafic entre, de haut en bas : la première règle qui correspond l'emporte, et tout ce qui ne correspond à aucune règle tombe sur le blocage par défaut. Les deux fonctionnent avec suivi d'état : autoriser Trusted à joindre le proxy sur le port 443 laisse aussi revenir les réponses.
Pour chaque VLAN, autorisez ce dont il a besoin, bloquez toutes les plages privées avec un alias nommé RFC1918, puis autorisez Internet. Sur l'interface IoT :
| # | Action | Source | Destination | Port | Pourquoi |
|---|---|---|---|---|---|
| 1 | Pass | IoT net | Pi-hole, 10.23.30.53 | 53 | DNS filtré |
| 2 | Block | IoT net | Les adresses du pare-feu lui-même | any | Pas de pages d'administration |
| 3 | Block | IoT net | Alias RFC1918 | any | Pas d'autres VLAN |
| 4 | Pass | IoT net | any | any | Internet |
La règle 2 couvre l'adresse WAN publique du pare-feu, que l'alias ne contient pas ; pfSense appelle cette destination This firewall (self). Les exceptions ciblées se placent au-dessus des blocages : Trusted vers le proxy sur 443, votre portable d'administration vers l'interface web de Proxmox sur 8006, Home Assistant vers IoT. L'alias ne couvre que l'IPv4 : si vos VLAN reçoivent des préfixes IPv6, bloquez-les aussi.
La diffusion vers la TV est la surprise habituelle. AirPlay et Google Cast découvrent les appareils grâce au multicast DNS sur 224.0.0.251, qui, comme le note Apple, n'est généralement pas routé entre sous-réseaux. Faites tourner un répéteur mDNS entre Trusted et IoT, comme le plugin os-mdns-repeater d'OPNsense, et autorisez Trusted à joindre la TV.
Services derrière un reverse proxy
Un seul reverse proxy placé dans le VLAN Servers, comme Caddy, Traefik ou Nginx Proxy Manager, termine le TLS et route selon le nom d'hôte, si bien que le pare-feu n'autorise le 443 que vers une seule adresse.
Utilisez des noms sous un domaine qui vous appartient, comme jellyfin.home.example.com. Évitez .local, que la RFC 6762 réserve au multicast DNS ; les noms sous .internal ou home.arpa fonctionnent en local, mais aucune CA publique n'émet de certificats pour eux.
Obtenez vos certificats auprès de Let's Encrypt avec le challenge DNS-01 : votre client ACME crée un enregistrement TXT sur _acme-challenge.<name> via l'API de votre fournisseur DNS, si bien que rien n'a besoin d'être joignable depuis Internet. C'est aussi le seul type de challenge qui délivre des certificats wildcard, et vous en voulez un. Let's Encrypt soumet chaque certificat aux journaux publics de Certificate Transparency, donc *.home.example.com publie un seul nom au lieu de la liste de vos services. Depuis Caddy 2.10, les autres sites réutilisent un certificat wildcard correspondant :
*.home.example.com {
tls {
dns cloudflare {env.CF_API_TOKEN}
}
abort
}
jellyfin.home.example.com {
reverse_proxy 10.23.30.21:8096
}
Il faut pour cela une version de Caddy compilée avec le module caddy-dns/cloudflare et un jeton limité à Zone.Zone:Read et Zone.DNS:Edit. Les certificats durent aujourd'hui 90 jours et ne dureront plus que 45 jours d'ici février 2028 : automatisez donc le renouvellement.
Options d'accès à distance
| Option | Ce que voit Internet | Effort | Compromis |
|---|---|---|---|
| Redirection du port 443 vers le proxy | Votre IP et la page de connexion de chaque application | Faible | La connexion de chaque application est la seule barrière ; ne fonctionne pas derrière un carrier-grade NAT |
| WireGuard sur le pare-feu | Un port UDP qui ignore les paquets non authentifiés | Moyen | Demande une IP publique joignable et une paire de clés par appareil |
| Tailscale | Rien en entrée | Faible | Dépend du service de coordination de Tailscale ou d'un Headscale auto-hébergé ; offre Personal gratuite au moment de la rédaction (novembre 2026) |
| Cloudflare Tunnel | Rien en entrée | Faible à moyen | Cloudflare termine le TLS et voit votre trafic ; votre domaine doit être chez Cloudflare |
WireGuard est un bon choix par défaut pour vous-même : d'après le livre blanc de WireGuard, il ne répond jamais aux paquets non authentifiés, donc les scanners ne peuvent pas le voir. Il lui faut tout de même un port entrant, ce que le carrier-grade NAT exclut ; une adresse WAN dans 100.64.0.0/10, la plage partagée de la RFC 6598, en est le signe révélateur.
Tailscale et Cloudflare Tunnel se connectent plutôt vers l'extérieur. Les relais DERP de Tailscale ne font que transmettre des paquets qui restent chiffrés par WireGuard, et un subnet router atteint le VLAN Servers sans client sur chaque VM. Un tunnel convient aux services partagés avec des personnes qui n'installeront pas de VPN ; Cloudflare Access peut ajouter une connexion. Le diagramme d'architecture zero trust explique pourquoi l'identité l'emporte sur l'emplacement réseau.
DNS et DHCP par VLAN
Le pare-feu sert le DHCP sur chaque VLAN, avec des réservations pour les serveurs. OPNsense active par défaut Unbound, un résolveur récursif avec validation. Faites tourner Pi-hole ou AdGuard Home dans le VLAN Servers pour Trusted et IoT : les deux filtrent publicités et traqueurs, portent les enregistrements locaux qui font pointer *.home.example.com vers le proxy et transmettent les autres requêtes à Unbound (comment fonctionne le DNS suit une résolution de bout en bout). Les invités utilisent directement le pare-feu. Faites tourner une deuxième instance de filtrage sur une autre machine : si la seule instance s'arrête, ces VLAN perdent la résolution de noms.
Sauvegardes et alimentation
Suivez la règle 3-2-1 : trois copies, deux types de stockage, une hors site. Vos VM sont la première copie, les sauvegardes nocturnes vers le NAS ou un Proxmox Backup Server la deuxième, et une copie chiffrée dans un bucket cloud la troisième. Proxmox Backup Server fait des sauvegardes incrémentales, dédupliquées et chiffrées que Proxmox présente comme sûres même sur des cibles auxquelles vous ne faites pas entièrement confiance. Le RAID et les snapshots ne sont pas des sauvegardes. Exportez la configuration du pare-feu (un fichier XML dans OPNsense et pfSense), conservez-la avec ce diagramme et testez les restaurations ; le diagramme d'architecture de reprise après sinistre couvre le RPO et le RTO.
Branchez le pare-feu, le switch, l'hôte Proxmox et le NAS sur un onduleur. Avec Network UPS Tools (NUT), la machine reliée à l'onduleur demande aux autres, via le réseau, de s'éteindre : le switch doit donc lui aussi être sur l'onduleur. Dimensionnez-le d'après la consommation mesurée à la prise et la courbe d'autonomie de la fiche technique : il vous faut des minutes, pas des heures.
Le diagramme réseau du homelab
Contenu du diagramme
- Internet
- OPNsense or pfSense
- Managed switch
- Access point
- VLAN 20 · Trusted
- Laptops and phones
- VLAN 40 · IoT
- TV, cameras, plugs
- VLAN 50 · Guest
- VLAN 30 · Servers
- Reverse proxy (Caddy)
- Proxmox VE host
- NAS (backups)
- Links
- deny inbound
- WireGuard UDP 51820
- trunk: 10–50
- trunk: 10, 20, 40, 50
- trunk: 10, 30
- HTTPS 443 from Trusted and VPN
- HTTP to apps
- nightly backups
- SSID home
- SSID iot
- SSID guest
Comment le lire :
- Rangée du haut : Internet, pare-feu, switch. Le WAN refuse tout trafic entrant sauf WireGuard sur UDP 51820 (en pointillé).
- Les trunks transportent des VLAN tagués : 10 à 50 vers le switch, 10, 20, 40 et 50 vers le point d'accès en PoE, 10 et 30 vers Proxmox.
- Les cadres sont des VLAN avec ID, nom et CIDR. Management, le VLAN 10, est le libellé sous le switch.
- Les arêtes bleu canard sont les flux autorisés : HTTPS 443 depuis Trusted et les clients VPN vers le proxy, puis HTTP vers les applications. Le gris en pointillé est la sauvegarde nocturne.
- Le point d'accès associe les SSID home, iot et guest aux VLAN 20, 40 et 50.
- Le bloc Markdown contient le plan de VLAN et les réglages ; la légende explique les couleurs des liens.
Dessiner clairement les diagrammes réseau de homelab
- Indiquez l'ID, le nom et le CIDR de chaque VLAN sur le cadre lui-même.
- Marquez les trunks avec les VLAN qu'ils transportent. Un VLAN absent d'un trunk est le bug classique.
- Dessinez le pare-feu comme le seul chemin entre VLAN, avec les flux autorisés étiquetés par port.
- Montrez le chemin d'entrée depuis l'extérieur, même s'il ne s'agit que d'un port UDP.
- Laissez de côté les conteneurs, les adresses MAC et les numéros de port du switch. Ils ont leur place sur un diagramme physique, comme l'explique le guide du diagramme de topologie réseau.
- Conservez-le avec vos sauvegardes de configuration et mettez-le à jour quand une règle change.
Le construire dans Archboard
- Connectez-vous avec Google ou GitHub et créez un diagramme.
- Depuis le pack Réseau, ajoutez sur une même ligne Internet, un Pare-feu libellé OPNsense ou pfSense et un Commutateur, puis un nœud Sans fil pour le point d'accès, en bas à droite.
- Ajoutez quatre cadres Sous-réseau pour les VLAN 20, 30, 40 et 50, chacun avec son nom et son CIDR.
- Dans Servers, ajoutez un Répartiteur de charge comme reverse proxy (le pack n'a pas de type proxy), un Serveur pour Proxmox et un Appareil dont le Type est réglé sur NAS. Ajoutez un Appareil pour un ordinateur portable dans Trusted et un Appareil IoT dans IoT.
- Reliez-les, réglez le type de liaison de chaque lien sur WAN, Ethernet, PoE ou Wi-Fi et étiquetez-le avec ses VLAN ou son SSID. Dessinez les flux autorisés en bleu canard, WireGuard et les sauvegardes en pointillé.
- Ajoutez une Légende réseau du pack Réseau, un bloc Markdown du pack Base avec le plan de VLAN et des libellés Texte du pack Base pour la règle de chaque VLAN.
Si vos applications sont décrites dans un compose.yaml, l'outil Docker Compose en diagramme esquisse la partie services, et la page des diagrammes réseau présente tout le pack. L'exemple utilise 15 nœuds de diagramme et reste dans les limites de l'offre Free ; c'est aussi la limite de l'offre Free par diagramme.
FAQ
Quels VLAN un homelab doit-il avoir ? En général cinq : administration, appareils de confiance, serveurs, IoT et invités. N'en ajoutez que lorsque des appareils ont besoin de règles différentes ; chaque VLAN ajoute des règles et souvent un SSID.
Faut-il un switch administrable pour les VLAN ? Oui, un switch administrable ou de type smart compatible 802.1Q, ainsi qu'un point d'accès qui associe des SSID à des VLAN. Les switchs non administrables ne peuvent pas placer de ports dans des VLAN.
Faut-il faire tourner OPNsense ou pfSense en VM sur Proxmox ? Cela économise un boîtier, mais chaque redémarrage de l'hôte prive toute la maison d'Internet. Un petit pare-feu dédié est plus facile à restaurer. Si vous virtualisez, donnez au WAN sa propre carte réseau et gardez un export de configuration hors de l'hôte.
Est-il sûr d'ouvrir un port pour un service auto-hébergé ? Cela expose la page de connexion de l'application sur Internet : ses mises à jour de sécurité deviennent votre défense. Préférez un VPN ; si vous devez rediriger un port, n'envoyez que le 443 vers le reverse proxy et ajoutez une authentification devant.
Puis-je utiliser Let's Encrypt pour des services uniquement internes ? Oui, avec DNS-01 : un enregistrement TXT prouve que vous contrôlez le domaine, donc le service n'a jamais besoin d'être joignable depuis Internet. Un certificat wildcard garde les noms de vos services hors des journaux Certificate Transparency.