Présentation

Nous apprenons 80% de ce que nous expérimentons personnellement. C'est dans cet esprit que le projet Home Lab a été initié. Son objectif est de créer un environnement d'apprentissage, d'expérimentation et de maîtrise des principaux aspects des services réseau et de l'administration de serveurs. En combinant matériel, logiciels et principes de mise en réseau, ce laboratoire est conçu pour me fournir une plateforme complète pour l'application pratique des connaissances théoriques et un environnement d’expérimentation des différents outils et concepts découverts au cours de ma veille.

Contexte et Enjeu

Le contexte actuel de l'informatique exige une compréhension approfondie des réseaux et des serveurs, ainsi que la capacité à gérer des infrastructures complexes. Le défi est de disposer d'un environnement où je peux expérimenter en toute liberté, sans risque pour des systèmes en production. Le projet Home Lab répond à ce besoin en me fournissant un espace dédié à l'apprentissage et à l'expérimentation, tout en relevant les enjeux cruciaux liés à la sécurité, à la disponibilité et à la performance des systèmes informatiques.

Etapes

homelab
Architecture du réseau

Pour des soucis de confidentialité, les caractéristiques complètes des équipements ou des services ne seront pas incluses dans le descriptif des étapes.

Conception de l'infrastructure

J’ai acheté et configuré un routeur TP-Link pour gérer le réseau local. Il me permet d’avoir un réseau WiFi autres que celui de la box du fournisseur d’accès internet (FAI) que j’ai désactivé. Il me permet d’avoir un serveur DHCP autre que celui de la box du FAI. Cela me permet de ne pas dépendre des fonctionnalités limitées ou des éventuelles restrictions imposées par la box du FAI, tout en offrant une plus grande flexibilité et un contrôle total sur la configuration et la gestion de mon réseau local. Le routeur TP-Link est connecté au réseau de la box du FAI avec une IP fixe. Ce qui me permet de faire des redirections de port vers le routeur puis ensuite vers la bonne machine virtuelle. Cela me permet d’accéder à mon réseau local depuis l’extérieur sans exposer mes services sur internet sans compromettre la sécurité de mon réseau local. De même, en cas de changement de FAI, je peux simplement reconfigurer les paramètres de connexion WAN sur mon routeur TP-Link sans avoir à modifier toute l'infrastructure de mon réseau local. Cela garantit une transition en douceur et minimise les interruptions de service.

Configuration réseau

J’ai attribué des adresses statiques au serveur et aux machines virtuelles. J’ai configuré la plage DHCP du routeur pour que les équipements qui se connectent au réseau local aient une adresse dynamique.

Installation des composants logiciels

Dans le domaine des technologies de l'information, la virtualisation est une technique essentielle qui permet de maximiser l'utilisation des ressources matérielles tout en offrant une flexibilité et une isolation accrues. Je vais décrire l'installation et la configuration de divers composants logiciels sur un mini-PC équipé de Debian 12, avec l'utilisation de KVM/QEMU pour la gestion de machines virtuelles (VM). L'objectif est de créer un environnement réseau sécurisé et personnalisable, idéal pour le développement, le déploiement et les tests d'applications et services.

Installation de Debian 12 et KVM/QEMU

L’installation de Debian 12 sur le mini-PC constitue la base de notre environnement virtuel. Debian 12, connue pour sa stabilité et sa robustesse, est une distribution Linux idéale pour les serveurs et les environnements de développement. Après avoir téléchargé l'image ISO de Debian 12, j’ai procédé à l'installation du système d'exploitation sur le mini-PC. Une fois l’installation de Debian 12 terminée, l'étape suivante a été la configuration de KVM (Kernel-based Virtual Machine) et QEMU (Quick EMUlator). KVM, intégré dans le noyau Linux, permet la création de machines virtuelles avec des performances proches de celles d’un système natif. QEMU, quant à lui, est un émulateur et un virtualiseur qui peut utiliser KVM pour exécuter des machines virtuelles avec une accélération matérielle.

Pour installer KVM et QEMU, j'ai utilisé les commandes suivantes :

sudo apt update && sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

Après l’installation, il est important de vérifier que le service libvirtd est en cours d’exécution :

sudo systemctl enable --now libvirtd

Ces étapes ont permis de préparer mon environnement pour la création et la gestion de machines virtuelles.

Création et Configuration du Serveur WireGuard

La sécurité étant une priorité, j’ai décidé d’implémenter un serveur VPN (Virtual Private Network) à l’aide de WireGuard. WireGuard est un protocole VPN moderne, connu pour sa simplicité, sa rapidité et sa sécurité. Il permet des connexions sécurisées entre les dispositifs, ce qui est essentiel pour accéder au réseau local depuis l’extérieur.

J’ai créé une machine virtuelle (VM) dédiée pour le serveur WireGuard. Voici les étapes essentielles de l'installation de WireGuard sur cette VM :

sudo apt install wireguard

Après l’installation, la configuration de WireGuard nécessite la création de clés privées et publiques, ainsi que la configuration des interfaces réseau. Les fichiers de configuration se trouvent généralement dans `/etc/wireguard/` :

wg genkey | tee privatekey | wg pubkey > publickey

Ensuite, j’ai configuré l’interface WireGuard dans le fichier `/etc/wireguard/wg0.conf` :

[Interface]
PrivateKey = {contenu de privatekey}
Address = 10.0.0.1/24
ListenPort = 51820
[Peer]
PublicKey = {clé publique du client}
AllowedIPs = 10.0.0.2/32

Enfin, pour démarrer le serveur WireGuard :

sudo wg-quick up wg0

Avec cette configuration, le serveur WireGuard est opérationnel, offrant une passerelle sécurisée pour se connecter au réseau local depuis n’importe où.

Utilisation d’une VM comme Sandbox

Pour les tests et expérimentations, j’ai créé une machine virtuelle (VM) supplémentaire avec Debian 12. Cette machine virtuelle est utilisée comme sandbox. Cette VM est un environnement isolé où des tests peuvent être réalisés sans risque d’affecter les autres systèmes. Les développeurs et les administrateurs système utilisent souvent des sandbox pour tester des applications, exécuter des scripts, ou expérimenter de nouvelles configurations. L’installation de cette VM suit les mêmes étapes que l’installation initiale de Debian 12, mais avec des ressources allouées spécifiques pour s’assurer qu’elle n’interfère pas avec les autres services en cours d’exécution. Une fois la VM sandbox configurée, des snapshots (instantanés) réguliers sont créés pour permettre de revenir à un état antérieur en cas de besoin. Cela permet une grande flexibilité et un environnement de test sûr.

Gestion des Conteneurs avec Docker

Docker est un outil puissant pour la création, le déploiement et la gestion de conteneurs. Les conteneurs sont des unités légères et portables qui permettent aux développeurs d’empaqueter une application et toutes ses dépendances afin qu’elle puisse être exécutée de manière cohérente dans n’importe quel environnement. Pour gérer les conteneurs dans mon infrastructure, j’ai installé Docker sur une machines virtuelles basé sur Debian 12.

Pour installer Docker sur Debian 12 et vérifier son fonctionnement j’ai exécuté la commande ci-dessous :

curl https://raw.githubusercontent.com/ahokponou/variousscripts/main/linux-install-docker | bash

Configuration d’un Service DNS avec Dnsmasq

Pour un environnement réseau bien configuré, un service DNS fiable est essentiel. J’ai choisi Dnsmasq pour cette tâche. Dnsmasq est un serveur léger de DNS et de DHCP, parfait pour les petites à moyennes installations. Il fournit un service de mise en cache DNS et peut également agir comme serveur DHCP, ce qui simplifie grandement la gestion des adresses IP dans un réseau.

Pour installer Dnsmasq sur ma VM dédiée au service DNS, j’ai utilisé les commandes suivantes :

sudo apt install -y dnsmasq

La configuration de Dnsmasq est simple et se fait dans le fichier `/etc/dnsmasq.conf`. Voici un exemple de configuration minimale :

interface=eth0
bind-interfaces
domain-needed
bogus-priv
no-resolv
server=9.9.9.9
server=149.112.112.112

Cette configuration assure que Dnsmasq écoute uniquement sur l'interface eth0, utilise les serveurs DNS de Quad9 pour la résolution, et ne résout pas les noms de domaines sans point (ex. ‘localhost’). Dnsmasq contribue à une résolution rapide et fiable des noms de domaine au sein du réseau, améliorant ainsi l'efficacité et la performance de l'ensemble de l'infrastructure.

Un Environnement Réseau Sécurisé et Personnalisable

Les services VPN, DNS, et le serveur Docker installés dans les machines virtuelles me permettent de créer un environnement réseau sécurisé et personnalisé. Cette infrastructure est flexible et évolutive, capable de s'adapter à mes besoins. Elle offre une plateforme robuste pour développer, déployer, et tester diverses applications et services tout en maintenant un contrôle total sur la gestion et la configuration du réseau virtuel. La sécurité est renforcée par l'utilisation de WireGuard pour les connexions VPN, assurant que toutes les communications distantes sont cryptées et sécurisées. Le service DNS avec Dnsmasq garantit une résolution rapide et fiable des noms de domaine, crucial pour la fluidité des opérations réseau. Docker ajoute une couche supplémentaire de flexibilité en permettant l'exécution d'applications dans des conteneurs isolés. Cela simplifie le déploiement et la gestion des applications, tout en assurant qu'elles peuvent fonctionner de manière cohérente à travers différents environnements. En somme, l'installation et la configuration de ces composants logiciels sur un mini-PC avec Debian 12 et KVM/QEMU ont permis de créer une infrastructure réseau puissante et polyvalente. Cet environnement offre une plateforme idéale pour le développement, le déploiement et les tests, avec un haut degré de sécurité et de contrôle. Que ce soit pour des besoins de développement, d'expérimentation ou de production, cette infrastructure fournit les outils nécessaires pour gérer efficacement un réseau.

Acteurs

Le principal acteur impliqué dans ce projet est moi-même en tant qu’initiateur du projet et utilisateur principal du laboratoire.

Lendemains du Projet

Suite à la réalisation du projet Home Lab, les résultats obtenus sont multiples. J’ai acquis des compétences en gestion de réseau et d'administration de serveurs. Je suis capable de simuler des scénarios réels pour mieux comprendre les défis professionnels. J’ai créé une infrastructure qui démontre mon savoir-faire en tant qu’expert en systèmes d’information. L'impact de ce projet se mesure également par l'amélioration de mes compétences personnelles et professionnelles, ainsi que par ma capacité à relever de nouveaux défis dans le domaine de l’informatique.

Regard critiques et valeurs ajoutées

Ce projet Home Lab est une expérience enrichissante, qui me permet d'acquérir et de développer des compétences pratiques en gestion de réseau et d'administration de serveurs. Il m’a également permis d'explorer des scénarios réels et de mieux comprendre les enjeux et les défis rencontrés dans le monde professionnel. Enfin, cette expérience a renforcé la conviction que l'apprentissage par l'expérience personnelle est une méthode efficace pour développer des compétences techniques et pour progresser dans sa carrière professionnelle.

Conclusion

En créant cet environnement d'apprentissage et d'expérimentation, j'ai pu acquérir des compétences pratiques en gestion de réseau et en administration de serveurs, tout en explorant des scénarios réels et en relevant des défis concrets. Cette expérience m'a permis de démontrer mon savoir-faire en tant qu'expert en systèmes d'information et de consolider mes compétences personnelles et professionnelles. En mettant en place une infrastructure flexible et sécurisée, j'ai pu non seulement expérimenter différents outils et concepts, mais aussi simuler des situations professionnelles pour mieux comprendre les défis auxquels je pourrais être confronté dans ma carrière. Au-delà des compétences techniques acquises, cette expérience a également renforcé ma conviction dans l'importance de l'apprentissage par l'expérience personnelle. En expérimentant directement avec les technologies et en surmontant les obstacles rencontrés, j'ai pu développer une compréhension approfondie des concepts et des pratiques, ce qui m'aidera à relever de nouveaux défis dans le domaine de l’informatique. Ce projet a été une expérience enrichissante qui a eu un impact significatif sur mon développement professionnel et personnel. Il a ouvert de nouvelles perspectives et m'a préparé à affronter avec confiance les défis futurs dans le domaine de l'informatique.