Si comme moi, vous êtes en possession d'un Mac Mini Server de 2009 qui traîne dans un placard, vous pouvez lui donner une seconde vie en le transformant en un petit serveur maison. Avec ses 8 Go de RAM, ses 2 SSD de 500 Go et son processeur Intel Core 2 Duo de 2,53Ghz, ce Mac Mini Server est tout à fait capable de gérer plusieurs services essentiels pour un réseau domestique. Pourquoi recycler un Mac Mini Server en serveur ? Recyclage, économie et apprentissage : ces trois raisons suffisent pour se lancer ! Un serveur maison vous permet de centraliser vos services réseau, de tester des configurations et de sécuriser la connexion Internet.

En l’occurrence, notre Mac Mini Server sera utilisé pour :

  • Serveur DNS : pour gérer vos noms de domaine internes et améliorer la résolution des adresses locales.
  • Serveur DHCP : pour attribuer automatiquement les adresses IP aux appareils du réseau local.
  • Serveur VPN : pour accéder à votre réseau domestique de manière sécurisée depuis l’extérieur.
  • Accès SSH : pour administrer et configurer facilement le serveur à distance.
  • Et bien plus encore ...


Schéma de principe.

Lors de cet article, j'exposerai en détail l'installation et la configuration de chaque élément présenté dans le schéma ci-dessus. La démarche couvrira la mise en place du serveur principal Mac Mini Server, incluant le paramétrage des services réseau fondamentaux comme le serveur DHCP, le DNS BIND9 et l'accès VPN WireGuard. J'aborderai également le déploiement de la couche de virtualisation Docker sur le stockage SSD2, en explicitant la configuration de chaque conteneur, du filtrage AdGuard Home à la gestion de mots de passe via Vaultwarden. Enfin, l'article détaillera les mesures de sécurité indispensables, telles que les règles du pare-feu UFW, l'automatisation des bannissements avec Fail2ban et la mise en œuvre du script de sauvegarde quotidienne pour garantir la résilience de l'ensemble de l'infrastructure.

Ubuntu 22.04 LTS est un choix idéal pour un serveur maison. Stable, sécurisé et largement documenté. Il permet d’installer facilement tous les services dont on a besoin et de les gérer via le terminal ou à distance. Recycler un Mac Mini Server en serveur maison est une excellente manière de prolonger la durée de vie de ce Mac tout en ajoutant des fonctionnalités pratiques au réseau domestique. Avec Ubuntu 22.04 et quelques configurations, on obtient un serveur fiable, sécurisé et flexible, capable de gérer DNS, DHCP, VPN et SSH, le tout dans un petit boîtier aluminium élégant et silencieux.

TABLE DES MATIÈRES

01 - Téléchargement de Ubuntu Server 22.04.05 LTE
02 - Création de la clé USB de démarrage avec Balena Etcher
03 - Installation de Ubuntu Server
04 - Adressage réseau du serveur
05 - Installation et configuration du serveur DHCP
06 - Installation et configuration du serveur SSH
07 - Installation et configuration du serveur DNS
08 - Installation et configuration du serveur VPN
09 - Préparation du SSD n°2
10 - Découverte du réseau avec Avahi et Samba
11 - Sauvegarde des fichiers de configuration du serveur
12 - Configuration de Fail2ban
13 - Conclusion

 

1 - TÉLÉCHARGEMENT DE UBUNTU SERVER 22.04.05 LTE

La première étape consiste à récupérer l’image officielle d’Ubuntu Server. Rendez-vous sur le site Ubuntu Server pour télécharger la version 22.04.5 LTS. L’option “LTS” signifie Long Term Support, garantissant des mises à jour de sécurité pendant 5 ans. Téléchargez la version amd64 si votre ordinateur utilise un processeur Intel 64 bits. Vérifiez au préalable, que vous avez suffisamment d’espace disque sur votre ordinateur. Au moins 2 Go pour le fichier ISO. Après le téléchargement, vous pouvez vérifier le fichier ISO avec un checksum SHA256. Cette étape permet de s’assurer que le fichier n’a pas été corrompu ou modifié pendant le téléchargement.
Exemple de commande sur Linux/macOS :

sha256sum ubuntu-22.04.5-live-server-amd64.iso


Utilisation du Terminal poiur vérifier l'intégrité du fichier téléchargé.

💡 Conservez le fichier ISO dans un dossier dédié, il pourra servir pour créer plusieurs clés USB ou installer Ubuntu sur d’autres machines.
 

2 - CRÉATION DE LA CLÉ USB DE DÉMARRAGE AVEC BALENA ETCHER

Pour installer Ubuntu, il faut créer une clé USB de démarrage. Balena Etcher est une application gratuite disponible pour Windows, macOS et Linux. C'est une application simple et sûre pour concevoir une clé USB bootable. Utilisez une clé USB d'une capacité minimum de 4 Go. Pensez à sauvegarder les données présentes dessus, car elles seront supprimées duant le processus de création.


L'application Balena Etcher.

Ouvrez L'application Balena Etcher. Sélectionnez le fichier Iso téléchargé précédement. Sélectionnez la clé de destination puis cliquez sur “Flash”. Attttendez la fin du processus. Le logiciel écrit l’ISO sur la clé et la rend bootable. Une fois le flash terminé, vous pouvez éjecter la clé USB en toute sécurité. Votre clé est maintenant prête à démarrer l’installation.

3 - INSTALLATION DE UBUNTU SERVER


Schéma de principe - Installation de la distribution Ubuntu 22.04.5.

Avec la clé USB prête, vous pouvez installer Ubuntu sur votre ordinateur. Insérez la clé USB dans l’ordinateur. Allumez ou redémarrez la machine. Accédez au menu de démarrage en maintenant la touche option de votre Mac. Sélectionnez la clé USB  présente sur l'affichage comme périphérique de démarrage. L’installateur d’Ubuntu Server se lance et vous guide à travers les différentes étapes. L’installation elle-même est guidée par l’interface d’Ubuntu. L’utilisateur choisit la langue, configure le clavier, donne un nom au serveur et crée un compte administrateur sécurisé. Le réseau peut être configuré en IP statique ou par DHCP, et l’installateur propose le partitionnement automatique du disque ainsi que l’installation de paquets essentiels, comme le serveur OpenSSH pour gérer le serveur à distance. Pendant l’installation, certaines options peuvent être utiles pour mettre à jour et configurer le serveur. Je vous conseille de sélectionner les options par défaut à chaque écran. Ci-dessou, les différentes étapes de l'installation.

💡 Gardez la clé USB d’installation. Elle peut servir à réparer le système ou réinstaller Ubuntu le cas échéant.



L'installateur d'Ubuntu.




L'installation d’Ubuntu Server 22.04 s’avère être une étape accessible et structurée pour tout administrateur système ou passionné d’informatique souhaitant déployer un serveur fiable. Avec son processus d’installation guidé et ses options de configuration flexibles, cette version permet de poser les bases d’un environnement sécurisé et performant. Que ce soit pour l’hébergement web, le stockage de données ou la gestion de services réseau, Ubuntu Server 22.04 offre une stabilité et une compatibilité à long terme.

4 - ADRESSAGE RESEAU


Schéma de principe - Adressage réseau.

L'installation d’Ubuntu Server ne se limite pas à l’installation des paquets. Elle inclut également une configuration réseau. Attribuer une adresse IP correcte, et surtout fixe, est crucial pour un serveur. Cela garantit que les services hébergés restent accessibles de manière constante. Cela facilite aussi la gestion des DNS et permet une administration stable du réseau. Ainsi, en combinant une configuration sécurisée et un adressage IP bien pensé, le serveur devient un outil fiable, prêt à répondre aux besoins des utilisateurs et des applications sans interruption ni confusion.

La commande ip a constitue le premier diagnostic vital de tout administrateur système. Elle interroge le noyau de votre serveur Ubuntu pour obtenir une cartographie précise de sa connectivité. Dans le jargon technique, elle affiche la configuration des interfaces réseau, qu'elles soient physiques comme une carte Ethernet ou virtuelles. À l'écran, le résultat se décompose en blocs numérotés. Le premier bloc, nommé lo pour loopback, est une interface interne permettant au serveur de communiquer avec lui-même sans passer par un réseau extérieur. On y trouve systématiquement l'adresse technique 127.0.0.1. C'est l'équivalent informatique d'un miroir. Les blocs suivants, portant des noms comme eth0 ou enp3s0, représentent vos véritables branchements. L'élément crucial à repérer est le terme inet suivi d'une série de chiffres. Il s'agit de l'adresse IPv4 du serveur, son immatriculation officielle qui permet aux autres machines de le localiser. Juste à côté, la mention UP confirme que la connexion est active, tandis que DOWN indiquerait une rupture de lien, souvent due à un câble débranché ou une erreur de configuration. Enfin, la mention link/ether dévoile l'adresse MAC, une identité physique propre au matériel qui ne change jamais, contrairement à l'adresse IP.

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:26:bb:5a:75:10 brd ff:ff:ff:ff:ff:ff inet 192.168.1.45/24 brd 192.168.1.255 scope global enp0s10 valid_lft forever preferred_lft forever inet6 fd00:192:168::45/64 scope global valid_lft forever preferred_lft forever inet6 fe80::226:bbff:fe5a:7510/64 scope link valid_lft forever preferred_lft forever

Le premier bloc, lo, est une interface virtuelle interne. Elle permet au serveur de se parler à lui-même. L'adresse 127.0.0.1est standard : c'est ce qu'on appelle la "boucle locale". Tant que ce bloc est présent, le système de communication de base du serveur fonctionne correctement. Le deuxième bloc, enp0s10, correspond à votre carte réseau physique, celle où l'on branche normalement un câble Ethernet. On y voit la mention UP, ce qui signifie que la carte est activée et fonctionnelle. L'adresse inet 172.16.0.2 est l'adresse IP locale de votre serveur : c'est grâce à ce numéro que les autres ordinateurs de votre réseau domestique ou d'entreprise peuvent lui envoyer des fichiers ou afficher ses pages web. On y trouve aussi l'adresse link/ether, un identifiant matériel unique au monde propre à votre carte.

Netplan est l'outil moderne d'Ubuntu pour gérer le réseau. Au lieu de configurer manuellement chaque paramètre avec des commandes volatiles, on écrit les instructions dans ce fichier de texte. Cela permet de définir de manière permanente si le serveur doit recevoir une adresse automatique de votre box internet ou si vous préférez lui attribuer une adresse fixe, comme celle que nous avons vue précédemment (172.16.0.2). Le format utilisé dans ce fichier est le YAML, un langage qui repose sur l'alignement strict du texte. Si une ligne est légèrement trop décalée vers la droite ou la gauche, le serveur ne pourra plus se connecter. Utiliser cette commande revient à ouvrir le "panneau de contrôle" du serveur pour lui dicter ses règles de communication. Une fois le fichier enregistré, les modifications ne sont pas immédiates : il faudra ensuite demander au système de "lire" ce nouveau plan pour l'appliquer.

sudo nano /etc/netplan/01_ethernet_config.yaml
# =========================
# CONFIGURATION RÉSEAU DU SERVEUR
# =========================

network:

  # Version du format Netplan (toujours 2 sur Ubuntu 22.04)
  version: 2

  # Gestionnaire réseau utilisé (systemd-networkd = serveur, stable)
  renderer: networkd

  # Définition des interfaces réseau
  ethernets:

    # Nom de la carte réseau physique (Ethernet du Mac Mini Server)
    enp0s10:

      # Désactive l’attribution automatique d’adresse IPv4 (DHCP)
      dhcp4: no

      # Désactive IPv6 automatique
      dhcp6: no
      accept-ra: no

      # Adresse IP fixe du serveur sur ton réseau local
      addresses:
        - 172.16.0.2/16
        - fd00:172:16::2/64

      # Routes réseau (comment sortir du réseau local)
      routes:

        # Route par défaut : tout ce qui n’est pas local
        # sera envoyé vers la box Internet
        - to: 0.0.0.0/0
          via: 172.16.0.1

      # Serveurs DNS utilisés par cette machine
      nameservers:

        # DNS principal (ici ton propre serveur DNS local)
        addresses:
          - 172.16.0.2
          - fd00:172:16::2

        # Domaine local ajouté automatiquement aux recherches
        # Exemple : "nas" devient "nas.bsalado.lan"
        search: [bsalado.lan]
network: --> C’est le début de la configuration réseau.
version: 2 --> Indique la version du format de configuration (ici version 2, standard sur Ubuntu 22.04).
renderer: networkd --> Définit quel outil gère le réseau. networkd = service système léger (souvent utilisé sur les serveurs, sans interface graphique).
ethernets: --> Section pour configurer les cartes réseau filaires (Ethernet).
enp0s10: --> Nom de ta carte réseau. Chaque machine peut avoir un nom différent (ici enp0s10).
dhcp4: no --> Désactive le DHCP pour IPv4. Ça veut dire que tu définis une IP manuellement.
dhcp6: no --> Désactive le DHCP pour IPv6.
accept-ra: no -->
addresses:   --> Début de la liste des adresses IP fixes.
- 172.16.0.2/16 --> Ton adresse IPv4 locale. 172.16.0.2 = adresse de ta machine. /16 = masque réseau (équivaut à 255.255.0.0)
- fd00:172:16::2/64 --> Ton adresse IPv6 locale.
routes: --> Définit les routes réseau (comment atteindre d’autres réseaux).
- to: 0.0.0.0/0 --> Route par défaut (tout le trafic vers Internet).
via: 172.16.0.1 --> Passerelle (gateway) : l’adresse de ton routeur.
nameservers: --> Configuration des serveurs DNS (pour traduire les noms comme google.com en IP).
addresses: --> Liste des serveurs DNS.
- 172.16.0.2 --> Ton propre serveur comme DNS IPv4(probablement un service local type Bind).
- fd00:172:16::2 --> Ton propre serveur comme DNS IPv6(probablement un service local type Bind).
search: [bsalado.lan] --> Domaine de recherche local. Si tu tapes serveur, le système essaiera automatiquement serveur.bsalado.lan.

 

La commande ls -l /etc/netplan/01_ethernet_config.yaml est utilisée pour inspecter les propriétés spécifiques du fichier de configuration réseau. Le terme ls signifie "list" (lister) et l'option -l demande un affichage "long" ou détaillé. Contrairement à une simple lecture du contenu, cette commande permet de vérifier la "carte d'identité" du fichier lui-même : qui a le droit de le lire, qui peut le modifier et quelle est sa taille. Dans le résultat, vous verrez une série de lettres comme -rw-r--r--. C'est une information cruciale pour la sécurité : elle confirme que seul l'administrateur (root) possède le plein contrôle sur ce fichier sensible. Si les permissions étaient mal réglées, n'importe quel utilisateur du serveur pourrait modifier les réglages réseau et couper l'accès à la machine. 
La commande sudo chmod 600 /etc/netplan/01_ethernet_config.yaml est une mesure de sécurité stricte visant à verrouiller l'accès au fichier de configuration réseau. Le terme chmod signifie "change mode" (changer le mode) et permet de définir précisément qui peut lire ou modifier un fichier. Dans le langage Linux, le code numérique 600 est un verrou numérique : le premier chiffre (6) donne au propriétaire du fichier (l'administrateur système) le droit de lire et d'écrire, tandis que les deux zéros suivants (00) interdisent toute action à tous les autres utilisateurs du serveur. Sans cette commande, des utilisateurs curieux ou des programmes malveillants pourraient consulter le fichier pour y découvrir des informations sensibles, comme des clés de sécurité ou la structure interne de votre réseau.
En appliquant ce réglage, vous garantissez que seul le "cerveau" du serveur et son administrateur principal peuvent manipuler les réglages de connexion. C'est une étape de protection indispensable pour assurer l'intégrité de la machine, surtout si elle est exposée à internet.

sudo chmod 600 /etc/netplan/01_ethernet_config.yaml
ls -l /etc/netplan/01_ethernet_config.yaml
-rw------- 1 root root 1257 mai 9 15:37 /etc/netplan/01_ethernet_config.yaml

La séquence -rw------- est l'élément le plus important. Le premier tiret indique qu'il s'agit d'un fichier classique. Les lettres rw signifient que le propriétaire peut lire ("read") et écrire ("write"). Les six tirets suivants montrent que plus personne d'autre sur le serveur, absolument personne, n'a le droit de voir ou de toucher à ce document. C'est le niveau de confidentialité idéal pour un fichier de configuration sensible. Le reste de la ligne nous apprend que le fichier appartient à l'utilisateur root (le super-administrateur) et au groupe root. 

La commande sudo netplan apply est l'étape de validation finale. Jusqu'ici, vous avez modifié des fichiers texte et ajusté des permissions, mais le serveur utilisait toujours ses anciens réglages. Cette commande ordonne au système de lire immédiatement le fichier de configuration et de rendre les changements effectifs sans avoir à redémarrer l'ordinateur. C'est une opération délicate : en l'exécutant, le serveur coupe brièvement ses connexions actuelles pour les reconstruire selon vos nouvelles instructions. Si vous avez fait une erreur dans le texte du fichier (comme un espace en trop ou une adresse IP erronée), vous risquez de perdre l'accès à distance au serveur. Dans un contexte professionnel, cette commande est le moment de vérité. Si elle s'exécute sans afficher de message d'erreur, cela signifie que votre nouvelle configuration est syntaxiquement correcte et que le serveur communique désormais avec le monde selon vos nouveaux paramètres. C'est le signal que votre travail de configuration réseau est terminé et opérationnel.

sudo netplan apply

Ces trois commandes constituent la suite logique pour vérifier que votre serveur Ubuntu n'est pas seulement configuré, mais qu'il est capable de dialoguer avec le reste du monde. C'est l'étape du test de communication. Comme nous l'avons vu précédemment, cette commande dresse l'état des lieux de vos interfaces. Elle permet ici de confirmer que, suite au netplan apply, votre adresse IP est bien celle que vous avez configurée (par exemple 172.16.0.2). C'est la vérification de votre identité locale.

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:26:bb:5a:75:10 brd ff:ff:ff:ff:ff:ff inet 172.16.0.2/16 brd 172.16.255.255 scope global enp0s10 valid_lft forever preferred_lft forever inet6 fd00:172:16::2/64 scope global valid_lft forever preferred_lft forever inet6 fe80::226:bbff:fe5a:7510/64 scope link valid_lft forever preferred_lft forever

Le rôle de cette commande est d'afficher la table de routage, c'est-à-dire le plan de circulation du serveur. Elle indique au serveur quel chemin prendre pour sortir du réseau local. Le résultat affiché ici révèle une organisation structurée en plusieurs zones. La première ligne, default via 172.16.0.1, est la plus cruciale. Le mot default signifie "pour tout ce qui n'est pas chez moi". Elle indique que pour aller sur Internet (consulter un site, faire une mise à jour), le serveur doit passer par la porte 172.16.0.1, qui est votre routeur ou votre box. C'est la sortie principale du bâtiment.

ip route
default via 172.16.0.1 dev enp0s10 proto static 10.10.0.0/24 dev wg0 proto kernel scope link src 10.10.0.1 172.16.0.0/16 dev enp0s10 proto kernel scope link src 172.16.0.2 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 172.18.0.0/16 dev br-f4c30fdb5954 proto kernel scope link src 172.18.0.1 172.19.0.0/16 dev br-60d25c8d4387 proto kernel scope link src 172.19.0.1 172.20.0.0/16 dev br-701b387aeb11 proto kernel scope link src 172.20.0.1

La commande ping -c 3 172.16.0.1 est un test de résonance. Le nom "ping" provient du bruit que fait un sonar. Son rôle est d'envoyer trois petits paquets de données à l'adresse 172.16.0.1 (votre routeur) et d'attendre qu'il les renvoie. L'option -c 3 (pour "count") limite l'opération à trois essais, ce qui évite que le serveur ne continue indéfiniment. Le résultat de cette commande confirme que la communication entre votre serveur Ubuntu et votre routeur (la passerelle) est excellente. C'est le signal "vert" qui indique que la première étape de la connexion vers l'extérieur est parfaitement opérationnelle. L'analyse détaillée des lignes nous apporte trois preuves de bon fonctionnement :

  • D'abord, la mention 64 bytes from 172.16.0.1 répétée trois fois montre que chaque message envoyé a reçu une réponse immédiate. Le chiffre icmp_seq (1, 2, 3) prouve qu'aucun message n'a été oublié ou perdu en chemin. C'est la preuve que le câble réseau et la configuration de la carte sont corrects.
  • Ensuite, le temps de réponse (time=0.382 ms en moyenne) est extrêmement rapide. Une milliseconde correspond à un millième de seconde ; ici, le serveur met moins d'une demi-milliseconde pour faire l'aller-retour. Pour vos lecteurs, c'est l'équivalent d'une conversation fluide sans aucun délai perceptible, ce qui est typique d'un réseau local en parfaite santé.
  • Enfin, le résumé final indique 0% packet loss. C'est le chiffre le plus rassurant : la totalité des données transmises est arrivée à destination. Le réseau est donc stable et fiable. À ce stade de votre article, vous avez démontré que le serveur n'est plus isolé : il a une identité propre et il discute avec succès avec son premier interlocuteur sur le réseau.
ping -c 3 172.16.0.1
PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data. 64 bytes from 172.16.0.1: icmp_seq=1 ttl=64 time=0.411 ms 64 bytes from 172.16.0.1: icmp_seq=2 ttl=64 time=0.327 ms 64 bytes from 172.16.0.1: icmp_seq=3 ttl=64 time=0.408 ms --- 172.16.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2037ms rtt min/avg/max/mdev = 0.327/0.382/0.411/0.038 ms

ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=6.81 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=119 time=4.99 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=119 time=3.97 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 3.969/5.256/6.814/1.177 ms

La commande sudo apt update est la première étape indispensable de toute maintenance sur Ubuntu. Son rôle est de demander au serveur de consulter les catalogues officiels des logiciels sur Internet pour voir si des mises à jour ou de nouvelles versions sont disponibles. Contrairement à ce que l'on pourrait croire, cette commande n'installe absolument rien. Elle se contente de mettre à jour la "liste de courses" du serveur. C'est comme si votre serveur téléphonait à la bibliothèque centrale pour demander : « Est-ce qu'il y a des versions plus récentes des livres que j'ai sur mes étagères ? ». Le résultat de la commande sudo apt update confirme que votre serveur est parfaitement à jour et synchronisé avec les dépôts de logiciels officiels. C'est le scénario idéal pour un administrateur : le système est dans son état le plus stable et le plus sécurisé. L'analyse des lignes révèle plusieurs informations importantes sur la santé de votre serveur. La répétition du mot Atteint (ou Hit en anglais) indique que le serveur a contacté avec succès tous les magasins de logiciels distants (comme ceux d'Ubuntu, de Docker ou de PHP) et qu'aucune modification n'a été détectée depuis la dernière vérification. Le serveur ne télécharge rien d'inutile, ce qui économise de la bande passante.

sudo apt update
Atteint :1 http://fr.archive.ubuntu.com/ubuntu jammy InRelease Atteint :2 http://fr.archive.ubuntu.com/ubuntu jammy-updates InRelease Atteint :3 http://fr.archive.ubuntu.com/ubuntu jammy-backports InRelease Atteint :4 http://security.ubuntu.com/ubuntu jammy-security InRelease Atteint :5 https://download.docker.com/linux/ubuntu jammy InRelease Atteint :6 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy InRelease Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Lecture des informations d'état... Fait Tous les paquets sont à jour.

La commande sudo apt upgrade -y est l'action concrète qui fait suite à la vérification des listes. Son rôle est de télécharger et d'installer réellement les nouvelles versions des logiciels, des bibliothèques de sécurité et des composants du système. L'ajout du paramètre -y (pour "yes") permet d'automatiser le processus : le serveur ne s'arrêtera pas pour vous demander votre accord avant chaque installation, il accepte tout par avance pour gagner du temps. Dans le cadre de votre article, cette commande représente l'entretien actif du serveur. C'est l'équivalent de lancer une mise à jour globale sur un smartphone pour corriger des bugs ou boucher des trous de sécurité.

sudo apt upgrade -y
Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Lecture des informations d'état... Fait Calcul de la mise à jour... Fait Get more security updates through Ubuntu Pro with 'esm-apps' enabled: php-symfony-config php-symfony-dependency-injection libheif1 libjs-jquery-ui php-symfony-cache php-symfony-var-exporter php-phpseclib php-twig libjs-bootstrap4 php-symfony-expression-language libde265-0 php-symfony-filesystem Learn more about Ubuntu Pro at https://ubuntu.com/pro 0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

Le résumé de l'adressage réseau sur votre serveur Ubuntu peut se diviser en trois grandes étapes : l'identification, la configuration et la validation. Ces commandes forment la base du travail d'un administrateur pour s'assurer que la machine communique correctement avec le monde extérieur.

L'identification du matériel :
Tout commence par la commande ip a. Elle permet de dresser l'inventaire des portes de communication du serveur. C'est ici que l'on vérifie si la carte réseau est active et quelle est son identité numérique actuelle. On y distingue les interfaces physiques, comme enp0s10 qui nous relie au câble, et les interfaces virtuelles comme wg0 (le tunnel sécurisé) ou lo (la boucle interne).

La configuration et la sécurité :
Pour modifier ces paramètres de façon permanente, on utilise l'éditeur de texte avec sudo nano /etc/netplan/01_ethernet_config.yaml. C'est dans ce fichier que l'on écrit les règles du jeu : quelle adresse IP utiliser et par quelle porte sortir. Une fois le plan rédigé, on utilise sudo netplan apply pour que le serveur lise et applique instantanément ces nouvelles consignes. La sécurité de ces réglages est assurée par deux commandes de contrôle. D'abord, sudo chmod 600 verrouille le fichier pour que seul l'administrateur puisse le lire, évitant ainsi que des regards indiscrets ne découvrent la structure de votre réseau. Ensuite, ls -l sert de preuve visuelle pour confirmer que ce verrou est bien en place et que le fichier appartient aux bonnes personnes.

CONCLUSION

L'adressage réseau représente le système de coordonnées fondamental permettant la circulation des données au sein d'une infrastructure numérique. Il repose sur l'attribution d'une identité unique, l'adresse IP, qui fait office de boîte aux lettres pour chaque équipement connecté. Sans cette structure rigoureuse, les paquets d'informations seraient incapables de trouver leur destination, rendant toute communication impossible entre les serveurs et les terminaux. L'architecture d'une adresse se divise systématiquement en deux portions distinctes grâce au masque de sous-réseau. La première partie identifie le réseau global, fonctionnant comme le nom d'une rue, tandis que la seconde spécifie l'hôte, correspondant au numéro de l'habitation.
Cette distinction est cruciale car elle permet aux routeurs de diriger le trafic de manière efficace sans avoir à connaître l'emplacement exact de chaque appareil sur la planète. Le masque de sous-réseau agit alors comme un filtre binaire qui définit avec précision la frontière entre ces deux identités, déterminant par la même occasion la capacité d'accueil en nombre de machines pour un segment donné.
On distingue également deux grandes philosophies d'adressage qui cohabitent pour assurer la fluidité du trafic. L'adressage privé est utilisé à l'intérieur des réseaux locaux, permettant à des millions d'entreprises et de foyers d'utiliser les mêmes plages de numéros sans conflit, car ils restent isolés du monde extérieur. À l'opposé, l'adressage public est unique à l'échelle mondiale et sert de point d'entrée sur Internet. Pour que ces deux mondes communiquent, une passerelle par défaut est indispensable ; elle reçoit les données destinées à l'extérieur et assure la traduction pour que l'information revienne au bon destinataire local, garantissant ainsi une connectivité globale tout en préservant la structure interne du réseau.

 

5 - INSTALLATION ET CONFIGURATION DU SERVEUR DHCP

 image 002
Schéma de principe - Installation serveur DHCP.

Le serveur DHCP agit comme le majordome numérique de votre réseau. Son rôle fondamental est d'automatiser une tâche autrefois longue et complexe à savoir, l'attribution d'adresses IP à chaque appareil qui se connecte au réseau. Sans lui, vous devriez configurer manuellement chaque ordinateur, smartphone ou tablette en leur donnant un numéro unique pour qu'ils puissent communiquer, au risque de créer des conflits si deux appareils choisissaient le même. Le fonctionnement de ce service repose sur un dialogue invisible et instantané. Lorsqu'un nouvel appareil est connecté, il lance un appel général dans le réseau. Le serveur Ubuntu, grâce à sa configuration intercepte cet appel et propose une adresse disponible piochée dans une réserve prédéfinie. Une fois l'offre acceptée, le serveur enregistre l'appareil et lui transmet non seulement son adresse IP, mais aussi les informations cruciales pour naviguer sur Internet, comme l'adresse de la box (la passerelle) et les serveurs de noms (DNS). 
L'analyse de cette installation montre que le serveur Ubuntu devient le point de contrôle central de la connectivité. En activant ce service, vous transformez une machine statique en un moteur dynamique capable de gérer intelligemment des dizaines d'appareils, garantissant que chacun reçoive sa propre "identité" réseau sans aucune erreur humaine et de manière totalement transparente pour les utilisateurs.

L'installation du serveur DHCP est le point de départ technique de votre projet. Il ordonne au système d'aller chercher et d'installer l'application qui transformera votre serveur Ubuntu en un distributeur automatique d'adresses IP. L'ajout du paramètre -y est une astuce d'administrateur. Il répond automatiquement "Oui" à toutes les questions de confirmation posées par le système (comme la validation de l'espace disque utilisé). Cela permet à l'installation de se dérouler d'une traite sans que vous ayez besoin de rester devant l'écran.

sudo apt install isc-dhcp-server -y

Le fichier /etc/default/isc-dhcp-server agit comme la tour de contrôle opérationnelle qui fait le pont entre le logiciel et le système d'exploitation Ubuntu. Son rôle principal est de définir les paramètres d'environnement qui seront utilisés au moment précis où le service sort de son état d'arrêt. Contrairement au fichier de configuration principal qui gère les adresses IP, celui-ci dicte au système comment et où lancer le processus lui-même. L'aspect le plus critique de ce fichier est la directive INTERFACESv4. Dans un serveur moderne disposant souvent de plusieurs ports réseau (Wi-Fi, Ethernet local, connexion Internet), cette ligne sert de garde-fou. En y spécifiant le nom logique de votre interface (comme eth0 ou enp0s3), vous ordonnez au serveur de ne "parler" que sur ce canal précis. Cela empêche votre serveur de tenter de distribuer des adresses IP sur le réseau de votre fournisseur d'accès, ce qui pourrait provoquer un conflit majeur ou une suspension de votre ligne.
Une autre section importante concerne les options de démarrage. Vous pouvez y définir si le serveur doit fonctionner en mode "IPv4", "IPv6" ou les deux simultanément. C'est également ici que l'on peut forcer le service à utiliser un fichier de configuration alternatif si nécessaire. Toute modification effectuée dans ce fichier est structurelle : elle ne change pas la manière dont les IP sont distribuées, mais elle modifie la manière dont le serveur s'insère dans l'architecture matérielle de votre machine. C'est la première étape indispensable pour s'assurer que le logiciel "écoute" au bon endroit avant même de commencer à traiter la moindre requête client.

sudo nano /etc/default/isc-dhcp-server

  Contenu du fichier de configuration

# =========================
# CONFIGURATION DU SERVEUR DHCP
# (choix des interfaces réseau utilisées)
# =========================

# Interface réseau utilisée pour distribuer les adresses IPv4
# Ici : enp0s10 = carte Ethernet principale du serveur
INTERFACESv4="enp0s10"

# Interface réseau utilisée pour IPv6 (non utilisée ici)
# Vide = DHCP IPv6 désactivé
INTERFACESv6=""

Le fichier /etc/dhcp/dhcpd.conf est le cerveau de votre serveur DHCP. C'est ici que vous définissez toutes les règles de distribution des adresses IP et les paramètres réseau que les appareils connectés devront adopter. Contrairement au fichier précédent qui gérait l'aspect matériel, celui-ci gère la logique métier : qui reçoit quoi, pour combien de temps et avec quelles options de navigation. L'analyse de ce fichier révèle une structure organisée par blocs de directives. On y trouve d'abord les réglages globaux, comme le nom du domaine et les serveurs DNS (souvent ceux de Google ou de votre fournisseur), qui seront appliqués à tout le monde. L'élément central est la déclaration de la subnet (le sous-réseau), où vous précisez la plage d'adresses disponibles, par exemple de .10 à .100. C'est dans ce périmètre que le serveur puise pour servir les nouveaux venus. On y définit également la passerelle par défaut, indispensable pour que les clients sachent par quel chemin sortir vers Internet.
Une autre fonctionnalité puissante de ce fichier est la réservation d'adresses statiques. En utilisant la signature unique d'une carte réseau (l'adresse MAC), vous pouvez donner l'ordre au serveur de toujours attribuer la même adresse IP à un appareil spécifique, comme une imprimante ou un autre serveur. Cela combine la souplesse de l'automatisation avec la rigueur d'un plan d'adressage fixe. Chaque modification dans ce document nécessite une précision absolue, car un simple point-virgule oublié peut empêcher le service de démarrer, transformant ce fichier en la pièce maîtresse de la stabilité de votre infrastructure réseau.

sudo nano /etc/dhcp/dhcpd.conf

 Contenu du fichier de configuration

# =========================
# CONFIGURATION DU SERVEUR DHCP
# (donne automatiquement des IP aux machines du réseau)
# =========================

# Domaine local utilisé dans ton réseau
option domain-name "bsalado.lan";
# Durée par défaut d’une adresse IP attribuée (en secondes)
# 86400 = 24 heures
default-lease-time 86400;
# Durée maximale d’une adresse IP attribuée
# 604800 = 7 jours
max-lease-time 604800;
# Le serveur DHCP ne dépend d’aucun autre serveur pour les mises à jour DNS
ddns-update-style none;
# Ce serveur est le serveur DHCP principal du réseau
authoritative;

# =========================
# CONFIGURATION DU RÉSEAU LOCAL
# =========================

subnet 172.16.0.0 netmask 255.255.0.0 {

  # Plage d’adresses IP distribuées automatiquement aux machines
  range 172.16.0.61 172.16.0.140;
  # Passerelle par défaut (box Internet)
  option routers 172.16.0.1;
  # Adresse de diffusion du réseau (broadcast)
  option broadcast-address 172.16.255.255;
  # Domaine ajouté automatiquement aux noms des machines
  option domain-search "bsalado.lan";
  # Serveur DNS utilisé par les clients du réseau
  option domain-name-servers 172.16.0.2;
}

# =========================
# RÉSERVATIONS D’ADRESSES FIXES
# (machines qui gardent toujours la même IP)
# =========================

# --- Mac Studio ---
host macstudio {
  # Adresse MAC de la carte réseau (identifiant unique de la machine)
  hardware ethernet a4:fc:14:18:ab:41;
  # Adresse IP toujours attribuée à ce Mac Studio
  fixed-address 172.16.0.141;
}

# --- Mac Pro 2013 ---
host macpro2013 {
  # Adresse MAC de la machine
  hardware ethernet 00:3e:e1:cb:68:0e;
  # IP fixe réservée à ce Mac Pro
  fixed-address 172.16.0.142;
}
La commande sudo mkdir -p /run/dhcp-server est une étape de préparation technique cruciale pour assurer le bon démarrage du service. Elle consiste à créer manuellement un dossier temporaire dans le système de fichiers pour que le serveur DHCP puisse y stocker ses données de fonctionnement immédiat. Sur Linux, le répertoire /run est un espace de stockage en mémoire vive utilisé pour les données volatiles. De nombreux services, dont le serveur DHCP, ont besoin d'y déposer un fichier de verrouillage (appelé PID) qui indique au système que le programme est déjà en cours d'exécution. Sans ce dossier, le serveur pourrait refuser de démarrer en affichant une erreur de type "répertoire introuvable". L'option -p (pour parents) est une sécurité. Elle permet de créer le dossier même si les dossiers parents n'existent pas encore, et surtout, elle empêche la commande de renvoyer une erreur si le dossier existe déjà. C'est une commande "silencieuse" et robuste. Après cette commande, le terrain est "nettoyé" et prêt. Le logiciel DHCP dispose désormais de l'espace nécessaire pour s'enregistrer auprès du système. C'est la dernière petite soudure avant de pouvoir lancer le moteur et commencer à distribuer des adresses IP sur votre réseau.
sudo mkdir -p /run/dhcp-server
La commande sudo chown dhcpd:dhcpd /run/dhcp-server intervient pour finaliser la préparation du terrain en ajustant les permissions de sécurité du système. Sur Linux, la sécurité repose sur le principe du moindre privilège, ce qui signifie qu'un programme ne doit posséder que les droits strictement nécessaires à son exécution. En utilisant cette instruction, vous retirez la propriété du dossier à l'administrateur suprême pour la confier exclusivement à l'entité logicielle dhcpd, qui est l'utilisateur système créé spécifiquement pour faire tourner le serveur DHCP. 
Cette manipulation résout un conflit de droits invisible mais bloquant. Sans elle, le service DHCP, bien qu'installé, resterait impuissant devant son propre dossier de travail, incapable d'y inscrire son numéro d'identification de processus (le PID). En alignant les droits du dossier sur l'identité du programme, vous garantissez que le service pourra s'auto-gérer en toute autonomie dès son lancement. L'analyse de cette étape montre une gestion fine de la sécurité : plutôt que de donner des droits excessifs à tout le monde, on donne les clés de l'espace temporaire uniquement à celui qui en a besoin, permettant ainsi au serveur Ubuntu de démarrer le service de distribution d'adresses IP dans un environnement sain, stable et parfaitement sécurisé.
sudo chown dhcpd:dhcpd /run/dhcp-server
La commande suivante est votre filet de sécurité ultime avant de valider toute modification. Le paramètre -t (pour test) ordonne au programme de simuler un lancement pour vérifier la cohérence syntaxique du fichier de configuration, sans pour autant activer le service ni perturber le réseau. C'est l'équivalent d'un correcteur orthographique appliqué à votre stratégie réseau. 
L'analyse de cette commande permet de détecter instantanément les erreurs humaines les plus fréquentes, comme un point-virgule manquant, une parenthèse non fermée ou une adresse IP mal saisie dans le fichier de configuration désigné par l'option -cf. Si le terminal ne renvoie aucune erreur et se contente d'afficher les informations de version, cela confirme que votre "plan de distribution" est mathématiquement et logiquement valide. En revanche, si une erreur est présente, la commande vous indiquera précisément la ligne fautive, vous permettant de corriger le problème avant que celui-ci ne provoque une panne de connectivité pour vos utilisateurs. Utiliser cette commande est la marque d'un administrateur rigoureux qui s'assure de la perfection de ses réglages avant de les mettre en production.
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
Internet Systems Consortium DHCP Server 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcp/dhcpd.leases
PID file: /var/run/dhcpd.pid
La commande suivante est l'ordre d'activation final qui propulse votre serveur Ubuntu dans son rôle de distributeur d'adresses. Contrairement au redémarrage, cette instruction est spécifiquement utilisée pour réveiller le service lorsqu'il est à l'arrêt. Elle déclenche une série de vérifications internes où le système s'assure que tous les voyants sont au vert : les fichiers de configuration sont lisibles, l'interface réseau est prête et le dossier de travail possède les bonnes permissions. L'exécution de cette commande lance le processus d'écoute sur le réseau. Dès cet instant, le serveur devient réactif au protocole DORA (Discovery, Offer, Request, Acknowledgement), le dialogue en quatre étapes par lequel un client et un serveur s'accordent sur une adresse IP. Si la commande s'exécute sans renvoyer de message d'erreur, cela signifie que le "moteur" logiciel a démarré avec succès et qu'il est désormais en attente de la première demande de connexion. C'est l'aboutissement de toute votre phase de configuration, marquant le passage d'une machine isolée à un serveur d'infrastructure capable de piloter la connectivité de tout un parc informatique.
sudo systemctl start isc-dhcp-server
La commande suivante complète votre installation en garantissant la pérennité du service. Alors que les commandes précédentes servaient à configurer ou à démarrer le serveur ponctuellement, celle-ci s'adresse directement au gestionnaire de démarrage d'Ubuntu. Son rôle est de programmer le lancement automatique du serveur DHCP dès que la machine physique est mise sous tension ou redémarrée. L'analyse de cette action montre qu'elle crée un lien symbolique dans les dossiers prioritaires du système. Cela signifie qu'en cas de coupure de courant ou de maintenance planifiée, vous n'aurez pas besoin de vous connecter manuellement pour relancer la distribution des adresses IP : le serveur reprendra son rôle de majordome réseau avant même que vous n'ayez saisi votre mot de passe. C'est l'étape qui transforme une configuration expérimentale en une infrastructure de production fiable, capable de restaurer la connectivité de tout le parc informatique de manière autonome. Une fois cette commande validée, votre serveur est véritablement "opérationnel et résilient", prêt à servir le réseau sans aucune intervention humaine future.
sudo systemctl enable isc-dhcp-server
Synchronizing state of isc-dhcp-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable isc-dhcp-server
La commande suivante est l'outil de diagnostic par excellence qui vous permet de lire l'état de santé actuel de votre service. Plutôt que d'agir aveuglément, cette instruction affiche un rapport détaillé qui confirme si le serveur est bien "vivant" et s'il remplit correctement sa mission. Elle agit comme un tableau de bord indiquant en temps réel si les rouages de la distribution d'adresses IP tournent sans encombre. L'analyse de l'affichage se concentre principalement sur la ligne Active. Si elle affiche active (running) en vert, le succès est total : le logiciel a trouvé ses fichiers de configuration, a réussi à s'approprier son interface réseau et attend les clients. En revanche, si elle indique failed, le rapport devient une mine d'informations précieuses, listant souvent l'erreur précise (comme une faute de frappe dans le fichier de configuration ou une carte réseau manquante) qui empêche le démarrage. En plus de l'état du service, cette commande affiche les dernières lignes de journalisation, ce qui permet de visualiser les interactions récentes avec le réseau. Vous pouvez y voir les demandes de connexion entrantes et les confirmations d'attribution d'adresses. C'est la preuve ultime que votre configuration n'est pas seulement théorique, mais qu'elle répond activement aux besoins des appareils connectés. Consulter ce statut est la dernière étape de toute intervention pour s'assurer que le serveur Ubuntu est prêt à assurer la stabilité du réseau sur la durée.
sudo systemctl status isc-dhcp-server
isc-dhcp-server.service - ISC DHCP IPv4 server

Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2026-05-09 15:56:02 CEST; 4h 51min ago
Docs: man:dhcpd(8)
Main PID: 1006 (dhcpd)
Tasks: 4 (limit: 9076)
Memory: 6.0M
CPU: 410ms
CGroup: /system.slice/isc-dhcp-server.service
└─1006 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf enp0s10
mai 09 20:42:48 macminiserver dhcpd[1006]: DHCPREQUEST for 172.16.0.105 from 70:61:be:6e:9c:33 via enp0s10
mai 09 20:42:48 macminiserver dhcpd[1006]: DHCPACK on 172.16.0.105 to 70:61:be:6e:9c:33 via enp0s10
mai 09 20:43:11 macminiserver dhcpd[1006]: DHCPDISCOVER from 00:26:bb:5a:75:10 (macminiserver) via enp0s10
mai 09 20:43:12 macminiserver dhcpd[1006]: DHCPOFFER on 172.16.0.75 to 00:26:bb:5a:75:10 (macminiserver) via enp0s10
mai 09 20:44:14 macminiserver dhcpd[1006]: DHCPDISCOVER from 00:26:bb:5a:75:10 (macminiserver) via enp0s10
mai 09 20:44:15 macminiserver dhcpd[1006]: DHCPOFFER on 172.16.0.75 to 00:26:bb:5a:75:10 (macminiserver) via enp0s10
mai 09 20:45:18 macminiserver dhcpd[1006]: DHCPDISCOVER from 00:26:bb:5a:75:10 (macminiserver) via enp0s10
mai 09 20:45:19 macminiserver dhcpd[1006]: DHCPOFFER on 172.16.0.75 to 00:26:bb:5a:75:10 (macminiserver) via enp0s10
mai 09 20:46:22 macminiserver dhcpd[1006]: DHCPDISCOVER from 00:26:bb:5a:75:10 (macminiserver) via enp0s10
mai 09 20:46:23 macminiserver dhcpd[1006]: DHCPOFFER on 172.16.0.75 to 00:26:bb:5a:75:10 (macminiserver) via enp0s10
La commande suivante est l'action qui valide l'ensemble de votre travail technique. En l'exécutant, vous demandez au système d'exploitation de couper proprement le service DHCP s'il tournait déjà, puis de le relancer immédiatement en intégrant toutes les nouvelles modifications que vous avez apportées aux fichiers de configuration et aux droits d'accès. C'est le moment de vérité où le serveur Ubuntu tente de transformer vos lignes de texte en un service réseau actif et fonctionnel. L'analyse de cette commande est binaire. Soit elle s'exécute en silence, ce qui indique un succès total et une configuration syntaxiquement parfaite, soit elle affiche un message d'erreur. Dans ce dernier cas, le système refuse de démarrer pour protéger le réseau d'une configuration incohérente, comme une plage d'adresses IP qui ne correspondrait pas au réseau local. Ce redémarrage est essentiel car, sur Linux, les services ne lisent leurs fichiers de réglages qu'au moment de leur lancement ; chaque modification future de votre "pool" d'adresses ou de vos serveurs DNS nécessitera donc ce même petit coup de clé de contact pour être prise en compte. Une fois cette commande validée, votre serveur commence instantanément à écouter les requêtes des machines environnantes, prêt à leur offrir leur laissez-passer pour le réseau.
sudo systemctl restart isc-dhcp-server
La commande sudo dhcp-lease-list est l'outil de surveillance par excellence pour visualiser l'activité réelle de votre serveur. Alors que les commandes précédentes servaient à construire et à démarrer le moteur, celle-ci permet de consulter le "carnet de bord" des transactions effectuées. Elle extrait les données brutes du fichier des baux pour les présenter sous la forme d'un tableau clair et lisible, offrant une vue d'ensemble immédiate sur les appareils qui occupent actuellement votre réseau. L'analyse de ce tableau vous fournit trois informations cruciales pour chaque client : son adresse MAC (son identité matérielle unique), l'adresse IP que votre serveur lui a prêtée, et surtout, l'échéance du bail. Cette dernière donnée est fondamentale car elle indique le moment précis où l'adresse redeviendra libre si l'appareil ne manifeste pas son intention de la conserver. C'est ici que vous pouvez vérifier que votre plan d'adressage est respecté et qu'aucun appareil inconnu ne s'est glissé sur votre infrastructure. L'utilisation de cette commande transforme la gestion réseau en une tâche transparente. Elle permet de confirmer que les appareils reçoivent bien les adresses prévues dans la plage que vous avez définie lors de la configuration. En un coup d'œil, vous passez de la théorie technique à la réalité opérationnelle, vous assurant que votre serveur Ubuntu remplit parfaitement sa mission de chef d'orchestre en distribuant les bonnes identités aux bons acteurs du réseau.
sudo dhcp-lease-list
To get manufacturer names please download http://standards.ieee.org/regauth/oui/oui.txt to /usr/local/etc/oui.txt
Reading leases from /var/lib/dhcp/dhcpd.leases
MAC IP hostname valid until manufacturer
============================================================================== MAC IP HOSTNAME VALID UNTIL MANUFACTURER 00:17:88:ae:2d:d1 172.16.0.131 -NA- 2026-05-10 12:08:09 -NA- 04:17:b6:99:90:52 172.16.0.136 -NA- 2026-05-10 13:23:25 -NA- 08:91:15:4e:71:ca 172.16.0.64 PC1 2026-05-10 15:30:23 -NA- 14:bb:6e:5d:f6:9b 172.16.0.86 -NA- 2026-05-10 12:27:06 -NA- 2e:66:53:e4:80:3b 172.16.0.74 iPhone 2026-05-15 21:45:05 -NA- 38:94:ed:19:41:db 172.16.0.132 -NA- 2026-05-10 16:00:42 -NA- 40:ed:cf:4f:03:61 172.16.0.79 -NA- 2026-05-15 16:14:14 -NA- 40:ed:cf:5a:08:c4 172.16.0.78 -VM0045 2026-05-15 12:51:02 -NA- 42:ed:cf:4f:03:61 172.16.0.106 -NA- 2026-05-15 06:13:14 -NA- 48:e1:5c:78:35:a1 172.16.0.77 -NA- 2026-05-15 12:51:02 -NA- 48:e1:e9:8a:79:84 172.16.0.133 tado 2026-05-15 06:13:18 -NA- 70:61:be:6e:9b:eb 172.16.0.73 -NA- 2026-05-15 11:38:27 -NA- 70:61:be:6e:9c:33 172.16.0.105 -NA- 2026-05-10 18:16:43 -NA- 70:61:be:e1:1f:5e 172.16.0.116 -NA- 2026-05-09 21:45:18 -NA-
L'analyse du résultat de cette commande permet de lever le moindre doute technique. Si elle affiche une ligne contenant 0.0.0.0:67 ou *:67, cela prouve que le processus dhcpd a réussi à s'emparer de ce canal de communication et qu'il est prêt à intercepter les requêtes. Le paramètre -u cible le protocole UDP, le -l filtre les services en écoute (listening), et le -p affiche le nom exact du programme responsable. C'est l'équivalent de vérifier qu'une ligne téléphonique est bien ouverte et branchée au bon standard avant d'attendre le premier appel : une étape de diagnostic de bas niveau qui garantit que le flux de données entre les clients et votre serveur Ubuntu n'est entravé par aucun obstacle technique.
sudo ss -ulpn | grep :67
UNCONN 0      0               0.0.0.0:67         0.0.0.0:*    users:(("dhcpd",pid=41779,fd=9))

CONCLUSION
Le serveur DHCP constitue le pilier central de l'automatisation réseau en agissant comme un gestionnaire dynamique des identités numériques. Sa fonction première est de libérer l'administrateur de la saisie manuelle des paramètres de connexion sur chaque terminal. Lorsqu'un équipement rejoint l'infrastructure, il engage une conversation codifiée avec le serveur pour obtenir instantanément une adresse IP, un masque de sous-réseau et les coordonnées de la passerelle par défaut. Ce processus garantit une cohérence parfaite au sein du parc informatique en éliminant tout risque de doublon ou d'erreur de saisie qui paralyserait la communication. 
Le fonctionnement repose sur un cycle de négociation en quatre temps appelé DORA. Tout commence par un appel général du client qui cherche un distributeur d'adresses. Le serveur répond par une proposition concrète, que le client accepte avant de recevoir une confirmation finale. Cette attribution n'est pas permanente mais régie par un mécanisme de bail. Le serveur prête une configuration pour une durée déterminée, ce qui permet de recycler les adresses des appareils déconnectés et d'optimiser l'utilisation de l'espace d'adressage disponible.
Au-delà de la simple distribution d'IP, le serveur DHCP joue un rôle de diffuseur d'informations stratégiques. Il transmet automatiquement les adresses des serveurs DNS et les paramètres de domaine, assurant ainsi que chaque machine dispose immédiatement de tous les outils nécessaires pour naviguer sur Internet ou accéder aux ressources internes. En centralisant ces réglages dans un fichier de configuration unique sur le serveur Ubuntu, l'administrateur peut modifier la stratégie de tout le réseau en une seule manipulation, transformant une infrastructure complexe en un écosystème agile et réactif.

6 - INSTALLATION ET CONFIGURATION DU SERVEUR SSH

image 003 
Schéma de principe - Installation serveur SSH.

Le protocole SSH, pour Secure Shell, s'est imposé comme le standard universel pour l'administration à distance des systèmes informatiques, remplaçant avantageusement les anciens protocoles non sécurisés comme Telnet. Sa mission principale est d'établir un tunnel de communication chiffré entre une machine cliente et un serveur, garantissant que les commandes envoyées et les données reçues restent totalement illisibles pour un observateur extérieur. Cette sécurité repose sur des mécanismes de cryptographie asymétrique qui valident l'identité des deux interlocuteurs avant même que la moindre donnée sensible ne soit échangée sur le réseau.
L'intérêt majeur d'un serveur SSH réside dans sa capacité à offrir un contrôle total sur une machine distante tout en préservant l'intégrité du système. Une fois la connexion établie, l'administrateur dispose d'un terminal de commande identique à celui qu'il aurait en étant physiquement devant l'écran, ce qui permet de configurer des services, de mettre à jour le système ou de transférer des fichiers de manière sécurisée via SFTP. Cette flexibilité transforme n'importe quel serveur Ubuntu en une entité pilotable depuis n'importe quel point du globe, pourvu qu'une connexion internet soit disponible.
Au-delà de la simple exécution de commandes, le serveur SSH joue un rôle de gardien de la confidentialité. Il protège contre les interceptions de mots de passe et les détournements de session grâce à une authentification rigoureuse, qui peut être renforcée par l'usage de clés cryptographiques plutôt que de simples mots de passe. En intégrant SSH dans une infrastructure, on assure non seulement une gestion fluide et centralisée du parc informatique, mais on érige également une barrière robuste contre les tentatives d'intrusion, faisant de ce service la première brique de sécurité de tout administrateur réseau moderne. 
L'introduction d'OpenSSH dans une infrastructure système marque la transition entre une gestion locale et une administration professionnelle sécurisée. OpenSSH, ou Open Secure Shell, est une suite d'outils de connectivité offrant un contrôle distant total sur une machine via un canal de communication chiffré. Contrairement aux méthodes de connexion archaïques qui transmettaient les informations en clair sur le réseau, OpenSSH garantit que chaque commande, chaque mot de passe et chaque transfert de fichier reste protégé contre toute tentative d'interception. 
Le cœur de cette technologie repose sur une architecture client-serveur robuste. Sur un serveur Ubuntu, le service sshd (le démon SSH) reste en écoute constante, prêt à valider l'identité des utilisateurs cherchant à se connecter. Cette validation ne se limite pas à un simple mot de passe ; OpenSSH permet l'utilisation de clés cryptographiques asymétriques, offrant un niveau de sécurité bien supérieur. Une fois l'authentification réussie, l'administrateur accède à un terminal distant comme s'il était physiquement présent devant la machine, rendant la maintenance géographique des serveurs totalement obsolète.
Au-delà du simple accès à la console, OpenSSH se décline en plusieurs fonctionnalités essentielles pour le quotidien d'un technicien. Il permet le transfert sécurisé de données via SCP ou SFTP, et offre la possibilité de créer des tunnels sécurisés pour d'autres services réseau moins protégés. En intégrant OpenSSH, on n'installe pas seulement un outil de communication, mais on déploie une véritable barrière de sécurité qui constitue la première ligne de défense de l'administration système moderne. Sa configuration, centralisée dans le fichier /etc/ssh/sshd_config, permet enfin de durcir l'accès au serveur selon les besoins spécifiques de chaque organisation.
La commande sudo apt install openssh-server -y est l'instruction de base qui transforme votre machine Ubuntu isolée en un serveur accessible à distance. En utilisant le gestionnaire de paquets apt, vous téléchargez et installez le démon sshd, le composant logiciel chargé d'écouter les requêtes de connexion entrantes. L'option -y permet d'automatiser le processus en acceptant par avance toutes les demandes de confirmation, ce qui est idéal pour gagner du temps lors du déploiement d'une infrastructure.
L'analyse de cette installation montre qu'elle ne se contente pas de copier des fichiers ; elle configure automatiquement les scripts de démarrage du système. Dès que l'installation est terminée, le service SSH est généralement activé et lancé en arrière-plan. Cela signifie que le port TCP 22 de votre machine devient actif, créant une porte d'entrée sécurisée.
Une fois ce paquet installé, votre serveur est prêt à recevoir ses premières connexions. C'est le point de départ indispensable pour toute administration "headless" (sans écran ni clavier branchés directement sur le serveur). À partir de cet instant, vous pouvez gérer votre machine depuis un autre ordinateur sur le réseau, que ce soit pour de la configuration textuelle ou pour du transfert de fichiers sécurisé, marquant ainsi le passage à une gestion de serveur professionnelle et centralisée.

sudo apt install openssh-server -y

La commande sudo systemctl enable ssh est une instruction de configuration système cruciale qui garantit la pérennité de votre accès à distance. Son rôle n'est pas de démarrer le service immédiatement, mais de programmer son activation automatique à chaque démarrage du serveur. En exécutant cette commande, vous créez un lien symbolique dans les répertoires de démarrage de l'unité de gestion systemd, assurant que le démon SSH (sshd) sera lancé avant même que vous ne tentiez de vous connecter après un redémarrage.
L'analyse de cette action révèle une étape de sécurisation opérationnelle : sans elle, une simple coupure de courant ou un redémarrage de maintenance rendrait votre serveur physiquement inaccessible à distance, nécessitant une intervention directe sur la machine avec un clavier et un écran. En rendant le service "persistant", vous transformez votre installation logicielle en une infrastructure stable et fiable.

Il est important de noter la nuance entre start et enable :
  • start : Allume le service pour la session actuelle (immédiat mais temporaire).
  • enable : Configure le service pour qu'il s'allume tout seul à l'avenir (permanent).

L'utilisation de cette commande est la signature d'une administration réseau bien planifiée, où la disponibilité du service de gestion est garantie sans intervention humaine manuelle. Elle constitue la touche finale indispensable après l'installation du paquet pour confirmer que votre serveur Ubuntu est officiellement prêt à intégrer un parc de machines pilotées à distance.

sudo systemctl enable ssh
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh

La commande sudo systemctl start ssh est l'interrupteur qui met immédiatement le service en mouvement. Contrairement à la commande d'activation au démarrage, celle-ci agit en temps réel : elle ordonne au système d'exploitation de charger le processus sshd en mémoire vive et de commencer à écouter les tentatives de connexion sur le réseau. C'est l'instant précis où votre machine devient officiellement un serveur accessible.
L'analyse technique de cette commande montre qu'elle initialise les protocoles de sécurité et prépare les clés de chiffrement nécessaires à l'établissement d'un tunnel sécurisé. Si le service était arrêté, il passe instantanément à l'état "actif". Pour l'administrateur, c'est l'étape de validation immédiate. Une fois cette commande exécutée, le port TCP 22 s'ouvre, permettant aux clients SSH de s'authentifier.
Dans un flux de travail logique, cette commande est le point de bascule. Elle est souvent suivie d'une vérification de statut pour s'assurer qu'aucun conflit de port ou erreur de configuration ne bloque le lancement. En combinant l'installation, l'activation au démarrage et ce démarrage immédiat, vous complétez le cycle de déploiement qui rend votre infrastructure Ubuntu pilotable à distance de manière sécurisée et performante.

sudo systemctl start ssh

La commande sudo systemctl status ssh est le tableau de bord de votre connexion sécurisée. Elle permet de réaliser un diagnostic en temps réel pour vérifier la "santé" du service SSH. En l'exécutant, vous obtenez un rapport détaillé qui confirme non seulement si le serveur est en cours d'exécution, mais aussi s'il a rencontré des erreurs lors de son lancement.
L'analyse du résultat se concentre sur plusieurs indicateurs clés :
Active : active (running) : Ce voyant vert confirme que le démon sshd fonctionne parfaitement. Si vous voyez "inactive" ou "failed", le serveur est hors service.
Loaded : loaded (/lib/systemd/system/ssh.service; enabled; ...) : Cette ligne confirme deux choses : que le fichier de configuration du service est bien lu et que le service est configuré pour démarrer automatiquement avec la machine (grâce au mot-clé enabled).
Main PID : Il s'agit du numéro d'identification du processus dans la mémoire du système. C'est la preuve concrète que le logiciel occupe une place active dans les ressources du serveur.
En bas de l'affichage, vous trouverez également les dernières lignes de logs. C'est ici que SSH consigne les événements récents, comme les tentatives de connexion réussies ou les échecs d'authentification. Consulter le statut est le premier réflexe de tout administrateur après une modification de configuration ou en cas de difficulté de connexion à distance : c'est l'outil qui transforme une incertitude technique en une certitude opérationnelle.

sudo systemctl status ssh
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2026-05-09 15:54:03 CEST; 6h ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 744 (sshd)
Tasks: 1 (limit: 9076)
Memory: 8.0M
CPU: 164ms
CGroup: /system.slice/ssh.service
└─744 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
mai 09 15:54:03 macminiserver systemd[1]: Starting OpenBSD Secure Shell server...
mai 09 15:54:03 macminiserver sshd[744]: Server listening on 0.0.0.0 port 2222.
mai 09 15:54:03 macminiserver sshd[744]: Server listening on :: port 2222.
mai 09 15:54:03 macminiserver systemd[1]: Started OpenBSD Secure Shell server.
mai 09 15:59:47 macminiserver sshd[2522]: Accepted publickey for administrateur from 172.16.0.141 port 55929 ssh2: ED25519 SHA256:q9vGdBcL2lcWCoo8AQZmb48I>
mai 09 15:59:47 macminiserver sshd[2522]: pam_unix(sshd:session): session opened for user administrateur(uid=1000) by (uid=0)
mai 09 16:17:36 macminiserver sshd[4145]: Accepted publickey for administrateur from 172.16.0.141 port 57066 ssh2: ED25519 SHA256:q9vGdBcL2lcWCoo8AQZmb48I>
mai 09 16:17:36 macminiserver sshd[4145]: pam_unix(sshd:session): session opened for user administrateur(uid=1000) by (uid=0)
La commande sudo ss -tlnp | grep ssh est l'outil d'audit réseau final pour confirmer que votre bastion de sécurité est opérationnel. Tandis que systemctl vous indique si le logiciel tourne, ss (Socket Statistics) vous prouve qu'il est réellement connecté aux interfaces réseau de la machine. Elle permet de s'assurer que le service SSH ne reste pas confiné à l'intérieur du système mais qu'il "écoute" activement les appels provenant de l'extérieur.
L'analyse des paramètres révèle la précision de cet outil : le -t cible les connexions TCP (le protocole de transport de SSH), le -l filtre les ports en écoute (listening), le -n affiche les numéros de ports en chiffres (pour voir le port 22 plutôt que le nom "ssh"), et le -p identifie le processus responsable, ici sshd.
Cette vérification est indispensable après avoir modifié le fichier de configuration /etc/ssh/sshd_config, notamment si vous avez décidé de changer le port par défaut pour renforcer la sécurité. C'est l'ultime garde-fou avant de fermer votre session locale et de confier l'accès à votre serveur au seul tunnel SSH.

sudo ss -tlnp | grep ssh
LISTEN 0 128 0.0.0.0:2222 0.0.0.0:* users:(("sshd",pid=744,fd=3))
LISTEN 0 128 [::]:2222 [::]:* users:(("sshd",pid=744,fd=4))

A partir de la machine cliente
La commande ssh-keygen -t ed25519 -C "macminiserver" -f ~/.ssh/macminiserver constitue l'étape fondamentale pour substituer l'authentification par mot de passe, vulnérable aux interceptions, par une authentification par clés cryptographiques de haute sécurité. En utilisant l'algorithme Ed25519, vous optez pour la technologie de signature numérique la plus moderne et la plus robuste actuellement disponible, offrant une résistance exceptionnelle aux tentatives de déchiffrement tout en garantissant des performances de connexion extrêmement rapides. Le commentaire associé via l'option -C permet de marquer explicitement la clé pour identifier plus tard qu'elle appartient au "macminiserver", facilitant ainsi la gestion d'un trousseau de clés volumineux au sein d'une infrastructure complexe.
L'exécution de cette instruction génère un couple indissociable de fichiers dans le répertoire personnel, dont le nom est dicté par l'argument -f. Le premier fichier est la clé privée, qui agit comme une signature numérique ultra-secrète et ne doit en aucun cas quitter votre machine locale. Le second, portant l'extension .pub, est la clé publique destinée à être partagée et installée sur le serveur distant.
Cette architecture de sécurité repose sur un principe de verrou et de clé : le serveur utilisera la clé publique pour chiffrer un défi que seule votre clé privée pourra résoudre. En automatisant cette preuve d'identité, vous éliminez le besoin de saisir manuellement un mot de passe à chaque connexion, tout en érigeant une barrière cryptographique quasi infranchissable pour les robots et les attaquants externes. C'est l'outil indispensable pour instaurer une confiance aveugle entre votre poste d'administration et votre serveur Ubuntu, garantissant ainsi une gestion sereine et professionnelle de votre parc informatique.
ssh-keygen -t ed25519 -C "macminiserver" -f ~/.ssh/macminiserver

La commande ssh-copy-id -i ~/.ssh/macminiserver.pub Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser..0.2 est l'outil de transfert automatisé qui permet d'exporter votre identité numérique vers le serveur distant afin de supprimer définitivement la nécessité de saisir un mot de passe. En ciblant spécifiquement le fichier de clé publique grâce à l'option -i, vous indiquez précisément au système quel "verrou" installer sur la machine de destination. L'utilitaire se charge alors de se connecter au compte de l'utilisateur administrateur sur le serveur situé à l'adresse 172.16.0.2, de créer si nécessaire le répertoire de sécurité masqué et d'y inscrire votre clé dans la liste des accès autorisés.
L'exécution de cette instruction déclenche une procédure sécurisée où le serveur demande une dernière fois le mot de passe du compte distant pour valider l'opération. Une fois cette étape franchie, la clé publique est scellée dans le fichier des clés autorisées du serveur, établissant un pont de confiance permanent entre les deux machines. Désormais, chaque tentative de connexion utilisera la signature cryptographique pour une authentification instantanée, ce qui renforce considérablement la sécurité globale du système. Cette méthode bloque toute tentative d'intrusion par devinette de mot de passe, car le serveur n'acceptera plus que les connexions provenant du détenteur de la clé privée correspondante, transformant ainsi votre flux de travail en un processus fluide, rapide et hautement protégé.

Le fichier ~/.ssh/config est le panneau de contrôle de votre client SSH. C'est ici que vous transformez des commandes longues et fastidieuses en raccourcis simples et mémorisables. Plutôt que de taper l'adresse IP, l'utilisateur et le chemin de la clé à chaque fois, vous créez des profils de connexion prédéfinis.
L'analyse d'une configuration typique pour votre serveur se structure autour de directives spécifiques qui automatisent le comportement du client. En définissant un hôte sous un nom alias, vous permettez au système de lier instantanément un nom simple à une infrastructure complexe.

sudo nano /Users/benoitsalado/.ssh/config

Cette configuration dans votre fichier ~/.ssh/config est la touche finale d'une infrastructure bien pensée. Elle agit comme un traducteur intelligent pour votre client SSH, lui permettant d'interpréter des instructions simplifiées en une connexion technique complexe et sécurisée.
L'analyse de vos directives montre un haut niveau de personnalisation et de sécurité :

  • Host macminiserver : Vous définissez un alias mémorisable. Désormais, votre terminal reconnaît "macminiserver" comme une destination valide.
  • HostName 172.16.0.2 : L'adresse IP fixe est encapsulée, vous évitant de devoir la retenir ou de la saisir manuellement.
  • Port 2222 : Indique que vous avez modifié le port par défaut (probablement pour réduire le bruit des tentatives de connexion automatisées sur le port 22). Le client l'utilisera désormais systématiquement pour cet hôte.
  • IdentityFile ~/.ssh/macminiserver : Vous liez explicitement la clé privée générée précédemment à ce serveur précis, garantissant que la bonne "clé" est présentée à la bonne "serrure".
  • IdentitiesOnly yes : C'est une directive cruciale pour la propreté des connexions. Elle force SSH à n'utiliser que la clé spécifiée dans ce fichier, même si vous avez chargé d'autres clés dans votre agent SSH. Cela évite les échecs de connexion dus à trop de tentatives d'authentification refusées par le serveur.

Grâce à ce bloc de configuration, votre interaction avec le serveur change radicalement. Pour vous connecter, au lieu d'une commande à rallonge, il vous suffit de saisir : ssh macminiserver
Toutes les opérations annexes profitent de cette simplification. Pour copier un fichier de votre Mac vers votre serveur, la commande devient aussi fluide que : scp document.txt macminiserver: /home/administrateur/
C'est l'aboutissement de votre configuration : vous avez créé un environnement où la sécurité (port personnalisé, clés Ed25519, isolation des identités) ne sacrifie en rien le confort d'utilisation au quotidien.

Host macminiserver
    HostName 172.16.0.2
    User administrateur
    Port 2222
    IdentityFile ~/.ssh/macminiserver
    IdentitiesOnly yes

ssh-copy-id -i ~/.ssh/macminiserver.pub Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser..0.2

A partir du serveur Ubuntu
La commande sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak représente la mesure de prudence élémentaire et indispensable avant toute intervention sur les paramètres vitaux d'un serveur. Elle consiste à créer une copie de sauvegarde exacte du fichier de configuration original du démon SSH, en lui attribuant l'extension .bak. Cette opération garantit à l'administrateur un droit à l'erreur : en cas de mauvaise manipulation ou de faute de syntaxe rendant le serveur inaccessible, il sera toujours possible de restaurer la configuration initiale pour rétablir la situation. 
L'analyse de cette action souligne l'importance de la gestion des risques dans l'administration système Linux. Le fichier sshd_config contrôle les accès, les ports et les méthodes d'authentification ; une simple virgule mal placée ou une option incompatible peut verrouiller définitivement l'accès à distance après un redémarrage du service. En archivant cet état "sain" avant modification, vous créez un filet de sécurité qui permet d'expérimenter des durcissements de sécurité, comme le changement de port ou la désactivation de l'accès root, avec la certitude de pouvoir revenir en arrière en quelques secondes via une console de secours.

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Le fichier /etc/ssh/sshd_config est le centre de contrôle névralgique du démon OpenSSH sur un serveur Linux. Contrairement au fichier ssh_config qui gère les paramètres du client, ce fichier définit les règles de sécurité, les ports d'écoute et les méthodes d'authentification imposées à toute personne tentant de se connecter à la machine. C'est en éditant ce document que l'administrateur transforme un accès standard en une forteresse numérique personnalisée.
L'analyse de ce fichier révèle une structure de directives strictes qui dictent le comportement du serveur dès son démarrage. On y trouve des paramètres fondamentaux tels que le Port, qui permet de détourner les attaques automatisées en changeant le port 22 par défaut, ou encore PermitRootLogin, qui permet d'interdire l'accès direct au compte super-utilisateur, forçant ainsi les administrateurs à utiliser un compte personnel plus facile à tracer. Chaque modification dans ce fichier nécessite un privilège élevé via sudo et doit être suivie d'un redémarrage du service pour être prise en compte par le système.
La gestion de ce fichier est un exercice d'équilibre entre accessibilité et sécurité. En configurant des options comme PasswordAuthentication no, l'administrateur peut verrouiller le serveur pour n'accepter que les clés cryptographiques, rendant les attaques par force brute totalement inopérantes. Par sa capacité à restreindre les accès à certains utilisateurs ou groupes spécifiques, le sshd_config s'établit comme la pièce maîtresse de la politique de sécurité d'un serveur Ubuntu, garantissant que seuls les opérateurs légitimes peuvent franchir les portes du système.

sudo nano /etc/ssh/sshd_config

 

# =========================
# CONFIGURATION DU SERVEUR SSH
# (accès distant sécurisé au serveur)
# =========================

# Charge les fichiers supplémentaires de configuration SSH
Include /etc/ssh/sshd_config.d/*.conf

# =========================
# PORT ET CONNEXION
# =========================

# Port utilisé pour SSH (au lieu du port standard 22)
Port 2222

# Temps maximum pour entrer les identifiants lors d’une connexion
LoginGraceTime 5m

# =========================
# AUTHENTIFICATION
# =========================

# Méthode de connexion obligatoire : clé SSH uniquement
AuthenticationMethods publickey

# Autorise l’utilisation des clés SSH
PubkeyAuthentication yes

# Désactive les mots de passe (plus sécurisé)
PasswordAuthentication no

# Interdit les mots de passe vides
PermitEmptyPasswords no

# Désactive les connexions interactives avec clavier (OTP, etc.)
KbdInteractiveAuthentication no

# Utilise le système PAM (gestion d’authentification système)
UsePAM yes

# =========================
# SÉCURITÉ SUPPLÉMENTAIRE
# =========================

# Empêche la connexion directe en root (super administrateur)
PermitRootLogin no

# Nombre maximum de tentatives de connexion
MaxAuthTries 3

# Nombre maximum de sessions ouvertes simultanément
MaxSessions 2

# Empêche la redirection de connexion via un agent SSH
AllowAgentForwarding no

# Empêche le transfert de trafic réseau via SSH (tunnel)
AllowTcpForwarding no

# Empêche la création de tunnels VPN via SSH
PermitTunnel no

# =========================
# MESSAGE ET SESSION
# =========================

# Ne pas afficher de message d’accueil à la connexion
PrintMotd no

# Garde la connexion active en envoyant un signal toutes les 5 minutes
ClientAliveInterval 300

# Nombre de réponses manquées avant déconnexion automatique
ClientAliveCountMax 2

# =========================
# VARIABLES ENVIRONNEMENT
# =========================

# Autorise certaines variables locales à être transmises
AcceptEnv LANG LC_*

# =========================
# TRANSFERT DE FICHIERS
# =========================

# Service SFTP (transfert de fichiers sécurisé)
Subsystem sftp /usr/lib/openssh/sftp-server

# =========================
# INTERFACE GRAPHIQUE
# =========================

# Désactive le transfert d’affichage graphique (X11)
X11Forwarding no

# =========================
# UTILISATEURS AUTORISÉS
# =========================

# Seul l’utilisateur "administrateur" est autorisé à se connecter
# depuis le réseau local (172.16.x.x) et le VPN (10.10.x.x)
#AllowUsers Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser..0.0/16 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser..0.0/24

Match Address 172.16.0.0/16
    AllowUsers administrateur

Match Address 10.10.0.0/24
    AllowUsers administrateur

La commande sudo sshd -t est le test de sécurité ultime, souvent appelé "test de syntaxe", que tout administrateur doit exécuter avant de redémarrer le service SSH. Son rôle est de passer au crible le fichier de configuration /etc/ssh/sshd_config pour y déceler la moindre erreur, faute de frappe ou option obsolète. Contrairement à un redémarrage direct, cette commande est totalement silencieuse : si elle ne renvoie aucun message, cela signifie que votre configuration est parfaitement valide et qu'il est sans danger de l'appliquer.
L'analyse technique de cette commande révèle son importance vitale pour la continuité de service. En mode test, le démon SSH vérifie la cohérence des directives sans interrompre les connexions en cours ni modifier le comportement actuel du serveur. Si une erreur est détectée, elle s'affiche avec le numéro de la ligne concernée, permettant une correction immédiate. Utiliser ce garde-fou permet d'éviter le scénario catastrophe où, après un redémarrage, le serveur refuserait de se lancer à cause d'une simple erreur de syntaxe, vous enfermant ainsi à l'extérieur de votre propre machine.
Intégrer systématiquement sshd -t dans votre flux de travail est la marque d'une administration rigoureuse. C'est l'étape de validation qui sépare la manipulation hasardeuse de la gestion professionnelle. Une fois que ce test a confirmé l'intégrité de vos réglages, vous pouvez alors procéder au redémarrage du service avec la certitude que votre accès à distance sera maintenu et que vos nouvelles règles de sécurité seront opérationnelles dès la reconnexion.

sudo sshd -t
La commande sudo systemctl restart ssh est l'action finale qui valide et applique l'ensemble des modifications apportées à la configuration du serveur. Contrairement à un simple démarrage, le redémarrage interrompt brièvement le processus du démon sshd pour le relancer immédiatement avec les nouveaux paramètres enregistrés dans le fichier /etc/ssh/sshd_config. C'est cet instant précis qui rend effectifs les changements de ports, les interdictions de mots de passe ou les nouvelles restrictions d'accès.
L'analyse de cette opération impose une grande prudence opérationnelle. Si une erreur de syntaxe a été commise dans la configuration, le service risque de ne pas redémarrer, ce qui pourrait entraîner une perte définitive de l'accès à distance. Pour cette raison, les administrateurs chevronnés vérifient souvent la validité de la configuration avec la commande sshd -t avant de lancer le redémarrage. Une fois la commande exécutée avec succès, le système ferme les anciennes instances de gestion et ouvre les nouvelles, assurant ainsi la transition vers un environnement plus sécurisé.
Dans le cadre d'un journal d'administration, cette commande marque la clôture d'une session de maintenance. Elle confirme que le serveur a intégré les nouvelles directives de sécurité et qu'il est désormais prêt à fonctionner sous sa nouvelle politique. Il est d'usage, après un redémarrage, de conserver une session SSH active tout en tentant d'en ouvrir une nouvelle dans une fenêtre séparée pour s'assurer que l'accès reste possible et que la configuration est parfaitement fonctionnelle.

sudo systemctl restart ssh

La commande sudo ss -tlnp | grep ssh constitue l'étape de vérification réseau finale. Alors que les commandes précédentes interrogeaient l'état interne du logiciel via le gestionnaire de services, celle-ci inspecte directement les "portes" d'entrée (les sockets) du système d'exploitation pour confirmer que le serveur est bien à l'écoute du monde extérieur.
L'analyse des commutateurs permet de comprendre la précision du diagnostic :
  • -t :
    Isole uniquement le trafic TCP, le protocole de transport fiable utilisé par SSH.
  • -l :
    Affiche les sockets en état "Listening" (en attente de connexion).
  • -n :
    Force l'affichage des adresses et des ports en format numérique (22 au lieu de "ssh"), évitant toute confusion.
  • -p :
    Identifie précisément quel processus système détient l'ouverture du port.

Lorsque vous exécutez cette commande, vous recherchez une ligne indiquant typiquement LISTEN 0 128 0.0.0.0:22. La présence de 0.0.0.0:22 confirme que votre serveur accepte les connexions IPv4 sur toutes ses interfaces réseau. Si vous avez modifié le port par défaut dans votre configuration (par exemple pour le port 2222), c'est ici que vous validerez visuellement que le changement a bien été pris en compte par le noyau Linux.
Cette commande agit comme un certificat de bon fonctionnement : elle prouve qu'il n'y a aucun conflit de port et que le pare-feu ou le système ne bloquent pas l'ouverture du service. C'est l'ultime confirmation technique qu'un administrateur effectue avant de considérer que son infrastructure de gestion à distance est pleinement opérationnelle et accessible.

CONCLUSION

La mise en œuvre d'un serveur OpenSSH sur votre machine Ubuntu constitue le socle fondamental d'une administration système rigoureuse et sécurisée. Ce processus, débutant par l'installation du démon et sa persistance au démarrage, transforme un ordinateur isolé en un nœud réseau administrable à distance. La fiabilité de cette infrastructure repose sur une séquence logique d'opérations garantissant que l'accès reste disponible, même après un redémarrage critique du système.
L'aspect le plus déterminant de cette configuration réside dans l'abandon des méthodes d'authentification traditionnelles au profit de la cryptographie asymétrique. L'utilisation de l'algorithme Ed25519 pour générer des paires de clés offre une protection de haut niveau contre les attaques par force brute, rendant les tentatives d'intrusion par dictionnaire totalement inopérantes. Le transfert de la clé publique vers le serveur établit une relation de confiance numérique qui simplifie l'expérience utilisateur tout en érigeant une barrière de sécurité infranchissable pour les tiers non autorisés.
La gestion du fichier de configuration /etc/ssh/sshd_config représente la phase de durcissement opérationnel. En appliquant des principes de prudence, tels que la création systématique de sauvegardes et la vérification de la syntaxe par le moteur de test du démon, l'administrateur minimise les risques d'exclusion accidentelle. Cette approche méthodique permet d'affiner les paramètres d'écoute et les restrictions d'accès avec une précision chirurgicale, assurant une conformité totale avec les politiques de sécurité réseau.
La validation finale par l'inspection des sockets réseau confirme que le service n'est pas seulement actif de manière logicielle, mais qu'il est physiquement à l'écoute sur les interfaces réseau appropriées. Cette visibilité, combinée à la surveillance des logs d'accès, clôture le cycle de déploiement. Votre serveur est désormais une plateforme robuste et sécurisée, prête à accueillir des déploiements applicatifs complexes tout en restant sous votre contrôle exclusif, où que vous soyez.

7 - INSTALLATION ET CONFIGURATION DU SERVEUR DNS

 image 004
Schéma de principe - Installation serveur DNS.

La mise en place d'un serveur DNS (Domain Name System) au sein de votre infrastructure constitue l'étape cruciale pour transformer une gestion réseau purement numérique en un environnement intuitif et structuré. Tandis que le protocole SSH permet de sécuriser les accès, le DNS agit comme l'annuaire intelligent de votre réseau, convertissant les adresses IP arides, telles que 172.16.0.2, en noms d'hôtes mémorisables comme macminiserver.local. Cette abstraction logicielle libère l'administrateur de la charge mentale liée à la mémorisation des coordonnées réseau et fluidifie l'interaction entre les différentes machines du parc informatique.
L'intégration d'un serveur DNS local, souvent basé sur des outils comme Bind9 ou Unbound, apporte une autonomie technique majeure en centralisant la résolution de noms sans dépendre exclusivement des serveurs externes. Cette configuration permet non seulement d'accélérer les requêtes internes par une mise en cache efficace, mais offre également un contrôle granulaire sur la redirection du trafic et la gestion des sous-domaines. En maîtrisant votre propre zone DNS, vous créez un écosystème où chaque périphérique possède une identité textuelle fixe, garantissant ainsi une cohérence parfaite pour les services web, les partages de fichiers et les scripts d'automatisation.
Au-delà de la simple traduction de noms, le déploiement d'un DNS privé renforce la sécurité et la résilience de votre réseau. Il permet d'intercepter les requêtes indésirables, de segmenter le trafic interne du trafic externe et de préparer l'infrastructure à une montée en charge progressive. C'est l'outil de gouvernance par excellence qui assure la transition d'un simple assemblage de machines vers un réseau local cohérent, professionnel et prêt à l'emploi.
BIND9 (Berkeley Internet Name Domain) s'impose comme la référence mondiale et le standard historique des logiciels de gestion DNS. Développé par l'ISC (Internet Systems Consortium), c'est un outil d'une polyvalence absolue, capable d'assumer simultanément les rôles de serveur faisant autorité, de résolveur récursif et de cache DNS. Sa robustesse est telle qu'il propulse une immense partie de l'infrastructure Internet mondiale, des serveurs racines aux réseaux d'entreprises les plus complexes.
L'architecture de BIND9 repose sur une modularité exemplaire qui permet de segmenter la configuration en zones distinctes, offrant ainsi une vision claire et hiérarchisée du réseau. Il intègre des fonctionnalités de sécurité avancées, notamment le DNSSEC, qui permet de signer numériquement les réponses pour garantir leur authenticité et empêcher le détournement de trafic. Bien que sa configuration puisse paraître austère au premier abord, elle offre une précision chirurgicale pour gérer les enregistrements de type A, CNAME ou MX, rendant possible la création d'un écosystème réseau totalement personnalisé et souverain.
Choisir BIND9 pour votre infrastructure, c'est opter pour la stabilité d'un projet mature bénéficiant d'une documentation exhaustive et d'un soutien communautaire inégalé. C'est un moteur puissant qui, une fois maîtrisé, transforme la gestion des adresses IP en une architecture de noms fluide et évolutive, capable de supporter aussi bien un petit parc de serveurs qu'une organisation de grande envergure avec une fiabilité sans faille.
L'exécution de la commande sudo apt install bind9 bind9utils bind9-doc -y marque le passage de la planification à la mise en œuvre concrète de votre infrastructure de nommage. En installant cet ensemble de paquets, vous ne vous contentez pas de déployer un simple logiciel, mais vous intégrez un écosystème complet d'outils destinés à la gestion, au diagnostic et à la documentation de votre serveur DNS.

Analyse des composants installés

  • bind9 :
    C'est le cœur du système, le démon qui gère les requêtes UDP et TCP sur le port 53. Il transforme votre machine en une entité capable de répondre aux sollicitations de résolution de noms de tout votre réseau local.
  • bind9utils :
    Ce paquet est indispensable à l'administrateur. Il fournit une suite d'outils de maintenance essentiels, notamment named-checkconf pour valider la syntaxe de vos fichiers de configuration et named-checkzone pour vérifier l'intégrité de vos bases de données de zones avant leur mise en production.
  • bind9-doc :
    La présence de la documentation locale garantit un accès immédiat aux manuels officiels et aux exemples de configuration, une ressource précieuse pour affiner des réglages complexes sans dépendre systématiquement d'une connexion internet externe.

Impact sur le système

L'argument -y automatise le processus en acceptant par avance toutes les dépendances nécessaires, garantissant une installation fluide et sans interruption. Une fois cette commande achevée, le gestionnaire de services de Linux (systemctl) initialise le processus, créant l'arborescence de configuration sous /etc/bind/.
À ce stade, le serveur est installé dans un état "récursif par défaut", agissant comme un relais vers les serveurs DNS de votre fournisseur ou ceux de Google et Cloudflare. C'est la fondation sur laquelle vous allez maintenant greffer vos propres zones de recherche pour donner vie à l'adressage nominatif de votre réseau.

sudo apt install bind9 bind9utils bind9-doc -y
La commande sudo systemctl enable named constitue l'acte de pérennisation de votre serveur DNS au sein du système d'exploitation. En activant le service, vous donnez instruction à Ubuntu de créer les liens symboliques nécessaires pour que le démon BIND9 (identifié sous le nom de processus named) soit automatiquement lancé lors de chaque démarrage de la machine. Cette opération garantit la haute disponibilité de la résolution de noms : même après une coupure de courant ou une maintenance planifiée de votre Mac Mini Server, les services dépendant du DNS redeviendront opérationnels sans intervention humaine. 
L'analyse technique de cette action révèle la transition d'un logiciel installé manuellement vers un service système critique et autonome. Le gestionnaire de services systemd prend désormais la responsabilité de surveiller le processus, assurant que la structure de nommage de votre réseau local est toujours active dès que le noyau Linux est prêt. C'est une étape de confiance indispensable : sans cette activation, votre réseau perdrait sa capacité à traduire les adresses en noms d'hôtes à chaque redémarrage, paralysant ainsi les connexions SSH simplifiées et les services web internes.
Dans le flux de travail d'un administrateur, cette commande marque la fin de la phase d'installation et le début de la phase d'exploitation permanente. Elle sécurise la continuité de service et permet de se concentrer sur la configuration des zones et des enregistrements, avec la certitude que l'infrastructure de base est désormais solidement ancrée dans le comportement de démarrage du serveur. C'est la garantie que votre "annuaire" réseau restera toujours ouvert et disponible pour tous les clients du parc informatique.
sudo systemctl enable named
Synchronizing state of named.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable named
La commande sudo systemctl start named marque le passage de la configuration statique à l'exécution dynamique. C'est l'ordre formel donné au système d'exploitation de charger le binaire de BIND9 en mémoire vive, d'ouvrir les fichiers de configuration et de commencer à écouter les requêtes sur le port réseau 53. À cet instant précis, votre serveur cesse d'être une simple machine de calcul pour devenir un nœud d'infrastructure actif capable de traiter des flux de données DNS.
L'analyse de cette activation souligne la distinction entre la persistance (établie précédemment par enable) et l'opérationnalité immédiate. Le démarrage du service déclenche une série de vérifications internes : BIND9 scanne ses fichiers de zone, initialise son cache et établit ses sockets de communication. Si la configuration est correcte, le démon se détache en arrière-plan et commence à répondre aux sollicitations des clients. En cas d'erreur de syntaxe ignorée, le service refusera de démarrer, protégeant ainsi l'intégrité du système contre un processus instable.
Dans le journal d'administration, ce point de départ opérationnel est le moment où la théorie devient pratique. C'est la confirmation que les binaires sont correctement installés et que le système dispose de ressources suffisantes pour faire tourner le service. Une fois le démarrage réussi, la prochaine étape logique consiste à auditer l'état du service pour s'assurer que le serveur "respire" normalement et qu'il est prêt à assumer son rôle de traducteur universel pour votre réseau local.
sudo systemctl start named
La commande sudo systemctl status named est l'outil de diagnostic par excellence pour vérifier la "santé" immédiate de votre serveur DNS. Elle offre une vue en temps réel sur l'état du démon BIND9, confirmant non seulement s'il est en cours d'exécution, mais fournissant également un extrait précieux des derniers journaux d'activité. C'est le premier réflexe de l'administrateur pour valider que le serveur a correctement chargé ses zones et qu'aucun conflit n'entrave son fonctionnement.

Analyse des informations clés du statut

  • Active: active (running) :
    Ce voyant vert confirme que le moteur DNS est opérationnel. S'il affiche failed, le rapport indiquera généralement la raison précise de l'échec (erreur de syntaxe ou port déjà utilisé).
  • Main PID :
    Identifie le numéro de processus unique dans le système, permettant une gestion fine des ressources si nécessaire.
  • Logs récents :
    Les dernières lignes affichées révèlent des détails cruciaux, tels que la version de BIND9 lancée, les interfaces réseau sur lesquelles il écoute (UDP/TCP port 53) et la confirmation du chargement des fichiers de configuration.
Dans votre journal, le compte-rendu de cette commande sert de preuve de succès pour la phase de mise en route. Un statut "active" valide que le serveur est prêt à recevoir ses premières requêtes de test. C'est également à ce stade que vous pouvez repérer des avertissements mineurs (warnings), comme des fichiers de zone manquants ou des permissions de dossiers incorrectes, avant qu'ils ne deviennent des problèmes bloquants pour les clients de votre réseau. En somme, consulter le statut est l'acte qui clôture l'installation logicielle et autorise le passage à la configuration technique des noms de domaine. C'est le passage du témoin entre le système d'exploitation qui héberge le service et l'administrateur qui va maintenant sculpter son architecture réseau.
sudo systemctl status named

named.service - BIND Domain Name Server
    Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
    Active: active (running) since Sat 2026-05-09 15:54:04 CEST; 20h ago
   Docs: man:named(8)
Main PID: 733 (named)
    Tasks: 8 (limit: 9076)
    Memory: 33.3M
    CPU: 54.302s
  CGroup: /system.slice/named.service
      └─733 /usr/sbin/named -u bind
mai 10 11:53:50 macminiserver named[733]: chase DS servers resolving 'browser-intake-datadoghq.com/DS/IN': 127.0.0.1#5354
mai 10 11:53:50 macminiserver named[733]: broken trust chain resolving 'browser-intake-datadoghq.com/A/IN': 127.0.0.1#5354
mai 10 11:53:50 macminiserver named[733]: broken trust chain resolving 'browser-intake-datadoghq.com/HTTPS/IN': 127.0.0.1#5354
mai 10 11:55:05 macminiserver named[733]: chase DS servers resolving 'browser-intake-datadoghq.com/DS/IN': 127.0.0.1#5354
mai 10 11:55:05 macminiserver named[733]: broken trust chain resolving 'browser-intake-datadoghq.com/A/IN': 127.0.0.1#5354
mai 10 11:55:05 macminiserver named[733]: broken trust chain resolving 'browser-intake-datadoghq.com/HTTPS/IN': 127.0.0.1#5354
mai 10 11:55:12 macminiserver named[733]:   validating chatgpt.com/SOA: no valid signature found
mai 10 11:55:12 macminiserver named[733]:   validating ab.chatgpt.com/NSEC: no valid signature found
mai 10 11:59:34 macminiserver named[733]: validating p2p-sgp-2.anker-in.com/A: no valid signature found
mai 10 11:59:34 macminiserver named[733]: validating p2p-par-2.anker-in.com/A: no valid signature found
La commande sudo named -v est l'outil d'identification formelle de votre moteur DNS. Elle permet d'interroger directement le binaire de BIND9 pour obtenir sa version précise et son numéro de compilation. Bien que simple, cette vérification est fondamentale pour la sécurité et la compatibilité de votre infrastructure, car elle détermine les fonctionnalités disponibles et le niveau de protection contre les vulnérabilités connues.
L'analyse de la réponse fournie par le système permet de situer votre serveur dans le cycle de vie du logiciel. Dans un environnement professionnel, connaître la version exacte est indispensable avant d'appliquer des configurations avancées, comme le DNSSEC ou les RPZ (Response Policy Zones), dont la syntaxe peut varier d'une itération à l'autre. C'est également une information critique lors de l'audit du système, car elle permet de s'assurer que les correctifs de sécurité distribués par les dépôts officiels d'Ubuntu ont bien été intégrés au binaire actif.
Dans votre journal d'administration, noter le résultat de cette commande sert de point de référence technique. Cela documente l'état du système à un instant T et facilite grandement le dépannage futur ou la réplication de la configuration sur d'autres machines. En confirmant que vous utilisez une version stable et à jour, vous validez la solidité de la fondation sur laquelle repose l'ensemble de la résolution de noms de votre réseau local.
sudo named -v
BIND 9.18.39-0ubuntu0.22.04.3-Ubuntu (Extended Support Version) <id:>
L'exécution de la commande sudo mkdir -p /var/lib/bind/zones marque la création de l'espace de stockage dédié à vos bases de données de noms. Ce dossier constitue la "bibliothèque" de votre serveur DNS, l'endroit précis où seront conservés les fichiers de zone qui définissent la correspondance entre vos noms d'hôtes et leurs adresses IP.
L'utilisation de l'option -p est ici un réflexe d'administrateur avisé : elle garantit la création de toute l'arborescence parente si nécessaire et évite de renvoyer une erreur si le dossier existe déjà. Le choix de l'emplacement /var/lib/bind/ plutôt que le traditionnel /etc/bind/ pour les fichiers de zone répond à une logique de sécurité et de bonnes pratiques système modernes. Sous Ubuntu, le profil de sécurité AppArmor autorise nativement BIND9 à écrire et modifier des fichiers dans /var/lib/bind/, ce qui est indispensable pour les futures mises à jour dynamiques ou les transferts de zone automatiques.
Rôle stratégique de ce répertoire
  • Organisation :
    En isolant les zones dans un sous-dossier spécifique, vous séparez clairement la configuration du logiciel (dans /etc/bind/) des données de résolution proprement dites.
  • Sécurité (AppArmor) :
    Ce répertoire est spécifiquement conçu pour héberger les données volatiles et évitera les blocages de sécurité fréquents lors de la tentative de modification de fichiers situés dans des dossiers protégés en lecture seule.
  • Maintenance :
    Centraliser vos fichiers de zone dans un dossier dédié facilite grandement les procédures de sauvegarde et de migration de votre infrastructure DNS.
Dans votre journal, cette étape est documentée comme la mise en place de la structure de données. Une fois ce dossier créé, vous disposez d'un réceptacle conforme aux normes de sécurité du système pour y déposer les définitions de votre domaine local, assurant ainsi une base saine pour la configuration de vos enregistrements réseau.
sudo mkdir -p /var/lib/bind/zones
Le fichier /etc/bind/named.conf.options constitue le centre de gestion comportemental de BIND9. Contrairement aux fichiers de zones qui gèrent les noms de domaines, ce fichier définit les règles globales de fonctionnement du serveur : qui a le droit de l'interroger, vers quels serveurs externes rediriger les requêtes inconnues, et comment sécuriser les échanges.
C'est ici que l'on configure la posture de sécurité du serveur DNS. Une directive mal ajustée pourrait transformer votre serveur en un "résolveur ouvert", vulnérable aux attaques par amplification DNS. À l'inverse, une configuration bien maîtrisée assure une résolution rapide et privée pour vos clients locaux.
L'architecture de ce fichier repose généralement sur trois blocs stratégiques :
 
  • Le contrôle d'accès (ACL) :
    Il est d'usage de définir une liste de confiance (souvent nommée trusted) contenant les adresses IP de votre réseau local. Cela permet de restreindre la récursion (la capacité du serveur à chercher une réponse sur Internet) à vos seuls équipements, interdisant ainsi toute sollicitation malveillante provenant de l'extérieur.
  • Les redirecteurs (Forwarders) :
    Si votre serveur ne connaît pas la réponse à une requête (par exemple, pour un site web public), il doit savoir à qui s'adresser. On y renseigne généralement les adresses des serveurs DNS de confiance comme ceux de Cloudflare (1.1.1.1) ou Google (8.8.8.8). Cela permet de bénéficier de leur cache massif tout en gardant une gestion locale.
  • La sécurité et le DNSSEC :
    Les options comme dnssec-validation auto garantissent que les réponses reçues des serveurs racines sont authentiques et n'ont pas été altérées durant le transit. C'est une protection essentielle contre l'empoisonnement de cache (DNS Poisoning).
 
Dans le cadre de votre déploiement, la modification de ce fichier transforme votre installation "brute" en un service réseau intelligent. En configurant les bonnes options, vous assurez que votre Mac Mini Server ne se contente pas de traduire des adresses locales, mais agit comme une passerelle performante et sécurisée vers l'Internet mondial pour l'ensemble de votre parc.
C'est l'étape où vous déterminez la politique de confidentialité de votre réseau : en choisissant vos redirecteurs et en limitant les accès, vous reprenez le contrôle total sur la manière dont vos périphériques communiquent avec le monde extérieur.
sudo nano /etc/bind/named.conf.options
options {

        // Répertoire de travail de BIND (cache, fichiers temporaires, etc.)
        directory "/var/cache/bind";

        // Serveur DNS externe utilisé pour résoudre
        // les domaines Internet (forwarder)
        forwarders {
                //1.1.1.1;   // DNS Cloudflare (rapide et fiable)
                //8.8.8.8;   // DNS Google (fallback)
// Envoi des requêtes vers Adguard 127.0.0.1 port 5354; }; // Autorise la résolution récursive pour les clients internes recursion yes; // Protection contre amplification DNS rate-limit { responses-per-second 10; }; // Limite la récursion au réseau local uniquement // évite de devenir un open resolver allow-recursion { 127.0.0.1; ::1; 172.16.0.0/16; 10.10.0.0/24; fd00:172:16::/64; }; // Autorise les requêtes DNS seulement depuis le LAN allow-query { 127.0.0.1; ::1; 172.16.0.0/16; 10.10.0.0/24; fd00:172:16::/64; }; // Empêcher totalement l’utilisation comme resolver externe allow-query-cache { 127.0.0.1; ::1; 172.16.0.0/16; 10.10.0.0/24; fd00:172:16::/64; }; // Validation DNSSEC automatique dnssec-validation auto; // Écoute sur toutes les interfaces IPv4 listen-on port 53 { 127.0.0.1; 172.16.0.2; }; // IPv6 activé (si inutile, tu peux mettre "none") // listen-on-v6 { none; }; listen-on-v6 port 53 { ::1; fd00:172:16::2; }; allow-transfer { none; }; minimal-responses yes; forward only; # <--- Le serveur ne cherchera jamais par lui-même };
Le fichier /etc/bind/named.conf.local est l'espace privilégié où l'administrateur définit la souveraineté de son réseau. Alors que le fichier des options gère le comportement global, le fichier .local est celui qui donne vie à vos domaines personnalisés. C’est ici que vous déclarez officiellement les zones dont votre serveur est le « maître », lui donnant ainsi l'autorité exclusive pour répondre aux requêtes concernant vos machines locales.
Dans une architecture DNS standard, ce fichier sert de table des matières. Chaque bloc de déclaration de zone pointe vers les fichiers de base de données que vous avez précédemment préparés dans /var/lib/bind/zones/.
 
La configuration de ce fichier repose sur deux types de déclarations indispensables pour une infrastructure complète :
  • La zone de recherche directe :
    Elle lie vos noms d'hôtes (ex: macminiserver.local) à leurs adresses IP. C'est la configuration que vous utiliserez le plus souvent pour accéder à vos services via un nom simple au lieu d'une suite de chiffres.
  • La zone de recherche inverse :
    Moins visible mais tout aussi critique, elle permet au réseau de faire le chemin inverse : retrouver un nom à partir d'une adresse IP. Cette configuration est essentielle pour le bon fonctionnement de nombreux services réseau et protocoles de sécurité qui vérifient l'identité des machines communicantes.
 
Pour votre journal d'administration, ce fichier représente la phase de personnalisation identitaire du serveur. En y inscrivant vos zones, vous passez d'un résolveur DNS générique à un serveur d'autorité privé. La syntaxe y est rigoureuse : chaque point-virgule et chaque accolade compte, car une erreur ici empêcherait le service named de charger vos domaines, même si le reste du système est parfaitement fonctionnel. C'est l'étape de transition finale où vous délimitez votre territoire numérique. Une fois ces zones déclarées et liées à leurs fichiers respectifs, votre Mac Mini Server devient le pivot central capable d'orchestrer la communication nominative de l'ensemble de votre parc informatique.
sudo nano /etc/bind/named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "bsalado.lan" {
    type master;
    file "/var/lib/bind/zones/db.bsalado.lan";
};

zone "0.16.172.in-addr.arpa" {
        type master;
        file "/var/lib/bind/zones/db.172.16";
};

// Split Horizon DNS - Permet d'accéder aux sites sans sortir sur internet
zone "bsalado.eu" {
    type master;
    file "/var/lib/bind/zones/db.bsalado.eu";
};
Le fichier /var/lib/bind/zones/db.bsalado.lan est le cœur de votre base de données DNS pour votre domaine local. C'est ici que sont consignées les données brutes qui font autorité sur votre réseau. Ce fichier de zone contient les enregistrements de ressources qui permettent de mapper vos noms d'hôtes personnalisés vers les adresses IP correspondantes.
Sa structure respecte un format standardisé (RFC 1035), débutant systématiquement par des paramètres de contrôle essentiels avant d'énumérer les machines de votre parc.
Les composants structurels du fichier
  • L'enregistrement SOA (Start of Authority) :
    Il s'agit de la carte d'identité de la zone. Il définit le serveur DNS principal, l'adresse email de l'administrateur et les paramètres de temporisation (rafraîchissement, expiration). Le numéro de série (souvent au format AAAAMMDDXX) est crucial. il doit être incrémenté à chaque modification pour que les changements soient propagés et pris en compte par le service.
  • Les enregistrements NS (Name Server) :
    Ils déclarent officiellement quels serveurs sont habilités à répondre pour le domaine bsalado.lan. En règle générale, vous y désignerez votre Mac Mini Server.
  • Les enregistrements A (Address) :
    C'est le cœur du fichier. Chaque ligne associe un nom (ex: macmini ou serveur-web) à une adresse IPv4. C'est cette directive qui permet d'atteindre vos machines par leur nom.
  • Les enregistrements CNAME (Canonical Name) :
    Ils servent à créer des alias. Par exemple, vous pouvez faire pointer ssh.bsalado.lan vers macmini.bsalado.lan, permettant une gestion plus souple de vos services sans multiplier les adresses IP.
 
Dans votre journal, la création de ce fichier est notée comme l'étape de configuration la plus sensible. Le format DNS est extrêmement rigoureux : l'oubli d'un point final à la fin d'un nom de domaine pleinement qualifié (FQDN) peut entraîner des erreurs de résolution en cascade, le serveur interprétant alors le nom comme un sous-domaine.
Ce fichier est le reflet exact de votre inventaire réseau. Une fois peuplé et validé par l'outil named-checkzone, il donne au réseau sa dimension nominative finale. Vous passez d'une gestion basée sur la mémoire des chiffres à une infrastructure où chaque ressource possède une identité textuelle stable, propre et professionnelle.
sudo nano /var/lib/bind/zones/db.bsalado.lan
$TTL    86400
@       IN      SOA     macminiserver.bsalado.lan. admin.bsalado.lan. (
                              2026050902         ; Serial (AAAA/MM/JJnn)
                              604800             ; Refresh
                              86400              ; Retry
                              2419200            ; Expire
                              604800 )           ; Negative Cache TTL
;
@                     IN      NS      macminiserver.bsalado.lan.
@                     IN      A       172.16.0.2
@                     IN      AAAA    fd00:172:16::2
macminiserver   IN      AAAA    fd00:172:16::2

macminiserver IN A 172.16.0.2 box IN A 172.16.0.1 macmini2009 IN A 172.16.0.4 macmini2018 IN A 172.16.0.6 orbis IN A 172.16.0.10 canon IN A 172.16.0.11 ds920 IN A 172.16.0.17 ds720 IN A 172.16.0.19 ds115 IN A 172.16.0.21 lacie5big IN A 172.16.0.22 hpz600 IN A 172.16.0.23 hpelitedesk IN A 172.16.0.24 tydom IN A 172.16.0.25 macstudio IN A 172.16.0.141 macpro IN A 172.16.0.142
Le fichier /var/lib/bind/zones/db.172.16 héberge la zone de recherche inverse (Reverse DNS) de votre réseau. Si le fichier de zone directe permet de trouver une IP à partir d'un nom, celui-ci remplit la fonction opposée : il permet au système de traduire l'adresse IP 172.16.0.2 en nom d'hôte macminiserver.bsalado.lan.
Cette configuration est loin d'être un luxe. De nombreux services réseau, protocoles de sécurité et outils de diagnostic (comme traceroute ou certains serveurs de mail) effectuent des vérifications inverses pour s'assurer que l'identité d'une machine est cohérente. Sans cette zone, votre infrastructure serait techniquement fonctionnelle mais incomplète et potentiellement ralentie par des délais d'attente lors de ces vérifications.

Les spécificités de la zone inverse : 
  • Le nommage in-addr.arpa :
    C'est la convention mondiale pour le DNS inversé. Pour un réseau 172.16.0.0/16, la zone est nommée de manière inversée dans la configuration : 16.172.in-addr.arpa.
  • L'enregistrement PTR (Pointer) :
    Contrairement à la zone directe qui utilise des enregistrements de type A, la zone inverse utilise des enregistrements PTR. Chaque entrée lie le dernier octet de l'IP au nom de domaine complet.
  • Cohérence du SOA :
    Comme pour la zone directe, ce fichier possède son propre enregistrement SOA. Il est impératif que le numéro de série soit incrémenté ici aussi à chaque modification pour garantir la synchronisation du serveur.
La création de ce fichier marque l'aboutissement de la symétrie de votre serveur DNS. En déclarant vos machines dans les deux sens (Direct et Inverse), vous garantissez une stabilité totale des communications internes. Dans votre flux de travail, c'est l'étape qui assure que votre Mac Mini Server ne se contente pas de pointer vers des cibles, mais qu'il est capable d'identifier formellement chaque acteur du réseau par son adresse physique.
C'est une preuve de rigueur technique. Un serveur DNS professionnel se reconnaît à la présence d'une zone inverse parfaitement entretenue, évitant ainsi les erreurs de résolution "inconnue" lors des audits réseau ou de l'utilisation d'outils de surveillance.
sudo nano /var/lib/bind/zones/db.172.16
$TTL    86400
@       IN      SOA     macminiserver.bsalado.lan. admin.bsalado.lan. (
                              2026042502
                              604800
                              86400
                              2419200
                              604800 )
;
@       IN      NS      macminiserver.bsalado.lan.

1       IN      PTR     box.bsalado.lan.
2       IN      PTR     macminiserver.bsalado.lan.
6       IN      PTR     macmini2018.bsalado.lan.
4       IN      PTR     macmini2009.bsalado.lan.
10      IN      PTR     orbis.bsalado.lan.
11      IN      PTR     canon.bsalado.lan.
17      IN      PTR     ds920.bsalado.lan.
19      IN      PTR     ds720.bsalado.lan.
21      IN      PTR     ds115.bsalado.lan.
22      IN      PTR     lacie5big.bsalado.lan.
23      IN      PTR     hpz600.bsalado.lan.
24      IN      PTR     hpelitedesk.bsalado.lan.
25      IN      PTR     tydom.bsalado.lan.
141     IN      PTR     macstudio.bsalado.lan.
142     IN      PTR     macpro.bsalado.lan.
Le fichier /var/lib/bind/zones/db.bsalado.eu représente l'extension de votre infrastructure vers un nom de domaine public ou une racine de réseau plus vaste. Contrairement à une extension en .lan, l'utilisation du suffixe .eu suggère une volonté d'unifier l'identité de votre réseau local avec un domaine potentiellement accessible ou reconnu à l'extérieur, offrant une dimension plus professionnelle et pérenne à votre adressage.
Ce fichier est le réceptacle des enregistrements qui font autorité pour cette zone spécifique. Il transforme votre Mac Mini Server en un véritable gardien d'identité, capable de répondre avec précision à toute requête concernant les sous-domaines de bsalado.eu au sein de votre périmètre réseau.
 
La structure d'un fichier de zone pour un domaine de premier niveau (TLD) comme le .eu exige une rigueur absolue pour assurer la fluidité des services :
  • SOA (Start of Authority) :
    Définit les paramètres vitaux de la zone. Il contient le nom du serveur maître, le contact de l'administrateur et les durées de vie des informations (TTL), essentielles pour la gestion du cache.
  • Enregistrements A :
    Ils lient vos services stratégiques à leurs IP fixes (ex: cloud.bsalado.eu, vpn.bsalado.eu).
  • Enregistrements MX (Mail Exchange) :
    Si vous envisagez de gérer ou de diriger des flux de messagerie, ces lignes indiquent aux autres serveurs vers quelle machine acheminer les courriels destinés à votre domaine.
  • Enregistrements TXT :
    Utilisés souvent pour la sécurité et la validation (comme le SPF ou le DKIM), ils permettent de prouver l'authenticité de votre serveur auprès des entités externes.

Dans votre journal, la création de cette zone symbolise la maturité de votre configuration. En optant pour un domaine en .eu, vous préparez votre infrastructure à une éventuelle exposition de services (via un reverse proxy ou une redirection de port) tout en conservant une logique de nommage cohérente entre l'usage interne et les accès distants.

C'est l'étape où votre réseau local cesse d'être une île isolée pour adopter les standards du web mondial. Une fois ce fichier configuré et lié dans named.conf.local, votre serveur DNS est prêt à résoudre des adresses qui portent la signature d'une identité numérique complète et maîtrisée de bout en bout.
sudo nano /var/lib/bind/zones/db.bsalado.eu
;Evite cache long lors futurs changements (Docker, reverse proxy…)
$TTL    300
@       IN      SOA     macminiserver.bsalado.lan. admin.bsalado.lan. (
                        2026050902
                        604800
                        86400
                        2419200
                        604800 )

@               IN      NS      macminiserver.bsalado.lan.

@                 IN      A       172.16.0.2
www             IN      A       172.16.0.2
@                 IN      AAAA    fd00:172:16::2
www             IN      AAAA    fd00:172:16::2

bitwarden           IN      AAAA    fd00:172:16::2
stirling               IN      AAAA    fd00:172:16::2
fossflow             IN      AAAA    fd00:172:16::2
phpmyadmin      IN      AAAA    fd00:172:16::2
glpi                   IN      AAAA    fd00:172:16::2
adguard            IN      AAAA    fd00:172:16::2

bitwarden         IN      A        172.16.0.2
stirling              IN      A        172.16.0.2
fossflow            IN      A        172.16.0.2
ds920               IN      A        172.16.0.17
phpmyadmin     IN      A        172.16.0.2
glpi                   IN      A       172.16.0.2
adguard            IN      A       172.16.0.2
cockpit              IN      A       172.16.0.2
L'exécution de la commande sudo chown bind:bind /var/lib/bind/zones/db.* constitue l'étape finale et indispensable de la gestion des droits d'accès. Elle transfère la propriété de vos fichiers de zones à l'utilisateur système et au groupe bind. Sans cette intervention, le démon BIND9, qui s'exécute avec ses propres privilèges restreints par mesure de sécurité, se verrait refuser l'accès en lecture à ses propres bases de données de noms, provoquant un échec critique du service malgré une configuration syntaxique parfaite.
Cette manipulation verrouille la cohérence sécuritaire de votre installation. En limitant la propriété de ces fichiers sensibles à l'utilisateur dédié, vous appliquez le principe du moindre privilège : seul le service DNS peut manipuler ces données, protégeant ainsi l'intégrité de votre résolution de noms contre d'éventuelles modifications non autorisées par d'autres processus du système.
Alignement avec les mécanismes de sécurité
L'importance de cette commande dépasse la simple gestion de fichiers. Sous Linux, et particulièrement avec Ubuntu, le contrôle d'accès est renforcé par des profils de sécurité comme AppArmor. Ce dernier s'attend à ce que le processus named interagisse avec des fichiers dont les permissions sont explicitement alignées sur son identité numérique. En harmonisant la propriété des fichiers db.*, vous éliminez les erreurs de type "Permission denied" qui polluent souvent les journaux système (/var/log/syslog) lors du démarrage du service.
Validation du déploiement
Dans votre journal, cet acte symbolise la transition du fichier "texte" (rédigé par l'administrateur root) vers le fichier "système" (exploité par le service). Une fois la propriété ajustée, vous pouvez effectuer un dernier redémarrage du service (sudo systemctl restart named) pour confirmer que BIND9 intègre désormais l'ensemble de vos zones bsalado.lan et bsalado.eu sans aucune friction logicielle. Votre infrastructure est maintenant prête à répondre aux requêtes de tous les clients du réseau avec une fiabilité de niveau professionnel.
sudo chown bind:bind /var/lib/bind/zones/db.*
La commande sudo chmod 664 /var/lib/bind/zones/db.* parachève la configuration de la sécurité des fichiers en définissant précisément les droits de lecture et d'écriture. Dans l'écosystème Linux, le mode 664 octroie des droits de lecture et d'écriture au propriétaire (l'utilisateur bind) et au groupe, tout en limitant les autres utilisateurs du système à la simple lecture seule.
Cette étape est cruciale pour l'équilibre entre accessibilité et protection. En permettant au groupe bind de modifier ces fichiers, vous autorisez le service à effectuer des mises à jour dynamiques si nécessaire, tout en garantissant qu'un utilisateur non privilégié ne pourra jamais altérer votre base de données DNS.

Signification technique du mode 664

  • 6 (Propriétaire) :
    Lecture et écriture pour l'utilisateur bind.
  • 6 (Groupe) :
    Lecture et écriture pour les membres du groupe bind.
  • 4 (Autres) :
    Lecture seule, ce qui empêche toute modification accidentelle ou malveillante par des processus tiers.
 
Le service BIND9 est particulièrement sensible aux permissions de fichiers. Un fichier trop restrictif empêcherait le chargement des zones, tandis qu'un fichier trop ouvert (comme le mode 777) représenterait une faille de sécurité majeure. Le réglage 664 est le standard recommandé pour les zones DNS car il respecte la structure de sécurité d'Ubuntu et d'AppArmor, permettant au démon de fonctionner sans entrave tout en restant confiné dans ses privilèges.
Dans votre journal, cette commande clôture la phase de préparation des fichiers. Vos zones sont désormais prêtes : elles appartiennent au bon utilisateur, au bon groupe, et possèdent les permissions optimales pour une exploitation stable et sécurisée. Vous avez désormais toutes les garanties pour que BIND9 puisse lire et servir vos noms de domaine sans la moindre erreur de privilège.
sudo chmod 664 /var/lib/bind/zones/db.*
Le fichier /etc/resolv.conf est le point de contact final entre le système d'exploitation et le monde du DNS. C'est ici que Linux définit l'adresse du serveur vers lequel il doit envoyer ses propres requêtes de résolution de noms. Dans votre configuration, ce fichier est le verrou qui permet à votre machine d'utiliser le serveur BIND9 que vous venez de configurer.
Rôle et fonctionnement
Historiquement, ce fichier est le résolveur de la bibliothèque C du système. Lorsqu'une application (comme votre navigateur ou une commande apt) a besoin de traduire un nom en IP, elle consulte /etc/resolv.conf pour savoir à qui poser la question. On y trouve généralement deux directives majeures :
  • nameserver :
    L'adresse IP du serveur DNS. Pour que votre machine s'interroge elle-même (puisqu'elle héberge BIND9), on y place souvent 127.0.0.1.
  • search :
    Le domaine par défaut à compléter. Si vous tapez juste macmini, le système essaiera automatiquement macmini.bsalado.lan.
 
Sur les versions modernes d'Ubuntu, ce fichier n'est plus un simple fichier texte statique. Il est souvent géré par systemd-resolvedSi vous modifiez ce fichier manuellement, vos changements risquent d'être écrasés au prochain redémarrage ou lors d'un changement de configuration réseau. Pour lier définitivement votre système à votre nouveau serveur BIND9, il est préférable de passer par la configuration de l'interface réseau (via Netplan) ou de modifier le lien symbolique de /etc/resolv.conf pour qu'il pointe vers la configuration statique souhaitée.
sudo nano /etc/resolv.conf
nameserver 127.0.0.1
nameserver 172.16.0.2
search bsalado.lan
Le fichier suivant est le panneau de contrôle de systemd-resolved, le service qui gère la résolution DNS pour les applications locales sur Ubuntu. Dans votre architecture, il sert de pivot pour s'assurer que le système d'exploitation lui-même utilise bien votre instance BIND9.
Directives stratégiques de la Section [Resolve] :
  • DNS= :
    Définit l'adresse du serveur DNS prioritaire. En y inscrivant 127.0.0.1, vous forcez votre machine à interroger votre propre serveur BIND9 avant tout autre.
  • FallbackDNS= :
    Liste les serveurs de secours (ex: 1.1.1.1 ou 8.8.8.8). Ils ne sont sollicités que si BIND9 ne répond pas.
  • Domains= :
    Spécifie vos suffixes DNS personnels (bsalado.lan, bsalado.eu). Cela permet d'atteindre une machine par son nom court sans avoir à saisir le nom complet (FQDN).
  • DNSStubListener= :
    Détermine si systemd-resolved doit écouter sur 127.0.0.53:53. Le régler sur no libère totalement le port 53 si vous souhaitez que BIND9 gère toutes les requêtes sans intermédiaire.
sudo nano /etc/systemd/resolved.conf 
[Resolve]
DNS=127.0.0.1
FallbackDNS=
Domains=bsalado.lan
DNSStubListener=no
La commande sudo systemctl restart systemd-resolved est l'action qui concrétise vos modifications de configuration au niveau du système. En redémarrant ce service, vous forcez Ubuntu à recharger le fichier /etc/systemd/resolved.conf et à réinitialiser son cache DNS localC'est l'étape charnière où le système d'exploitation abandonne ses anciens paramètres (souvent fournis par votre box internet via DHCP) pour adopter votre nouvelle infrastructure BIND9 comme source de vérité.
 
Impact immédiat sur la machine
 
  • Rechargement des directives :
    Le système lit vos nouvelles instructions DNS=, FallbackDNS= et Domains=.
  • Purge du cache :
    Toutes les anciennes résolutions de noms stockées en mémoire sont effacées, garantissant que les prochaines requêtes refléteront bien vos fichiers de zones (db.bsalado.lan, etc.).
  • Application du routage DNS :
    Si vous avez désactivé le DNSStubListener, le service libère le port 53, évitant ainsi tout conflit de voisinage avec BIND9.
sudo systemctl restart systemd-resolved
La commande sudo systemctl status systemd-resolved vous permet de vérifier que le gestionnaire de résolution DNS d'Ubuntu a correctement intégré vos nouveaux paramètres après son redémarrage. C'est l'outil de diagnostic final pour s'assurer que la couche réseau "client" du serveur est saine.
 
Éléments à surveiller dans la sortie :
 
  • Active: active (running) :
    Indique que le service est opérationnel. S'il est en état degraded ou failed, cela signifie généralement une erreur de syntaxe dans /etc/systemd/resolved.conf.
  • Processing requests :
    Dans les journaux en bas de la commande, vous devriez voir que le service a fini de configurer les interfaces.
  • Logs d'erreurs :
    Si le port 53 est déjà utilisé par BIND9 et que vous n'avez pas désactivé le DNSStubListener, des messages de conflit d'adresse apparaîtront ici.
 
Même si BIND9 fonctionne parfaitement, si systemd-resolved rencontre un problème, votre serveur Mac Mini Server lui-même ne pourra plus naviguer sur Internet ou résoudre les noms de votre propre réseau. Le statut doit être "clean" (propre) pour garantir une expérience fluide.
Si vous voyez des erreurs liées au lien symbolique de /etc/resolv.conf, c'est ici que le système vous le signalera. Un systemd-resolved bien configuré est le garant que votre configuration DNS survivra aux mises à jour système et aux changements d'état du réseau. Une fois ce service validé, votre chaîne de résolution est complète : l'application demande au système (systemd-resolved), qui demande à BIND9, qui interroge vos fichiers de zones ou les redirecteurs externes. Votre infrastructure est officiellement sous contrôle.
sudo systemctl status systemd-resolved
systemd-resolved.service - Network Name Resolution
     Loaded: loaded (/lib/systemd/system/systemd-resolved.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2026-05-09 15:54:02 CEST; 21h ago
       Docs: man:systemd-resolved.service(8)
             man:org.freedesktop.resolve1(5)
             https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-managers
             https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients
Main PID: 613 (systemd-resolve)
     Status: "Processing requests..."
      Tasks: 1 (limit: 9076)
     Memory: 9.7M
        CPU: 327ms
     CGroup: /system.slice/systemd-resolved.service
          └─613 /lib/systemd/systemd-resolved
mai 09 15:54:02 macminiserver systemd[1]: Starting Network Name Resolution...
mai 09 15:54:02 macminiserver systemd-resolved[613]: Positive Trust Anchors:
mai 09 15:54:02 macminiserver systemd-resolved[613]: . IN DS 20326 8 2 e06d44b80b8f1d39a95c0b0d7c65d08458e880409bbc683457104237c7f8ec8d
mai 09 15:54:02 macminiserver systemd-resolved[613]: Negative trust anchors: home.arpa 10.in-addr.arpa 16.172.in-addr.arpa 17.172.in-addr.arpa >
mai 09 15:54:02 macminiserver systemd-resolved[613]: Using system hostname 'macminiserver'.
mai 09 15:54:02 macminiserver systemd[1]: Started Network Name Resolution.
La commande sudo systemctl restart named est l'étape de vérité. En redémarrant le service BIND9 (connu sous le nom de processus named), vous demandez au serveur de charger l'intégralité de la configuration que vous avez patiemment mise en place : les options globales, les déclarations de zones et les fichiers de données (db.*). C'est à cet instant précis que vos domaines bsalado.lan et bsalado.eu deviennent actifs sur le réseau.
 
Ce qui se passe en coulisses :
 
  • Validation Syntaxique :
    Le service relit /etc/bind/named.conf. Si une seule virgule manque ou si une accolade est mal fermée, le service refusera de démarrer pour protéger l'intégrité du système.
  • Chargement des Zones :
    BIND9 lit vos fichiers dans /var/lib/bind/zones/. Il vérifie les numéros de série (SOA) pour s'assurer qu'il dispose de la version la plus récente de votre base de données.
  • Ouverture du Port 53 : Le serveur se met à l'écoute sur toutes les interfaces réseau configurées, prêt à répondre aux requêtes UDP et TCP des clients de votre parc.
 
Après cette commande, il est impératif de vérifier que tout s'est déroulé comme prévu :
  • Le statut du service :
    sudo systemctl status named pour confirmer que le cercle est bien vert (active/running).
  • Les journaux système :
    sudo journalctl -u named -n 50 pour vérifier qu'aucune zone n'a été ignorée (recherchez la mention "loaded serial X" pour chaque zone).
  • Le test de résolution :
    Utilisez la commande dig @127.0.0.1 macmini.bsalado.lan pour confirmer que le serveur répond correctement à ses propres définitions.
 
Dans votre journal d'administration, ce redémarrage marque la mise en production officielle. Votre Mac Mini Server est désormais un serveur DNS d'autorité, capable de transformer des noms intelligibles en adresses IP au sein de votre infrastructure, tout en sécurisant et en accélérant les accès vers l'extérieur. Votre architecture réseau est maintenant dotée d'une colonne vertébrale solide et professionnelle.
sudo systemctl restart named
La commande sudo systemctl status named est le juge de paix de votre configuration. Elle vous fournit un rapport détaillé sur l'état de santé de votre serveur DNS BIND9 et confirme si les fichiers de zones que vous avez créés sont opérationnels.
 
Lorsqu'on analyse le retour de cette commande, trois zones d'informations sont vitales :
 
  • Le voyant d'activité (Active: active (running)) :
    C'est le signal vert. Il confirme que le processus named est en cours d'exécution et qu'il n'a pas rencontré d'erreur fatale au démarrage.
  • La ligne Main PID :
    Elle vous donne l'identifiant du processus, utile pour surveiller la consommation de ressources (CPU/RAM) de votre serveur DNS sur le Mac Mini Server.
  • Le flux de journalisation (Log stream) :
    Les dernières lignes affichées sont les plus précieuses. C'est ici que BIND9 confirme le chargement de vos zones.
    Vous devriez voir des messages du type : 
    all zones loaded, running, zone bsalado.lan/IN: loaded serial 2026051001
 
Si le statut est failed ou error, le journal affiché en bas vous indiquera précisément la ligne fautive :
  • "permission denied" :
    Vérifiez à nouveau les commandes chown et chmod sur vos fichiers /var/lib/bind/zones/.
  • "syntax error" : Un point-virgule ou une accolade manque probablement dans l'un de vos fichiers /etc/bind/named.conf.*.
  • "file not found" : Le chemin déclaré dans named.conf.local ne correspond pas exactement à l'emplacement de vos fichiers db.*.
 
Cette étape clôture techniquement votre phase d'installation et de configuration. Avec un statut active, votre infrastructure de nommage est désormais une réalité technique. Votre Mac Mini Server est prêt à servir de phare pour toutes les requêtes DNS de votre réseau local, transformant vos domaines .lan et .eu en destinations concrètes pour vos utilisateurs.
sudo systemctl status named
named.service - BIND Domain Name Server
     Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2026-05-09 15:54:04 CEST; 21h ago
       Docs: man:named(8)
   Main PID: 733 (named)
      Tasks: 8 (limit: 9076)
     Memory: 33.3M
        CPU: 59.013s
     CGroup: /system.slice/named.service
             └─733 /usr/sbin/named -u bind
mai 10 13:39:36 macminiserver named[733]: validating p2p-sgp-2.anker-in.com/A: no valid signature found
mai 10 13:39:36 macminiserver named[733]: validating p2p-par-2.anker-in.com/A: no valid signature found
mai 10 13:40:49 macminiserver named[733]: chase DS servers resolving 'adsafeprotected.com/DS/IN': 127.0.0.1#5354
mai 10 13:40:49 macminiserver named[733]: broken trust chain resolving 'fw.adsafeprotected.com/A/IN': 127.0.0.1#5354
mai 10 13:40:49 macminiserver named[733]: broken trust chain resolving 'fw.adsafeprotected.com/HTTPS/IN': 127.0.0.1#5354
mai 10 13:40:49 macminiserver named[733]: chase DS servers resolving 'adsafeprotected.com/DS/IN': 127.0.0.1#5354
mai 10 13:40:49 macminiserver named[733]: broken trust chain resolving 'mobile.adsafeprotected.com/A/IN': 127.0.0.1#5354
mai 10 13:40:49 macminiserver named[733]: broken trust chain resolving 'unified.adsafeprotected.com/A/IN': 127.0.0.1#5354
mai 10 13:49:36 macminiserver named[733]: validating p2p-sgp-2.anker-in.com/A: no valid signature found
mai 10 13:49:36 macminiserver named[733]: validating p2p-par-2.anker-in.com/A: no valid signature found
La commande sudo named-checkconf est votre filet de sécurité. Elle agit comme un compilateur de vérification qui scanne l'intégralité de vos fichiers de configuration BIND9 (/etc/bind/named.conf et ses inclusions) à la recherche d'erreurs de syntaxe avant que le service ne soit perturbé.
L'une des particularités de cette commande est sa discrétion :

  • Si la commande ne renvoie rien :
    C'est une excellente nouvelle. Cela signifie que la syntaxe globale est parfaite. Les accolades sont fermées, les points-virgules sont à leur place et la structure des blocs est respectée.
  • Si elle affiche des messages d'erreur :
    Elle vous donnera le nom du fichier et le numéro de la ligne concernée. C'est un gain de temps précieux qui vous évite de chercher une aiguille dans une botte de foin.
 
Il est important de comprendre les limites de cet outil pour votre journal d'administration :

  • Ce qu'elle valide :
    La "grammaire" des fichiers de configuration. Par exemple, si vous avez oublié un point-virgule dans named.conf.options, elle le signalera immédiatement.
  • Ce qu'elle ne valide pas :
    Le contenu interne de vos fichiers de zones (db.bsalado.lan, etc.). Elle vérifie que les fichiers sont déclarés correctement, mais pas si vous avez fait une erreur dans un enregistrement IP à l'intérieur d'une zone.

Dans une administration système rigoureuse, la séquence devrait toujours être la suivante :
  • Modification d'un fichier de configuration.
  • Exécution de sudo named-checkconf.
  • Si le retour est vide, exécution de sudo systemctl restart named.

En suivant ce protocole, vous garantissez que votre serveur DNS sur le Mac Mini Server ne subira jamais d'interruption de service à cause d'une simple erreur de frappe. C'est l'étape qui sépare l'amateur du professionnel dans la gestion d'infrastructure.
sudo named-checkconf

 CONCLUSION

 La mise en place d'un serveur DNS sous Ubuntu, orchestrée autour de l'outil de référence BIND9, transforme une machine comme le Mac Mini Server en une pièce maîtresse de l'infrastructure réseau. Ce déploiement ne se limite pas à une simple installation logicielle, mais constitue une véritable structuration de l'identité numérique locale à travers les zones bsalado.lan et bsalado.eu. Chaque étape de la configuration, de la définition rigoureuse des fichiers de zones à la précision chirurgicale de la recherche inverse, participe à la création d'un environnement réseau fluide, prévisible et professionnel.
La robustesse de ce serveur repose sur un équilibre strict entre la configuration logique et la sécurité système. L'application méticuleuse des droits de propriété et des permissions sur les répertoires de zones garantit que le service opère dans un cadre confiné et protégé, évitant ainsi les vulnérabilités courantes liées aux accès non autorisés. En harmonisant la couche applicative avec les mécanismes de résolution internes d'Ubuntu via la gestion de systemd-resolved, on assure une cohérence totale : le serveur devient son propre client, validant par sa propre stabilité l'efficacité de sa configuration.
Enfin, la pérennité d'un tel système est assurée par une méthodologie d'administration rigoureuse. L'usage systématique d'outils de vérification syntaxique avant tout redémarrage du service minimise les risques d'interruption de service. Cette démarche transforme la gestion manuelle des fichiers de configuration en une pratique d'ingénierie fiable, offrant au réseau une colonne vertébrale capable de traduire instantanément les besoins des utilisateurs en réalités techniques IP, tout en ouvrant la porte à des services plus complexes comme l'hébergement web ou la gestion sécurisée de courriels.

 8 - INSTALLATION ET CONFIGURATION DU SERVEUR VPN

 image 0005
Schéma de principe - Installation serveur VPN.

L’intégration d’un serveur WireGuard sur votre infrastructure marque une étape décisive dans la sécurisation et l’accessibilité de votre réseau domestique. Contrairement aux protocoles plus anciens et complexes comme IPsec ou OpenVPN, WireGuard se distingue par une approche moderne, utilisant une base de code extrêmement légère et des primitives cryptographiques de pointe. Son implémentation sur Ubuntu permet d'établir un tunnel chiffré performant, idéal pour transformer votre Mac Mini Server en une passerelle sécurisée capable de relier vos appareils mobiles à vos services locaux bsalado.lan et bsalado.eu, où que vous soyez dans le monde.
L'architecture de WireGuard repose sur un concept fondamentalement différent des solutions traditionnelles : il fonctionne sans état (stateless) du point de vue de la connexion, traitant les échanges de données avec la même simplicité que des paquets IP classiques. Cette caractéristique lui confère une rapidité d'exécution exceptionnelle et une consommation de ressources minimale, tout en garantissant une reconnexion quasi instantanée lors des changements de réseau (passage de la 4G/5G au Wi-Fi). Pour votre journal d'administration, ce projet symbolise l'extension de votre périmètre de confiance, où la frontière entre le réseau local et l'Internet public s'efface au profit d'un accès distant transparent et hautement sécurisé.
Cette mise en place complète idéalement votre serveur DNS BIND9. En acheminant le trafic DNS de vos clients VPN vers votre instance locale, vous bénéficiez de la résolution de vos noms de domaine personnalisés même en déplacement, tout en profitant d'un filtrage et d'une confidentialité accrus. C'est la pierre angulaire qui finalise votre autonomie numérique, vous offrant un contrôle total sur vos données et vos accès, tout en maintenant un niveau de performance compatible avec les usages modernes de streaming et de transfert de fichiers lourds.
Le fichier /etc/sysctl.conf est le centre de pilotage du noyau Linux (le kernel). Dans le cadre de l'installation d'un serveur WireGuard, ce fichier revêt une importance capitale : il permet de transformer votre Mac Mini Server d'une simple machine terminale en un véritable routeur réseau. Sans intervention dans ce fichier, votre serveur VPN recevrait les données de vos appareils distants mais serait incapable de les "faire passer" vers le reste de votre réseau local ou vers Internet.
La directive la plus cruciale que vous devez activer est le Forwarding IP. Par défaut, pour des raisons de sécurité, Linux ignore les paquets qui ne lui sont pas directement destinés. En modifiant /etc/sysctl.conf, vous autorisez le noyau à rediriger les paquets entre l'interface virtuelle du VPN (souvent wg0) et votre interface réseau physique (Ethernet ou Wi-Fi).
La ligne à décommenter ou à ajouter est généralement : net.ipv4.ip_forward=1
 
Pourquoi est-ce vital pour WireGuard ?
  • Accès au LAN :
    Cela permet à votre smartphone, connecté en 5G via WireGuard, d'atteindre votre serveur de fichiers ou vos services .lan.
  • Navigation sécurisée :
    Cela permet de faire transiter tout votre trafic internet par le VPN, utilisant ainsi la connexion de votre domicile (et votre serveur DNS BIND9) même depuis un Wi-Fi public non sécurisé.
  • Performance :
    Les modifications dans sysctl agissent directement au niveau du noyau, garantissant que le routage se fait avec une latence minimale.

Contrairement à d'autres fichiers de configuration, les modifications de sysctl.conf ne sont pas prises en compte instantanément à la sauvegarde du fichier. Pour que le noyau lise vos nouveaux paramètres sans redémarrer la machine, vous devez exécuter la commande : sudo sysctl -p
Dans votre infrastructure, /etc/sysctl.conf est la commande de "déverrouillage" des flux. C'est le pont technique qui relie le tunnel chiffré WireGuard à la réalité physique de votre réseau local. Une fois le routage activé, votre serveur ne se contente plus de parler avec vos clients VPN ; il devient le carrefour par lequel transite toute votre vie numérique sécurisée. Ce fichier définit la stratégie de communication profonde du serveur. En ajustant ces paramètres, vous configurez la manière dont le noyau Linux gère les paquets de données qui transitent par vos interfaces physiques et virtuelles.
L'activation de net.ipv4.ip_forward=1 est impérative pour un serveur WireGuard. Cette directive autorise le système à rediriger les paquets reçus sur une interface (comme le tunnel VPN wg0) vers une autre interface (comme l'Ethernet eth0). Sans ce réglage, votre serveur agirait comme un cul-de-sac : il recevrait les données chiffrées de vos clients, mais refuserait de les transmettre au réseau local ou à Internet. Contrairement à une configuration restrictive, l'activation explicite de l'IPv6 (disable_ipv6 = 0) indique une volonté d'exploiter la double pile (Dual-Stack).

Ce qui montrera :
  • Connectivité moderne :
    Cela permet à votre serveur de communiquer nativement avec les services et infrastructures qui privilégient désormais l'IPv6 sur l'Internet moderne.
  • Performance :
    Dans certains environnements réseau, l'IPv6 peut offrir des routes plus directes et réduire la nécessité du NAT (Network Address Translation), simplifiant ainsi la traversée de certains pare-feu.
  • Complexité accrue :
    Ce choix impose toutefois une vigilance doublée. Vous devrez vous assurer que votre configuration WireGuard et vos règles de pare-feu (via ufw ou nftables) protègent aussi bien le trafic IPv4 que le trafic IPv6 pour éviter toute exposition involontaire.

Cette étape marque le passage du Mac Mini Server du statut d'hôte passif à celui de passerelle active. En ouvrant le routage IPv4 tout en embrassant la modernité de l'IPv6, vous créez une infrastructure réseau hybride capable de gérer les flux de données avec une flexibilité maximale. C'est le socle sur lequel repose l'efficacité de votre futur tunnel VPN.
sudo nano /etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

#Activation de l'IP v6
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
La commande sudo modprobe wireguard est l'action qui injecte officiellement le moteur de WireGuard dans les veines de votre système. Contrairement à d'autres solutions VPN qui s'exécutent comme de simples logiciels utilisateurs, WireGuard s'installe directement au sein du noyau (kernel) Linux.
En exécutant modprobe, vous demandez au noyau de charger le module spécifique à WireGuard. Cette intégration "au plus près du métal" offre des avantages majeurs :
  • Vitesse fulgurante :
    Les données n'ont pas besoin de faire des allers-retours entre l'espace utilisateur et le noyau, ce qui réduit drastiquement la latence.
  • Efficacité énergétique :
    Pour un serveur comme votre Mac Mini Server, cela signifie moins de cycles CPU gaspillés et donc moins de chauffe.
  • Stabilité :
    Une fois chargé, le protocole est géré nativement par le système, le rendant aussi robuste qu'une interface Ethernet classique.

Le chargement manuel via modprobe n'est que temporaire (il disparaît au redémarrage). Pour que votre serveur VPN soit toujours opérationnel après une coupure de courant ou une mise à jour, il est d'usage d'ajouter wireguard au fichier /etc/modules.
Dans ce projet, cette commande représente le passage à l'acte matériel. Vous avez configuré la logique réseau avec sysctl, et maintenant vous activez le moteur cryptographique. Le noyau de votre Ubuntu est désormais "augmenté" et possède la capacité native de créer des interfaces réseau chiffrées de haute performance. Votre Mac Mini Server est maintenant techniquement prêt à accueillir ses premiers tunnels.
sudo modprobe wireguard
La commande lsmod | grep wireguard est l'outil de diagnostic qui confirme la présence effective du protocole au cœur de votre système. Elle interroge la liste des modules actuellement chargés dans la mémoire du noyau Linux pour s'assurer que WireGuard est prêt à traiter le trafic chiffré.
Interprétation du résultat :
  • Si le module est correctement chargé, la commande renvoie une ligne structurée comme suit :
    wireguard 98304 0
  • Module :
    Le nom du pilote (wireguard).
  • Size :
    La taille occupée en mémoire (en octets). Sa légèreté est ici flagrante par rapport à d'autres protocoles.
  • Used by :
    Le nombre d'interfaces VPN actuellement actives (si vous venez de faire le modprobe sans avoir créé d'interface wg0, ce chiffre sera à 0).
Dans le cadre de votre journal d'administration, cette commande valide que la couche logicielle a bien fusionné avec la couche système. Sans ce module chargé en mémoire, toute tentative de monter une interface VPN via wg-quick ou nmcli se solderait par une erreur de type "Unknown device".

Si la commande ne renvoie rien, cela signifie que le module n'est pas chargé. Les causes possibles sont :
  • Le modprobe wireguard n'a pas été exécuté.
  • Les en-têtes du noyau (linux-headers) ne sont pas à jour ou ne correspondent pas à la version actuelle de votre noyau après une mise à jour système.

Une fois ce module confirmé par lsmod, votre Mac Mini Server dispose officiellement des "muscles" cryptographiques nécessaires. Vous avez configuré le routage avec sysctl et activé le pilote avec modprobe. Le système est maintenant prêt pour l'étape finale : la création des clés de sécurité et la définition du tunnel.
lsmod | grep wireguard
wireguard 94208 0 curve25519_x86_64 36864 1 wireguard libchacha20poly1305 16384 1 wireguard libcurve25519_generic 49152 2 curve25519_x86_64,wireguard ip6_udp_tunnel 16384 1 wireguard udp_tunnel 20480 1 wireguard
La commande sudo sysctl -p est l'acte de validation finale de votre configuration réseau. Elle ordonne au noyau Linux de relire immédiatement le fichier /etc/sysctl.conf et d'appliquer les changements sans nécessiter de redémarrage du serveur. C'est l'instant où votre Mac Mini Server change de comportement réseau.

En exécutant cette commande, vous devriez voir s'afficher les lignes que vous avez précédemment modifiées :
  • net.ipv4.ip_forward = 1 :
    Le noyau confirme qu'il accepte désormais de router les paquets entre vos interfaces.
  • net.ipv6.conf.*.disable_ipv6 = 0 :
    Le noyau confirme la réactivation (ou le maintien) de la pile IPv6 selon votre dernier choix.
 
En administration système, la persistance est le mot d'ordre. Modifier un fichier de configuration assure que le réglage survivra au prochain redémarrage, mais sysctl -p assure que le réglage est actif maintenant. Pour votre serveur WireGuard, c'est le signal que le "pont" entre le tunnel chiffré et le reste du monde est officiellement ouvert. Si vous avez un doute sur la prise en compte d'un paramètre spécifique, vous pouvez interroger directement le noyau après le sysctl -p avec : sysctl net.ipv4.ip_forward
L'exécution réussie de cette commande marque la fin de la préparation environnementale. Votre système Ubuntu est désormais optimisé : le module WireGuard est chargé (modprobe), et les règles de transit IP sont actives (sysctl). La structure est prête à accueillir la configuration logicielle du tunnel (clés privées/publiques et définition de l'interface wg0). Votre Mac Mini Server ne se contente plus d'héberger des services, il est devenu une passerelle réseau intelligente.
sudo sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
La commande wg --version est la vérification finale de l'installation de la suite logicielle WireGuard Tools. Bien que vous ayez déjà chargé le module dans le noyau (le "moteur"), cette commande confirme que les outils de contrôle (le "volant") sont correctement installés et accessibles dans votre terminal.

Ce que cette commande confirme :
  • Accessibilité binaire :
    Elle garantit que le paquet wireguard-tools est présent dans votre $PATH.
  • Version du logiciel :
    Elle affiche la version des outils wg et wg-quick. WireGuard étant un logiciel dont le développement est extrêmement rigoureux et stable, vous verrez généralement une version du type wireguard-tools v1.0.YYYYMMDD.
  • Compatibilité :
    Elle assure que vous disposez de l'interface de ligne de commande nécessaire pour générer vos clés de chiffrement et gérer vos tunnels.

Le rôle de l'utilitaire wg :
  • L'outil wg est l'interface principale avec laquelle vous allez interagir tout au long de la vie de votre serveur VPN. C'est lui qui vous permettra de :
  • Générer les clés de sécurité (publiques et privées).
  • Surveiller en temps réel qui est connecté au serveur.
  • Consulter les statistiques de transfert (débit, dernier "handshake").
 
Dans votre carnet de bord, l'exécution de wg --version marque la transition entre la préparation système (noyau, routage, modules) et la configuration applicative. Vous disposez désormais de tous les instruments nécessaires pour passer à l'étape la plus sensible : la création de la paire de clés cryptographiques qui sécurisera l'accès à votre Mac Mini Server depuis l'extérieur. C'est le dernier "check" avant d'entrer dans le vif du sujet de la sécurité périmétrique.
wg --version
wireguard-tools v1.0.20210914 - https://git.zx2c4.com/wireguard-tools/
La commande sudo mkdir -p /etc/wireguard constitue l'acte de fondation de votre coffre-fort numérique. En créant ce répertoire avec l'option -p (pour garantir la création des parents si nécessaire), vous désignez l'emplacement standard et sécurisé où seront stockés tous les éléments sensibles de votre tunnel VPN.

Ce dossier n'est pas un simple espace de stockage ; il est le centre névralgique de votre sécurité distante sur le Mac Mini Server :
  • Gestion des Secrets :
    C'est ici que vous générerez et conserverez vos clés privées et publiques. La confidentialité de ce répertoire est absolue.
  • Fichiers de Configuration :
    Vous y créerez le fichier wg0.conf, qui définit l'interface virtuelle, le port d'écoute (généralement UDP 51820) et la liste des "peers" (vos appareils autorisés à se connecter).
  • Standardisation :
    En utilisant /etc/wireguard, vous permettez aux scripts d'automatisation comme wg-quick de localiser instantanément vos configurations pour les monter au démarrage du système.

Une priorité : La sécurité des accès !!!

Une fois ce dossier créé, une étape cruciale de votre journal d'administration consistera à restreindre ses permissions. Comme il contiendra des clés permettant d'accéder à l'intégralité de votre réseau bsalado.lan, seul l'utilisateur root doit pouvoir y lire ou y écrire.
Dans la chronologie de ce projet, cette commande marque le passage à la structuration des données. Après avoir préparé le noyau et le routage, vous délimitez maintenant l'espace physique dédié à la cryptographie. Ce répertoire est la dernière brique de l'infrastructure avant la génération des identités numériques de vos clients et du serveur. Votre Mac Mini Server est désormais prêt à recevoir sa configuration de "Gardien" du réseau.
sudo mkdir -p /etc/wireguard
La commande sudo -i est l'action qui vous fait franchir le seuil de l'administration totale. En l'exécutant, vous ouvrez une session interactive en tant que super-utilisateur (root), en chargeant l'environnement complet de celui-ci (variables, chemins, répertoire personnel).

Dans le cadre de la configuration de votre serveur VPN sur le Mac Mini Server, ce passage en mode "interactif" est stratégique pour plusieurs raisons. La génération des clés privées de WireGuard est une opération critique. En travaillant directement dans un shell root, vous vous assurez que les fichiers créés (comme privatekey et publickey) appartiennent immédiatement à l'administrateur avec des permissions restreintes. Cela évite qu'une clé privée ne se retrouve par mégarde avec des droits de lecture pour les autres utilisateurs du système. Lors de la création du fichier /etc/wireguard/wg0.conf, vous devrez manipuler plusieurs redirections de flux et copier-coller des chaînes de caractères cryptographiques complexes. Être en mode sudo -i vous évite de devoir préfixer chaque commande par sudo, réduisant ainsi le risque d'erreurs de syntaxe ou d'échecs de redirection (>) souvent rencontrés par les utilisateurs standards tentant d'écrire dans des répertoires protégés.
Votre invite de commande change généralement de $ à #, vous signalant que vous avez désormais les pleins pouvoirs sur le système. C'est l'état idéal pour :
  • Générer les paires de clés.
  • Éditer les fichiers de configuration sensibles dans /etc/.
  • Tester le montage de l'interface avec wg-quick up wg0.

L'utilisation de sudo -i marque le début de la phase opérationnelle sensible. Vous ne préparez plus le terrain ; vous agissez désormais au cœur du système. C'est dans cette session que l'identité sécurisée de votre serveur va prendre vie, transformant les répertoires vides en une infrastructure de communication chiffrée capable de protéger vos domaines bsalado.lan et bsalado.eu. Une fois les configurations terminées, la bonne pratique consistera à quitter ce mode (via la commande exit) pour retrouver un environnement utilisateur sécurisé.
sudo -i
root@macminiserver:~#
En entrant dans le répertoire /etc/wireguard, vous pénétrez dans le centre névralgique de votre serveur VPN. C’est ici que la théorie du routage et les préparatifs système laissent place à la mise en œuvre technique de votre tunnel chiffré.
Pourquoi se déplacer dans ce répertoire ? Travailler directement à l'intérieur de ce dossier simplifie considérablement les prochaines étapes de votre journal :
  • Gestion des chemins :
    Toutes les commandes de génération de clés et de création de fichiers (comme wg0.conf) seront exécutées localement. Cela évite les erreurs de saisie dans les chemins d'accès complexes.
  • Contrôle visuel :
    En restant dans ce répertoire, un simple ls -l vous permet de vérifier en un coup d'œil la présence de vos clés et de vous assurer que leurs permissions sont correctes.
  • Sécurité des flux :
    Lorsque vous générerez vos clés avec la commande wg genkey, le résultat sera écrit directement dans ce dossier protégé, garantissant que vos secrets ne transitent pas par des répertoires temporaires moins sécurisés.
Comme vous êtes probablement toujours en mode sudo -i, tout fichier créé ici appartiendra par défaut à l'utilisateur root. C'est une protection essentielle : dans l'écosystème Linux, le répertoire /etc/wireguard est le sanctuaire qui sépare votre réseau privé du monde extérieur. 

À ce stade, votre terminal affiche probablement root@votre-mac-mini:/etc/wireguard#. Vous êtes idéalement positionné pour la séquence finale de votre projet :
  • Génération de la clé privée du serveur.
  • Extraction de la clé publique correspondante.
  • Rédaction du fichier de configuration wg0.conf.
Le passage dans ce répertoire marque l'ancrage local de votre configuration. Vous ne travaillez plus sur le système de manière globale, mais spécifiquement sur l'identité cryptographique de votre passerelle. Votre Mac Mini Server est maintenant comme un coffre-fort ouvert, attendant que vous y forgiez les clés qui permettront à vos domaines bsalado.lan et bsalado.eu d'être accessibles, en toute sécurité, depuis n'importe quel point du globe.
cd /etc/wireguard
La commande wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key est le point d'orgue cryptographique de votre installation. En une seule ligne, vous venez de forger l'identité numérique unique de votre serveur sur le Mac Mini Server. L'utilisation des "pipes" (|) permet d'enchaîner les opérations de manière fluide et sécurisée.

Voici ce qui se passe techniquement "sous le capot" :
  • wg genkey :
    Le moteur WireGuard génère une clé privée aléatoire de haute sécurité (Curve25519). C'est le secret le plus précieux de votre serveur.
  • sudo tee server_private.key :
    Cette commande intercepte la clé générée pour l'écrire dans un fichier tout en la laissant passer vers la suite de la commande.
  • wg pubkey :
    Elle récupère la clé privée et calcule mathématiquement la clé publique correspondante.
  • sudo tee server_public.key : Le résultat final est enregistré dans un second fichier.
 
Dans votre journal d'administration, il est crucial de bien distinguer ces deux fichiers :
  • server_private.key :
    À garder absolument secret. Elle ne doit jamais quitter le répertoire /etc/wireguard. C'est elle qui permet à votre serveur de déchiffrer les données envoyées par vos clients VPN.
  • server_public.key :
    À partager. C'est cette clé que vous devrez copier dans la configuration de vos appareils distants (smartphone, ordinateur portable). Elle leur permet de chiffrer les données de telle sorte que seul votre Mac Mini Server puisse les lire.
 
Même si vous avez utilisé sudo -i, il est impératif de s'assurer que personne d'autre que l'utilisateur root ne puisse lire ces fichiers.

Avec cette étape, votre serveur possède désormais une existence légale dans l'espace cryptographique. Vous avez créé le verrou (public.key) et la clé (private.key). Désormais, tout appareil souhaitant accéder à vos services bsalado.lan devra être "présenté" à cette clé publique pour établir un lien de confiance. La prochaine et dernière étape consistera à assembler ces éléments dans le fichier de configuration final wg0.conf.
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
L'exécution de ces deux commandes sudo cat permet d'afficher les deux piliers de votre sécurité asymétrique. C'est un moment de vérification crucial : vous vous assurez que les fichiers ne sont pas vides et vous récupérez les chaînes de caractères indispensables pour finaliser la configuration de votre architecture VPN.

Bien que les deux fichiers se ressemblent (des chaînes de caractères encodées en Base64), ils jouent des rôles diamétralement opposés dans votre journal d'administration :
  • La Clé Privée (server_private.key) :
    C'est le secret ultime de votre Mac Mini Server. Elle ne doit figurer que dans le fichier /etc/wireguard/wg0.conf de votre serveur. C'est elle qui permet de déchiffrer les messages entrants.
  • La Clé Publique (server_public.key) :
    C'est la "carte de visite" de votre serveur. Vous devrez la copier pour l'intégrer dans la configuration de vos clients (votre téléphone ou votre ordinateur portable) afin qu'ils sachent comment chiffrer les données destinées au serveur.
 
Avant de passer à la rédaction du fichier de configuration, l'affichage de ces clés est l'occasion idéale de vérifier que votre coffre-fort est bien verrouillé. Un rapide ls -l /etc/wireguard devrait vous confirmer que seuls les droits de l'utilisateur root sont autorisés.
L'affichage de ces clés marque la fin de la phase de génération. Vous disposez maintenant de tous les éléments "matériels" :
  • Le noyau est prêt (sysctl et modprobe).
  • Le répertoire est structuré (mkdir).
  • L'identité cryptographique est forgée (les deux clés cat).

La prochaine étape, et non des moindres, sera la création du fichier wg0.conf. Vous y assemblerez ces clés, définirez le port d'écoute UDP 51820 et préciserez l'adresse IP virtuelle de votre serveur (par exemple 10.0.0.1/24). Ce fichier sera le chef d'orchestre qui fera le lien entre votre tunnel chiffré et votre DNS BIND9 pour une navigation sécurisée et fluide sur vos domaines bsalado.lan.
sudo cat /etc/wireguard/server_private.key
sudo cat /etc/wireguard/server_public.key
sudo cat /etc/wireguard/server_private.key
mJDK5xu4G6B/oe1Z5l4OELDRK2HzcfFRj/E82T0vFDg=

sudo cat /etc/wireguard/server_public.key
352Xu+eo9UuogKOLcy3J+6N1DjBtsm0bUJxdulaYaTh=
Le fichier /etc/wireguard/wg0.conf est la pièce maîtresse de votre installation. C'est ici que vous assemblez tous les éléments configurés précédemment pour définir le comportement de votre interface réseau virtuelle. Ce fichier indique à WireGuard comment écouter les connexions entrantes, quel chiffrement utiliser et comment router le trafic vers vos domaines bsalado.lan.

Analyse des directives clés :
  • Address = 10.0.0.1/24 :
    Définit le sous-réseau interne de votre VPN. Votre Mac Mini Server sera la passerelle à l'adresse .1.
  • PostUp / PostDown :
    Ces lignes sont cruciales. Elles automatisent la configuration du pare-feu (iptables) au démarrage et à l'arrêt du VPN. Elles permettent aux paquets venant du tunnel de "rebondir" vers votre interface physique (eth0 ou en0) pour accéder à Internet ou à vos services locaux.
  • AllowedIPs :
    Dans la section [Peer], cela définit l'adresse IP fixe que vous attribuez à chaque client distant.

La rédaction du wg0.conf transforme vos préparatifs techniques en un service opérationnel. C'est le lien final entre votre configuration système (sysctl), vos modules noyau (modprobe) et votre sécurité cryptographique. Une fois ce fichier en place, votre Mac Mini Server devient officiellement votre propre fournisseur de VPN, prêt à résoudre vos domaines bsalado.eu en toute sécurité depuis l'extérieur. Ce fichier constitue le cœur opérationnel de votre passerelle sécurisée en définissant l'identité cryptographique du serveur, ses paramètres d'écoute réseau et la gestion dynamique des flux de données. Il orchestre l'interface virtuelle en lui attribuant une adresse fixe et en y injectant des règles de pare-feu automatiques qui assurent la transition entre le tunnel chiffré et votre infrastructure physique.
Cette configuration transforme concrètement votre machine en un routeur privé intelligent capable de masquer l'origine du trafic tout en garantissant une étanchéité parfaite entre vos différents réseaux. Elle offre une extension sécurisée de votre environnement local vers l'extérieur, permettant à vos appareils distants d'accéder à vos ressources internes et à Internet comme s'ils étaient physiquement branchés à votre domicile. Par la gestion rigoureuse des clés et des adresses autorisées, ce fichier assure que seul le matériel authentifié peut franchir votre périmètre numérique pour atteindre vos domaines privés.
sudo nano /etc/wireguard/wg0.conf
# =========================
# CONFIGURATION DU SERVEUR VPN WIREGUARD
# =========================

[Interface]
# Adresse IP interne du VPN pour ce serveur
# C’est “l’adresse du serveur dans le tunnel VPN”
Address = 10.10.0.1/24
# Port sur lequel le VPN écoute les connexions entrantes
ListenPort = 51820
# Clé privée du serveur (NE JAMAIS LA PARTAGER)
PrivateKey = mJDK5xu4G6B/oe1Z5l4OELDRK2HzcfFRj/E82T0vFDg=
# Empêche WireGuard de réécrire automatiquement le fichier wg0.conf
SaveConfig = false

# =========================
# RÈGLES DE ROUTAGE (quand le VPN démarre)
# =========================

# Autorise les clients VPN à accéder au réseau local
PostUp = iptables -A FORWARD -i wg0 -o enp0s10 -j ACCEPT
# Autorise les réponses du réseau local vers le VPN
PostUp = iptables -A FORWARD -i enp0s10 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Permet aux machines VPN de sortir vers Internet via le serveur
PostUp = iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o enp0s10 -j MASQUERADE

# =========================
# RÈGLES DE NETTOYAGE (quand le VPN s’arrête)
# =========================

# Supprime l’autorisation VPN → réseau local
PostDown = iptables -D FORWARD -i wg0 -o enp0s10 -j ACCEPT
# Supprime l’autorisation réseau local → VPN
PostDown = iptables -D FORWARD -i enp0s10 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Supprime le partage Internet du VPN
PostDown = iptables -t nat -D POSTROUTING -s 10.10.0.0/24 -o enp0s10 -j MASQUERADE

# =========================
# CLIENTS VPN AUTORISÉS
# =========================

# ---- Client 1 (ex : MacBook Pro) ----
[Peer]
# Clé publique du client (identifie la machine)
PublicKey = 352Xu+eo9UuogKOLcy3J+6N1DjBtsm0bUJxdulaYaTh=
# Adresse VPN attribuée à ce client
AllowedIPs = 10.10.0.2/32

A réaliser sur la machine cliente !!!
Le Split Tunneling (tunnel fractionné) est une stratégie de configuration client qui permet de ne faire transiter que le trafic vers votre réseau local (bsalado.lan) via le VPN, tout en laissant le trafic internet classique (YouTube, Netflix, navigation courante) utiliser la connexion locale du client. Cette approche optimise la bande passante de votre Mac Mini Server et réduit la latence pour l'utilisateur.
# ========================================
Configuration des clients en split tunnel
# ========================================

Sur le macbook pro qui se connecte a distance
[Interface]
PrivateKey = FBbp0OlEJsrEeKZkkqGHtZ7/baV1w079ntFR2Tiw02I=
Address = 10.10.0.2/24
DNS = 172.16.0.2, bsalado.lan

[Peer]
PublicKey = 352Xu+eo9UuogKOLcy3J+6N1DjBtsm0bUJxdulaYaTh=
AllowedIPs = 10.10.0.0/24, 172.16.0.0/16
Endpoint = bsalado.eu:51820
PersistentKeepalive = 25
À l'opposé du Split Tunneling, la configuration en Full Tunnel (tunnel complet) consiste à acheminer l'intégralité du flux internet du client vers le serveur WireGuard. Votre Mac Mini Server devient alors la passerelle unique pour toutes les activités en ligne du client. Cette méthode est privilégiée pour la sécurité sur les réseaux Wi-Fi publics (hôtels, cafés) car elle chiffre tout le trafic, masquant vos activités à l'opérateur local.
# ==========================================================
Configuration des clients en full tunnel avec IPV4 seulement
# ==========================================================

Sur le macbook pro qui se connecte a distance
[Interface]
PrivateKey = EAbp0Ol0JsrEeKWkkqFHtZ7/baV1w068ntFR2Tiw02I=
Address = 10.10.0.2/24
DNS = 172.16.0.2, bsalado.lan
MTU = 1420

[Peer]
PublicKey = tybt+xXu30lugVrUEFIRwvRWpxueAscRHjXPgcj3vmE=
AllowedIPs = 0.0.0.0/0
Endpoint = bsalado.eu:51820
PersistentKeepalive = 25

Pour acheminer le trafic de votre tunnel WireGuard depuis l'extérieur vers votre serveur Ubuntu à travers une Box SFR, la configuration du NAT est très spécifique. Contrairement à des services web (HTTP/HTTPS) ou d'administration (SSH) qui transitent par le protocole TCP, WireGuard fonctionne exclusivement en UDP. Par défaut, le port standard utilisé par WireGuard est le 51820.

# NOM PROTOCOLE TYPE PORT EXTERNE IP DESTINATION PORT DESTINATION
1 MACMINISERVER_VPN UDP PORT 51820 172.16.0.2 51820




CONCLUSION

 Cette configuration transforme votre Mac Mini Server en un pilier de souveraineté numérique en fusionnant la performance brute du noyau Linux avec la robustesse de la cryptographie moderne. L'architecture ainsi déployée efface les frontières géographiques pour vos domaines privés, permettant une continuité de service transparente entre vos ressources locales et vos accès nomades. En maîtrisant l'aiguillage des flux par le biais des tunnels fractionnés ou complets, vous avez instauré un contrôle total sur l'intégrité et la confidentialité de vos échanges. Ce projet ne se limite pas à la création d'un accès distant mais définit le périmètre de sécurité de votre cloud personnel, garantissant que chaque bit de donnée transitant vers votre infrastructure reste sous votre autorité exclusive. Vous disposez désormais d'une base technique pérenne, prête à soutenir l'évolution de vos services réseau tout en maintenant une étanchéité absolue face aux menaces extérieures.

9 - PRÉPARATION DU DEUXIEME SSD

image 0006
Schéma de principe - Préparation du deuxième SSD.

L'intégration d'une unité de stockage secondaire dédiée au sein de votre Mac Mini Server marque une étape stratégique dans la sécurisation et l'optimisation de votre infrastructure serveur. En isolant les configurations critiques, les données web et les environnements de conteneurisation sur un volume distinct du système d'exploitation Ubuntu, vous instaurez une architecture de résilience indispensable à l'administration système professionnelle. Cette séparation physique et logique protège vos services de production contre une éventuelle saturation de la partition racine, tout en garantissant que vos données persistent indépendamment des mises à jour ou des réinstallations du système. En cas de défaillance logicielle majeure, cette structure permet une récupération rapide et simplifiée, transformant le second SSD en un sanctuaire immuable pour vos actifs numériques essentiels. Cette organisation méthodique rationalise la gestion des sauvegardes et la maintenance, offrant ainsi une stabilité accrue à vos domaines bsalado.lan et bsalado.eu.

 

La commande lsblk (List Block Devices) constitue le premier diagnostic visuel indispensable pour cartographier l'architecture physique de votre Mac Mini. Elle permet d'identifier avec précision les disques disponibles, leurs partitions respectives et leurs points de montage actuels, offrant ainsi une vue d'ensemble claire avant toute opération de formatage ou de partitionnement.

L'exécution de cette commande affiche une structure arborescente où chaque ligne correspond à un composant de stockage :
  • NAME :
    Désigne le nom logique du disque (souvent sda, sdb ou nvme0n1). Dans votre cas, vous identifierez rapidement le disque principal hébergeant Ubuntu et le second SSD vierge.
  • MAJ:MIN :
    Indique les numéros majeurs et mineurs du périphérique, utilisés par le noyau pour la gestion des pilotes.
  • RM :
    Indique si le média est amovible (0 pour un disque fixe, 1 pour une clé USB).
  • SIZE :
    Permet de distinguer vos deux SSD par leur capacité respective.
  • TYPE :
    Précise s'il s'agit d'un disque entier (disk), d'une partition (part) ou d'un volume logique (lvm).
  • MOUNTPOINT :
    Révèle où le disque est actuellement rattaché au système de fichiers.

Dans votre carnet de bord, cette étape sert de validation de sécurité. Avant de manipuler les données, lsblk vous assure de ne pas confondre le disque système avec le support de destination pour vos répertoires /SSD2/backup/, /SSD2/www et /SSD2/docker. Cette identification précise est le préalable technique nécessaire à la création du système de fichiers et à la mise en œuvre de votre stratégie de séparation des données, garantissant que vos futures configurations et conteneurs seront ancrés sur le bon support matériel.
lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop1                       7:1    0  63,9M  1 loop /snap/core20/2318
loop2                       7:2    0    87M  1 loop /snap/lxd/29351
loop3                       7:3    0  48,4M  1 loop /snap/snapd/26382
loop4                       7:4    0  63,8M  1 loop /snap/core20/2769
loop5                       7:5    0  91,7M  1 loop /snap/lxd/38800
loop6                       7:6    0  49,3M  1 loop /snap/snapd/26865
sda                         8:0    0 465,8G  0 disk 
├─sda1                      8:1    0     1G  0 part /boot/efi
├─sda2                      8:2    0     2G  0 part /boot
└─sda3                      8:3    0 462,7G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0   100G  0 lvm  /
sdb                         8:16   0 465,8G  0 disk 		<- Deuxième SSD
└─sdb1                      8:17   0 465,8G  0 part
La commande sudo mkfs.ext4 /dev/sdb marque le passage de la reconnaissance matérielle à l'exploitation logicielle de votre second support de stockage. En exécutant cette opération, vous initialisez un système de fichiers ext4 (Fourth Extended Filesystem) sur l'intégralité du disque /dev/sdb, créant ainsi la structure nécessaire pour accueillir vos répertoires de sauvegarde, vos sites web et vos conteneurs Docker.
Le choix de l'ext4 pour votre infrastructure sur Mac Mini est stratégique. Ce système de fichiers, standard de l'écosystème Linux, offre un équilibre optimal entre performance et sécurité des données. Il intègre notamment la fonction de journalisation, qui protège l'intégrité de vos fichiers /SSD2/www ou /SSD2/docker en cas de coupure de courant impromptue, en enregistrant les modifications avant de les appliquer définitivement au disque.
 
L'exécution de cette commande réalise plusieurs actions critiques pour votre journal d'administration :
  • Structuration de l'espace :
    Elle divise le disque en blocs de données et en inodes, préparant ainsi le support à l'organisation hiérarchique de vos dossiers.
  • Création de la table des fichiers :
    Elle génère l'index qui permettra au système Ubuntu de localiser instantanément chaque configuration ou sauvegarde déposée sur ce SSD.
  • Remise à zéro logique :
    Cette opération efface toute signature ou table de partition préexistante, garantissant un environnement vierge et sain pour votre nouvelle stratégie de séparation des données.
  • Rôle de la syntaxe :
    mkfs.ext4 = crée un système de fichiers Linux moderne /dev/sdb = ton second SSD

Une étape irréversible !!!!
Dans votre processus de gestion, cette commande représente le point de non-retour pour les données précédemment présentes sur le disque. C'est l'acte de naissance de votre volume de stockage secondaire. Une fois le formatage terminé, le disque ne sera pas encore accessible dans votre arborescence Linux ; il faudra procéder à son montage pour lier physiquement ce système de fichiers ext4 au point de montage que vous aurez choisi, parachevant ainsi la mise en œuvre de votre architecture résiliente.
sudo mkfs.ext4 /dev/sdb
La commande sudo blkid est l'outil de précision qui permet d'extraire les attributs de bas niveau de vos périphériques de stockage, notamment leurs identifiants uniques universels (UUID). Contrairement à lsblk qui se concentre sur la topologie, blkid interroge directement les métadonnées du système de fichiers que vous venez de créer sur votre second SSD.
Dans votre journal d'administration, l'UUID (Universally Unique Identifier) est la donnée la plus critique à consigner. Il s'agit d'une chaîne de caractères alphanumériques qui identifie votre partition de manière immuable, indépendamment du port physique ou de l'ordre de détection des disques par le BIOS.

L'utilisation de l'UUID est préférable au nom de périphérique (comme /dev/sdb) pour plusieurs raisons :
  • Stabilité du montage :
    Si vous ajoutez un autre disque ou changez les branchements, Linux peut renommer /dev/sdb en /dev/sdc. L'UUID, lui, ne change jamais.
  • Sécurité du démarrage :
    Il garantit qu'au prochain redémarrage de votre Mac Mini, le système montera exactement le bon SSD dans les répertoires /SSD2/backup/, /SSD2/www et /SSD2/docker.
 
En exécutant cette commande, vous obtiendrez une ligne similaire à celle-ci pour votre second disque : /dev/sdb: UUID="540f8400-e29b-41d4-a726-446655440000" TYPE="ext4"
Cette sortie confirme deux points essentiels pour votre documentation :
  • La validation du formatage :
    La présence de TYPE="ext4" prouve que l'opération précédente a réussi.
  • La signature unique :
    La valeur entre guillemets après UUID= est celle que vous devrez copier et coller dans votre fichier de configuration système pour automatiser l'accès à ce stockage.

L'étape blkid transforme une adresse matérielle volatile en une référence logicielle permanente. C'est l'obtention du matricule officiel de votre nouveau volume de stockage. Cette information est le sésame nécessaire pour l'étape suivante : la modification du fichier /etc/fstab, qui ancrera définitivement ce second SSD au cœur de l'arborescence de votre serveur Ubuntu.
sudo blkid
/dev/sdb: UUID="5426a752-f3ff-3406b5ac-c0bf7da71301" BLOCK_SIZE="4096" TYPE="ext4" /dev/mapper/ubuntu--vg-ubuntu--lv: UUID="d12e8409-2521-4237-b90b-a25d2eeb0c4d" BLOCK_SIZE="4096" TYPE="ext4" /dev/sda2: UUID="6f4cfc0b-9757-4138-be80-cac8c4c92f20" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="16cc4701-7718-4024-98a5-e85f2f21e05b" /dev/sda3: UUID="bAmKSE-X77e-Jcbp-eOuj-5o7E-88p6-lY9GwI" TYPE="LVM2_member" PARTUUID="aba8633b-25d6-4562-807c-c765101c292a" /dev/sda1: UUID="B02D-28F6" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="e5a66c32-0f1d-4d87-95e2-40491eb9d306" /dev/loop1: TYPE="squashfs" /dev/loop4: TYPE="squashfs" /dev/loop2: TYPE="squashfs" /dev/loop0: TYPE="squashfs" /dev/loop5: TYPE="squashfs" /dev/loop3: TYPE="squashfs"
L'ouverture du fichier /etc/fstab (File System Table) marque l'étape de configuration la plus critique pour la pérennité de votre architecture. C'est dans ce fichier que vous consignez les instructions statiques qui dictent à Ubuntu comment et où monter vos disques de manière automatique à chaque démarrage du Mac Mini. 
Ce fichier est le registre central des points de montage. Sans une entrée correcte dans ce document, votre second SSD resterait invisible pour le système après un redémarrage, ce qui paralyserait instantanément vos conteneurs Docker, vos sites web et vos processus de sauvegarde. En éditant ce fichier, vous transformez un montage temporaire en une structure permanente et fiable.

Pour intégrer votre second SSD, vous devez ajouter une ligne spécifique à la fin du fichier, en respectant la syntaxe rigoureuse composée de six colonnes :
  • UUID :
    L'identifiant unique récupéré via blkid (ex: UUID=votre-identifiant-ici).
  • Point de montage :
    Le répertoire racine de votre second disque, à savoir /SSD2.
  • Type de système de fichiers :
    Le format ext4 défini précédemment.
  • Options :
    Généralement defaults pour activer les paramètres standards (lecture/écriture, exécution, montage automatique).
  • Dump :
    Défini sur 0 pour ignorer les sauvegardes par l'utilitaire dump.
  • Pass :
    Défini sur 2 pour que le système vérifie l'intégrité de ce disque secondaire après la partition racine lors du démarrage.
 
Une erreur de syntaxe dans /etc/fstab peut empêcher le système d'exploitation de démarrer correctement. C'est pourquoi l'utilisation de l'UUID est ici vitale : elle garantit que le système ne tentera jamais de monter le mauvais disque par accident. En sécurisant cette configuration, vous liez physiquement votre matériel à votre arborescence logicielle, assurant que vos données stratégiques seront toujours disponibles pour vos services dès que le Mac Mini est sous tension. Une fois la ligne ajoutée et le fichier enregistré, l'exécution de la commande sudo mount -a permettra de tester la configuration sans redémarrer, confirmant ainsi que votre nouveau volume est prêt à accueillir la structure de dossiers /SSD2/backup/, /SSD2/www et /SSD2/docker.
sudo nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>

# Partition racine (/) sur LVM
/dev/disk/by-id/dm-uuid-LVM-ifXpZc0NkrAAwEvjx1VagsUdLTsLe1yrJ59YYR82BNcT37pfEBBVAxApDXSvXzuM / ext4 defaults 0 1
# Partition /boot
/dev/disk/by-uuid/6f4cfc0b-9757-4138-be80-cac8c4c92f20 /boot ext4 defaults 0 1
# Partition /boot/efi
/dev/disk/by-uuid/B02D-28F6 /boot/efi vfat defaults 0 1
/swap.img       none    swap    sw      0       0
# Second disque SSD (sdb) monté sur /SSD2
UUID=5426a752-f3ff-3406-b5ac-c0bf7da71301 /SSD2 ext4 defaults 0 2
La création du répertoire racine /SSD2 est l'acte fondateur qui permet de matérialiser le lien entre votre matériel physique et l'arborescence logique d'Ubuntu. Sans ce dossier vide, le système ne disposerait d'aucune "porte d'entrée" pour rattacher le système de fichiers ext4 de votre second disque à la hiérarchie globale du serveur.
En informatique, un point de montage est un répertoire qui sert d'ancrage à un volume de stockage. Tant que ce dossier est vide et que le disque n'est pas monté, il ne consomme que quelques octets sur votre SSD principal. Dès que le montage est activé, le contenu du répertoire /SSD2 devient le reflet exact de ce qui est stocké physiquement sur votre second SSD.

Cette étape est cruciale pour votre organisation car elle définit le chemin parent qui regroupera vos trois piliers de données :
  • La sécurité : avec /SSD2/backup/
  • Le web : avec /SSD2/www/
  • La virtualisation : avec /SSD2/docker/
 
L'emplacement de ce dossier directement à la racine (/) souligne son importance stratégique. Il ne s'agit pas d'un simple dossier utilisateur, mais d'une partition système majeure de votre Mac Mini. En isolant ces services dans ce répertoire dédié, vous facilitez la gestion des droits d'accès et la surveillance de l'espace disque, tout en garantissant que vos fichiers de configuration système Ubuntu ne seront jamais mélangés avec vos données de production.
Une fois ce dossier créé, vous pourrez procéder au montage effectif du disque, ce qui transformera ce simple répertoire en un espace de stockage massif prêt à structurer votre environnement professionnel.
sudo mkdir /SSD2
La commande sudo mount -a constitue l'étape de validation finale de votre configuration de stockage en demandant au système d'analyser le fichier /etc/fstab et de monter immédiatement tous les volumes qui n'y sont pas encore rattachés. Pour votre Mac Mini, cette opération tente de lier physiquement le second SSD au point de montage /SSD2 que vous venez de créer, sans nécessiter un redémarrage complet du serveur.
L'utilisation de cette commande est une excellente pratique d'administration avant tout redémarrage réel. Elle agit comme un révélateur d'erreurs : si la syntaxe de votre fichier /etc/fstab ou l'UUID renseigné comporte une imprécision, le système affichera un message d'erreur instantané. Cela vous permet de corriger la configuration à chaud, évitant ainsi un blocage potentiel du cycle de démarrage d'Ubuntu qui pourrait survenir si le système ne parvenait pas à interpréter vos instructions au lancement.
Dès l'exécution réussie de cette commande, l'espace de stockage de votre second SSD devient disponible sous le répertoire /SSD2. C'est à cet instant précis que votre stratégie de séparation des données prend vie. Le disque est désormais prêt à être structuré avec vos répertoires cibles pour les sauvegardes, le serveur web et Docker.
Une exécution silencieuse de sudo mount -a (sans message d'erreur) est le signal que votre configuration est valide et robuste. Vous pouvez alors confirmer le succès de l'opération en vérifiant l'espace disponible avec la commande df -h, qui affichera désormais /SSD2 comme une partition active, prête à sécuriser vos actifs numériques sur vos domaines bsalado.lan.
sudo mount -a
La commande df -h (Disk Free - Human Readable) est l'outil de confirmation ultime qui clôture la préparation de votre stockage. Elle permet de visualiser l'occupation de tous les systèmes de fichiers montés sur votre Mac Mini Server  dans une unité lisible par l'homme (Gigaoctets ou Téraoctets au lieu des blocs).
En consultant la sortie de cette commande, votre attention doit se porter sur la ligne correspondant à /dev/sdb (ou votre UUID) associée au point de montage /SSD2.

Cette ligne confirme trois éléments vitaux pour votre journal :
  • La disponibilité réelle :
    Vous voyez exactement l'espace total utilisable sur votre second SSD après la création du système de fichiers ext4.
  • L'isolation confirmée :
    Vous visualisez physiquement que /SSD2 possède son propre compteur d'espace, totalement indépendant de la partition racine /.
  • Le succès du montage automatique :
    Si la ligne apparaît suite au mount -a, cela prouve que le système reconnaît et accède parfaitement au nouveau support.
 
Dans la gestion quotidienne de votre serveur, df -h deviendra votre tableau de bord pour surveiller la croissance de vos données. Comme vous avez choisi de séparer les fonctions, cette commande vous permettra d'identifier instantanément si une saturation provient d'une accumulation de journaux système (sur /) ou d'une explosion du volume de vos conteneurs Docker ou de vos sauvegardes (sur /SSD2).
Cette clarté visuelle est le dernier verrou de sécurité avant le déploiement de vos services. Une fois que vous avez constaté que /SSD2 est correctement monté et dispose de tout son espace libre, l'infrastructure est officiellement prête à accueillir les commandes de création de répertoires pour backup, www et docker, ancrant ainsi vos projets bsalado.eu sur une base matérielle saine et surveillée.
df -h

Filesystem Size Used Avail Use% Mounted on tmpfs 769M 3,5M 765M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 98G 16G 78G 17% / tmpfs 3,8G 0 3,8G 0% /dev/shm tmpfs 5,0M 0 5,0M 0% /run/lock /dev/sdb 458G 318M 434G 1% /SSD2 /dev/sda2 2,0G 260M 1,6G 15% /boot /dev/sda1 1,1G 6,1M 1,1G 1% /boot/efi tmpfs 769M 4,0K 769M 1% /run/user/1000
La série de commandes sudo mkdir -p finalise la structuration logique de votre second SSD en créant l'arborescence qui accueillera l'ensemble de votre production numérique. L'utilisation de l'option -p (parents) est ici stratégique car elle permet de générer d'un seul coup les répertoires racines et leurs sous-dossiers spécifiques, garantissant une organisation rigoureuse dès l'initialisation du support.

Cette architecture segmente vos activités en trois pôles hermétiques, facilitant ainsi la gestion des permissions et la clarté de votre administration :
  • Le pôle opérationnel (/docker et /www) :
    Ces dossiers sont les moteurs de votre serveur. En plaçant les volumes Docker et les fichiers sources de vos sites web sur ce disque dédié, vous optimisez les performances d'accès et évitez toute interférence avec les processus du système d'exploitation Ubuntu.
  • Le pôle de résilience (/backup) :
    Ce répertoire est le coffre-fort de votre infrastructure. La subdivision en sous-dossiers (config, docker, bsalado.eu) permet de classer vos sauvegardes par nature. Cela assure une restauration chirurgicale : vous pourrez par exemple restaurer uniquement une configuration de service sans toucher aux données volumineuses des conteneurs, ou récupérer spécifiquement l'intégralité des actifs liés à votre domaine public.
 
Dans votre journal d'administration, cette étape marque la fin de la préparation matérielle et le début de l'exploitation applicative. Cette arborescence figée devient la référence pour tous vos futurs scripts de déploiement et vos routines de sauvegarde automatique. En ancrant vos services dans ces chemins précis, vous vous assurez que chaque composant de votre écosystème possède une place définie, immuable et isolée sur votre SSD secondaire, garantissant la stabilité à long terme de vos domaines bsalado.lan et bsalado.eu.
sudo mkdir -p /SSD2/docker
sudo mkdir -p /SSD2/www
sudo mkdir -p /SSD2/backup/config
sudo mkdir -p /SSD2/backup/docker
sudo mkdir -p /SSD2/backup/bsalado.eu

Arborescense des dossier du deuxième disque dur
/SSD2/ ├── docker/ ├── www/ ├── backup/config/ ├── backup/docker/ └── backup/bsalado.eu/

CONCLUSION

L'achèvement de cette préparation marque une transition majeure dans la gestion de votre Mac Mini, faisant passer votre serveur d'une configuration standard à une architecture de stockage segmentée et résiliente. En isolant physiquement vos environnements de production et de sauvegarde sur ce second SSD, vous avez instauré une barrière de sécurité indispensable qui protège la stabilité du système Ubuntu des fluctuations de volume liées à vos activités applicatives. Cette organisation méthodique, ancrée par des identifiants uniques et une arborescence thématique rigoureuse, constitue la fondation de votre souveraineté numérique. Chaque service, qu'il s'agisse de vos conteneurs Docker, de vos plateformes web ou de vos archives critiques, dispose désormais d'un sanctuaire dédié facilitant tant la maintenance que la récupération en cas de sinistre. Votre infrastructure est dorénavant prête à accueillir des services complexes et des flux de données importants, avec l'assurance que la croissance de vos projets sur bsalado.eu et bsalado.lan s'appuie sur un socle matériel sain, ordonné et parfaitement maîtrisé.

10 - DÉCOUVERTE RÉSEAU AVEC AVAHI ET SAMBA

image 0007
Schéma de principe - Découverte réseau acec Avahi et Samba.

 L'intégration fluide de votre serveur Ubuntu au sein de l'écosystème Apple repose sur la synergie entre les protocoles mDNS d'Avahi et les services de partage de fichiers Samba. En activant cette technologie de découverte réseau sans configuration, vous permettez à votre Mac Mini Server d'annoncer sa présence de manière native, transformant une machine Linux distante en un voisin réseau immédiatement reconnaissable dans la barre latérale du Finder. Cette interaction harmonise la puissance du stockage sur vos SSD secondaires avec l'ergonomie de macOS, facilitant l'accès direct aux répertoires de sauvegarde et de développement sans avoir à saisir manuellement des adresses IP volatiles. En associant la visibilité d'Avahi à la robustesse des protocoles SMB, vous créez une passerelle transparente qui unifie votre environnement de travail bsalado.lan, garantissant que vos ressources de stockage sont toujours à portée de clic. Cette étape franchit le dernier fossé entre les deux systèmes d'exploitation pour faire de votre serveur un membre à part entière et intuitif de votre parc informatique domestique.

L'installation du paquet avahi-daemon et de ses utilitaires constitue le socle technique nécessaire à la diffusion de l'identité de votre serveur sur le réseau local. En déployant ce service, vous activez l'implémentation Linux du protocole Zeroconf, permettant à Ubuntu de communiquer avec le protocole Bonjour d'Apple sans aucune intervention manuelle sur vos tables de routage ou vos serveurs DNS.
Le démon Avahi agit comme un émetteur radio permanent qui diffuse les capacités de votre Mac Mini aux autres machines environnantes. Son rôle est d'associer le nom d'hôte de votre serveur (par exemple macmini.local) à son adresse IP actuelle de manière dynamique. Pour votre infrastructure, cela signifie que même si l'adresse IP du serveur venait à changer, votre Mac principal pourrait toujours le localiser en utilisant simplement son nom, garantissant une continuité d'accès indispensable pour vos montages réseau.
L'inclusion de avahi-utils dans votre installation vous dote d'outils de diagnostic essentiels pour valider la visibilité du serveur. Grâce à des commandes comme avahi-browse, vous pouvez vérifier en temps réel quels services sont annoncés et détecter d'éventuels conflits de noms sur le réseau bsalado.lan. Cette transparence est cruciale pour s'assurer que le tunnel WireGuard ou les partages Samba que vous mettrez en place seront correctement interprétés par les clients distants.
Une fois ces paquets installés, le service démarre automatiquement et commence à sonder le réseau. Bien que l'installation soit logicielle, elle modifie profondément la perception de votre machine sur le segment local : elle cesse d'être une adresse IP anonyme pour devenir une entité nommée et reconnue. C'est cette présence active qui permettra, lors de la configuration de Samba, de faire apparaître l'icône caractéristique du serveur dans le Finder de macOS, parachevant ainsi l'unification de votre environnement de travail. L'activation du service avahi-daemon transforme votre serveur Ubuntu en une entité communicante capable d'auto-promotion sur votre réseau local. En agissant comme une implémentation libre du protocole mDNS (Multicast DNS), ce démon diffuse en continu des paquets d'information qui permettent aux autres appareils, notamment les Mac et les iPhone, d'identifier instantanément le nom d'hôte de votre machine sans l'intervention d'un serveur DNS centralisé. Le principe de fonctionnement d'Avahi repose sur la simplicité : au lieu de forcer l'utilisateur à mémoriser une adresse IP souvent volatile, le service permet de joindre le serveur via une adresse simplifiée de type nom-du-serveur.local. Cette résolution de nom par diffusion locale garantit que votre Mac Mini est toujours joignable, même après un redémarrage ou un changement de bail DHCP, offrant ainsi une stabilité de connexion indispensable pour vos flux de travail entre macOS et Linux.
Pour votre journal d'administration, il est essentiel de noter que c'est précisément ce service qui "réveille" la fonction Bonjour de MacOS.
En annonçant les services disponibles (comme le partage de fichiers ou l'accès SSH), Avahi injecte directement l'existence de votre serveur dans les couches réseau du Finder.

Transparence totale :
La découverte est automatique et ne nécessite aucune configuration côté client.
Résilience :
Le lien entre le nom et l'IP est maintenu dynamiquement sur le segment bsalado.lan.
Préparation du terrain :
C'est cette annonce mDNS qui servira de support de visibilité pour les futurs partages Samba, assurant que l'icône du serveur s'affiche nativement dans la barre latérale de votre Mac.

En somme, l'exécution d'Avahi est la voix de votre serveur ; elle lui permet de déclarer son identité et ses services à haute voix sur le réseau, facilitant une intégration ergonomique et professionnelle dans votre environnement informatique quotidien.
L'installation du paquet avahi-utils complète le déploiement du démon en vous fournissant une boîte à outils indispensable pour auditer et diagnostiquer la visibilité de votre serveur. Alors que le démon travaille en arrière-plan pour diffuser l'identité du Mac Mini, ces utilitaires vous permettent de "voir" ce que le réseau perçoit réellement, garantissant que vos services sont correctement annoncés aux autres machines. L'outil principal de cette suite est avahi-browse. Il fonctionne comme un radar réseau capable de lister tous les services annoncés via mDNS sur votre segment local. En utilisant une commande telle que avahi-browse -rt _http._tcp, vous pouvez vérifier instantanément si votre serveur web est visible. Pour une vision globale de votre environnement bsalado.lan, l'option -a (all) permet de recenser chaque appareil et service (imprimantes, partages de fichiers, autres Mac) communiquant via le protocole Bonjour.
Les utilitaires incluent également des commandes comme avahi-resolve, qui permet de tester la conversion d'un nom d'hôte .local en adresse IP (et inversement) directement depuis la console Ubuntu. C'est un test de validation crucial : si le serveur est capable de se résoudre lui-même par son nom mDNS, il y a de fortes chances que votre Mac le trouve également sans encombre.

L'intégration de ces outils dans votre flux d'administration offre plusieurs avantages :
Validation post-configuration :
Confirmer que les modifications apportées à Samba ou SSH sont bien diffusées.
Débogage réseau :
Identifier si une absence de visibilité dans le Finder vient du serveur Ubuntu ou d'un blocage au niveau du routeur/switch.
Surveillance de voisinage :
Garder un œil sur les autres périphériques qui s'invitent sur votre réseau local.

En maîtrisant avahi-utils, vous passez d'une configuration "aveugle" à une gestion proactive de votre visibilité réseau, assurant que la passerelle entre Ubuntu et macOS reste fluide et opérationnelle en permanence.
sudo apt install avahi-daemon avahi-utils -y
L'installation de Samba représente le pilier final de votre architecture de partage. Ce logiciel implémente le protocole SMB/CIFS, le standard universel de communication de fichiers entre systèmes Unix et Windows, également utilisé par macOS. En déployant ce paquet, vous transformez votre Mac Mini Ubuntu en un véritable serveur de stockage capable de servir vos fichiers directement dans l'interface native de vos autres appareils. Bien qu'Ubuntu utilise nativement le système de fichiers ext4 (celui que vous avez configuré sur votre /SSD2), macOS ne peut pas le lire directement via le réseau sans un traducteur. Samba joue ce rôle de médiateur : il encapsule les données de votre SSD dans un protocole que le Finder comprend parfaitement. Une fois configuré, vos répertoires /SSD2/www ou /SSD2/backup n'apparaîtront plus comme des dossiers distants abstraits, mais comme des disques réseaux sur lesquels vous pourrez glisser-déposer des fichiers avec la même aisance que sur un disque local.
L'installation de Samba apporte une couche de gestion des utilisateurs indépendante du système. Cela vous permet de définir précisément qui a le droit d'accéder à vos sauvegardes ou à vos fichiers Docker. Pour votre infrastructure bsalado.lan, cela signifie que vous pourrez créer des accès restreints ou complets selon l'usage, garantissant que vos données sensibles sur le second SSD restent protégées tout en étant accessibles.
L'aspect le plus gratifiant de cette installation est sa synergie avec Avahi. Alors qu'Avahi annonce "Je suis un serveur ici", Samba déclare "Et je propose des dossiers partagés". Ensemble, ils font apparaître votre Mac Mini dans la section "Emplacements" du Finder.

En résumé, cette commande prépare le terrain pour :
  • L'accès direct à vos fichiers de configuration sans passer par le terminal.
  • La centralisation de vos sauvegardes Time Machine ou manuelles sur le /SSD2/backup.
  • Le montage automatique de vos environnements de développement /SSD2/www sur votre poste de travail principal.

Une fois le paquet installé, il ne vous restera plus qu'à éditer le fichier /etc/samba/smb.conf pour déclarer vos points de partage officiels.

sudo apt install samba -y

La commande sudo systemctl enable --now avahi-daemon est l'instruction d'activation définitive qui met en mouvement les services de découverte réseau sur votre serveur.

Elle combine deux actions essentielles en une seule ligne :
  • L'activation au démarrage (enable)
  • Le lancement immédiat (--now)

L'argument enable crée les liens symboliques nécessaires dans les répertoires système d'Ubuntu. Pour votre Mac Mini, cela garantit qu'à chaque redémarrage (après une mise à jour ou une coupure de courant), le service Avahi se chargera automatiquement avant même que vous ne vous connectiez. Cette persistance est vitale pour une infrastructure serveur. Vous n'aurez jamais à relancer manuellement le service pour que votre machine apparaisse dans le Finder de votre Mac.
L'option --now déclenche le démon instantanément. À la seconde où vous validez cette commande, le protocole mDNS commence à émettre sur votre réseau local. Votre serveur sort de l'ombre et commence à diffuser son nom d'hôte sur le segment bsalado.lan.

sudo systemctl enable --now avahi-daemon
Synchronizing state of avahi-daemon.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable avahi-daemon
L'exécution de la commande sudo systemctl status avahi-daemon est le juge de paix de votre configuration réseau. Elle vous fournit un rapport détaillé en temps réel sur l'état de santé du service mDNS. Pour un administrateur, c'est le moment de vérifier que la "voix" du serveur Ubuntu porte bien sur le réseau bsalado.lan.

Lorsque vous lisez la sortie de cette commande, trois indicateurs doivent impérativement être au vert :
  • Loaded: loaded (...; enabled; ...) :
    La mention enabled confirme que le service démarrera automatiquement avec le Mac Mini. C'est la garantie que votre serveur ne redeviendra pas "invisible" après une coupure de courant.
  • Active: active (running) :
    Le point lumineux vert (sur la plupart des terminaux) indique que le démon est actuellement en train de diffuser ses paquets sur le réseau.
  • Status: "avahi-daemon 0.x.x starting up." :
    Les dernières lignes du journal (logs) affichées en bas de la commande vous confirment sur quelles interfaces réseau le service écoute (généralement eth0 ou enp...).

Si le statut affiche inactive ou failed, votre Mac ne pourra jamais détecter le serveur dans le Finder, même si Samba est parfaitement configuré. Avahi est le phare qui guide les autres machines ; sans lui, votre serveur reste une île isolée. 

Dans votre journal d'administration, cette étape confirme que :
  • Le service est "Active (running)" :
    Il fonctionne en temps réel.
    Le service est "Enabled" :
    La configuration est pérenne et survivra aux redémarrages.
    Le serveur est visible :
    Les paquets "Bonjour" sont désormais envoyés sur le réseau, préparant la route pour l'accès simplifié via Samba.

 

sudo systemctl status avahi-daemon
● avahi-daemon.service - Avahi mDNS/DNS-SD Stack Loaded: loaded (/lib/systemd/system/avahi-daemon.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2026-05-09 15:54:03 CEST; 1 day 4h ago TriggeredBy: ● avahi-daemon.socket Main PID: 659 (avahi-daemon) Status: "avahi-daemon 0.8 starting up." Tasks: 2 (limit: 9076) Memory: 2.1M CPU: 16min 46.019s CGroup: /system.slice/avahi-daemon.service ├─659 "avahi-daemon: running [macminiserver.local]" └─682 "avahi-daemon: chroot helper" mai 09 15:56:06 macminiserver avahi-daemon[659]: Registering new address record for fe80::345b:7ff:fee0:d784 on br-f4c30fdb5954.*. mai 09 15:56:06 macminiserver avahi-daemon[659]: Joining mDNS multicast group on interface veth73fc283.IPv6 with address fe80::3c0d:4fff:fe2a:b> mai 09 15:56:06 macminiserver avahi-daemon[659]: New relevant interface veth73fc283.IPv6 for mDNS. mai 09 15:56:06 macminiserver avahi-daemon[659]: Registering new address record for fe80::3c0d:4fff:fe2a:be1f on veth73fc283.*. mai 09 15:56:06 macminiserver avahi-daemon[659]: Joining mDNS multicast group on interface br-701b387aeb11.IPv6 with address fe80::ecc7:92ff:fe> mai 09 15:56:06 macminiserver avahi-daemon[659]: New relevant interface br-701b387aeb11.IPv6 for mDNS. mai 09 15:56:06 macminiserver avahi-daemon[659]: Registering new address record for fe80::ecc7:92ff:fe3b:858a on br-701b387aeb11.*. mai 09 15:56:06 macminiserver avahi-daemon[659]: Joining mDNS multicast group on interface veth38acd36.IPv6 with address fe80::ce5:81ff:fe35:d8> mai 09 15:56:06 macminiserver avahi-daemon[659]: New relevant interface veth38acd36.IPv6 for mDNS. mai 09 15:56:06 macminiserver avahi-daemon[659]: Registering new address record for fe80::ce5:81ff:fe35:d83 on veth38acd36.*.
La création du répertoire /home/administrateur/partage et l'application des permissions 770 définissent un espace d'échange sécurisé au sein de votre dossier personnel. Cette étape est stratégique : elle permet de préparer un point de partage Samba qui ne sera accessible qu'à vous-même et aux membres de votre groupe d'administration, excluant ainsi tout utilisateur non autorisé ou "invité" sur le réseau. L'attribution de ces droits spécifiques est un choix de sécurité robuste pour votre environnement bsalado.lan :
  • Le premier 7 (Propriétaire) :
    Vous conservez un contrôle total (lecture, écriture, exécution) sur le dossier.
  • Le second 7 (Groupe) :
    Les membres du groupe associé (généralement administrateur ou sudo) bénéficient des mêmes droits, ce qui est idéal pour la collaboration entre comptes d'administration.
  • Le 0 (Autres) :
    Aucun autre utilisateur du système ou du réseau ne peut voir, entrer ou modifier le contenu de ce dossier.

Bien que vous ayez configuré un espace massif sur /SSD2, ce partage situé dans votre Home Directory (/home/administrateur) sert souvent de zone de transit pour des fichiers de configuration rapides, des scripts personnels ou des documents temporaires avant leur archivage définitif.

mkdir -p /home/administrateur/partage
chmod 770 /home/administrateur/partage
Le fichier /etc/samba/smb.conf est le centre de pilotage de votre serveur de fichiers. C'est ici que vous allez traduire votre organisation physique (vos dossiers sur le /SSD2) en une réalité visible et accessible pour votre Mac. Modifier ce fichier permet de définir précisément quels dossiers sont partagés, qui a le droit d'y accéder, et comment ils doivent apparaître dans le réseau bsalado.lan.

Pour que votre configuration soit optimale et sécurisée, votre fichier doit s'articuler autour de deux sections principales :
La section [global] :
L'identité du serveur. C'est ici que l'on définit le comportement général de Samba. Pour une intégration parfaite avec macOS, on y ajoute souvent des paramètres de compatibilité (VFS objects) qui permettent au Finder de gérer les métadonnées Apple et les icônes personnalisées.
Security :
Doit être réglé sur user pour forcer l'authentification.
Les sections de partage :
Vos dossiers

Chaque dossier que vous souhaitez voir dans le Finder (comme /SSD2/www ou /SSD2/backup) nécessite sa propre déclaration. Toute modification dans ce fichier ne devient effective qu'après un redémarrage du service (sudo systemctl restart smbd). Un oubli de virgule ou un chemin erroné peut rendre le partage invisible. En configurant correctement ce fichier, vous liez la puissance de votre stockage Ubuntu à la simplicité du Finder :
  • Sécurité :
    En désactivant guest ok, vous vous assurez que seul votre compte peut voir vos données.
  • Performance :
    En pointant directement vers le /SSD2, vous profitez de la vitesse maximale de votre second disque.
  • Organisation :
    Vous pouvez donner des noms conviviaux à vos partages (ex: "Site Web Production") différents du nom du dossier réel sur le disque.

Dans votre journal d'administration, ce fichier est le document de référence qui décrit la "carte" de votre serveur pour le reste du monde. Une fois édité, votre Mac Mini ne sera plus seulement une unité centrale, mais un véritable NAS (Network Attached Storage) sur mesure.

sudo nano /etc/samba/smb.conf

/etc/samba/smb.conf
[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
;   interfaces = 127.0.0.0/8 eth0
;   bind interfaces only = yes
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
;   logon path = \\%N\profiles\%U
;   logon drive = H:

;   logon script = logon.cmd

; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
; add group script = /usr/sbin/addgroup --force-badname %g
;   include = /home/samba/etc/smb.conf.%m

;   idmap config * :              backend = tdb
;   idmap config * :              range   = 3000-7999
;   idmap config YOURDOMAINHERE : backend = tdb
;   idmap config YOURDOMAINHERE : range   = 100000-999999
;   template shell = /bin/bash

   usershare allow guests = yes

;[homes]
;   comment = Home Directories
;   browseable = no

;   read only = yes
;   create mask = 0700
;   directory mask = 0700
;   valid users = %S

;[netlogon]
;   comment = Network Logon Service
;   path = /home/samba/netlogon
;   guest ok = yes
;   read only = yes

;[profiles]
;   comment = Users profiles
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700

[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
;   write list = root, @lpadmin

[homes]
   comment = Home Directories
   browseable = yes
   read only = no
   create mask = 0700
   directory mask = 0700
   valid users = %S

[Public]
   path = /srv/public
   browseable = yes
   read only = no
   guest ok = yes

[www-bsalado]
   path = /SSD2/www/bsalado.eu
   valid users = administrateur
   read only = no
   browsable = yes
   create mask = 0644
   directory mask = 0755
   force group = www-data
La commande sudo smbpasswd -a administrateur est l'étape de sécurité indispensable pour lier votre compte utilisateur Linux au service de partage de fichiers. Bien que l'utilisateur administrateur existe déjà sur votre système Ubuntu, Samba utilise sa propre base de données de mots de passe chiffrés pour gérer les accès réseau. Samba n'utilise pas directement le mot de passe de votre session Linux pour des raisons de sécurité et de compatibilité de protocoles. L'option -a (add) permet d'ajouter spécifiquement votre identifiant à la base Samba. C'est ce mot de passe qui vous sera demandé par macOS lorsque vous cliquerez sur "Se connecter comme..." dans le Finder pour accéder à vos dossiers sur le /SSD2. Dans votre journal d'administration bsalado.lan, il est conseillé de :

  • Utiliser un mot de passe robuste :
    Étant donné que ce service expose vos fichiers sur le réseau local, la force du mot de passe est votre première ligne de défense.
  • Synchroniser ou non :
    Vous pouvez choisir d'utiliser le même mot de passe que votre session Ubuntu pour plus de simplicité, ou un mot de passe différent pour compartimenter la sécurité de l'accès distant.

Une fois cette commande exécutée et le mot de passe saisi deux fois, le lien entre votre identité et le protocole SMB est scellé. Dès cet instant, et après avoir configuré vos partages dans le fichier smb.conf, votre Mac sera capable de s'authentifier de manière transparente. Si vous changez un jour votre mot de passe utilisateur Ubuntu via la commande passwd, n'oubliez pas de mettre à jour également le mot de passe Samba avec cette même commande smbpasswd pour conserver une cohérence d'accès fluide depuis votre Finder.

sudo smbpasswd -a administrateur
New SMB password: Retype new SMB password:
La commande sudo systemctl restart smbd est l'action qui concrétise toutes vos modifications de configuration. En redémarrant le démon Samba (smbd), vous forcez le système à relire le fichier /etc/samba/smb.conf et à appliquer instantanément les nouveaux partages, les permissions et les paramètres de sécurité que vous venez de définir.
Contrairement à certains services modernes qui peuvent recharger leur configuration à chaud, Samba nécessite souvent un redémarrage complet pour initialiser proprement les nouveaux points de montage réseau.
Pour votre infrastructure, c'est le moment où :
Le nouveau dossier /home/administrateur/partage devient officiellement une ressource réseau.
Les accès restreints au /SSD2 sont activés selon les utilisateurs valides.
Les paramètres de compatibilité avec le Finder de macOS sont mis en œuvre.
Il est toujours prudent de s'assurer que le service a redémarré sans erreur. Une simple faute de frappe dans le fichier de configuration pourrait empêcher Samba de se relancer. Vous pouvez vérifier la réussite de l'opération avec la commande : sudo systemctl status smbd
Le résultat final dans le Finder
C'est à cet instant précis que la magie de la collaboration entre Avahi et Samba opère. En retournant sur votre Mac, vous devriez voir votre serveur Ubuntu apparaître (si ce n'est déjà fait) et, en cliquant sur "Se connecter comme...", les dossiers partagés que vous avez configurés s'afficheront comme des volumes classiques.
Note d'administration : Si vous modifiez à nouveau vos partages à l'avenir, n'oubliez pas que cette commande est le "bouton de validation" nécessaire pour que vos changements soient visibles depuis votre réseau local bsalado.lan. Votre serveur est désormais pleinement opérationnel en tant que NAS performant et sécurisé.
sudo systemctl restart smbd
L'utilisation de l'adresse smb://172.16.0.2/www-bsalado dans la fonction "Se connecter au serveur" (Cmd+K) du Finder marque l'aboutissement technique de votre configuration. En ciblant directement l'adresse IP et le nom du partage, vous établissez une connexion point à point qui court-circuite toute latence de découverte réseau pour accéder immédiatement à votre environnement de production. Une fois cette adresse validée, le Finder sollicitera vos identifiants. C'est ici que le travail effectué avec smbpasswd prend tout son sens :
  • Authentification :
    En saisissant votre nom d'utilisateur administrateur et le mot de passe dédié, macOS monte le volume /SSD2/www comme s'il s'agissait d'un disque dur externe branché directement sur votre Mac.
  • Persistance :
    Une fois connecté, le partage apparaît sur votre bureau et dans la barre latérale. Vous pouvez désormais faire glisser ce volume dans vos "Éléments favoris" ou dans vos réglages d'ouverture pour qu'il se reconnecte automatiquement à chaque session.

Travailler via ce montage SMB transforme radicalement votre manière de gérer le domaine bsalado.eu :
  • Édition en direct :
    Vous pouvez ouvrir vos fichiers HTML, PHP ou vos fichiers de configuration Docker directement avec vos outils macOS (VS Code, Sublime Text) sans passer par SSH ou des transferts FTP laborieux.
  • Gestion des ressources :
    Le déplacement de fichiers multimédias ou de dossiers volumineux vers votre serveur se fait par un simple glisser-déposer, profitant de la bande passante de votre réseau local.
  • Vitesse d'exécution :
    Puisque ce partage pointe vers votre SSD secondaire, les temps d'accès et les écritures de fichiers sont optimaux, garantissant une réactivité fluide même sur des projets complexes.
 
Votre infrastructure est maintenant bouclée : Avahi assure la visibilité, Samba assure le transport, et le Finder assure l'interface. Votre Mac Mini Server est désormais parfaitement intégré, offrant le meilleur des deux mondes : la puissance brute d'un serveur Linux et le confort d'utilisation de l'écosystème Apple. Vous disposez d'un véritable serveur de fichiers professionnel, sécurisé et taillé pour la performance.

smb://172.16.0.2/www-partage
CONCLUSION
L'aboutissement de cette configuration marque une étape fondamentale dans l'unification de votre parc informatique, transformant votre serveur Ubuntu d'une machine isolée en un membre natif et intuitif de l'écosystème Apple. En orchestrant la synergie entre la découverte de services par Avahi et la puissance de partage de Samba, vous avez instauré une passerelle invisible qui efface les barrières entre les systèmes d'exploitation. Cette architecture garantit que vos ressources de stockage, notamment la rapidité de vos SSD secondaires, sont désormais exploitables avec la même fluidité qu'un disque interne, tout en bénéficiant de la robustesse et de la sécurité des permissions Linux.
Cette intégration dépasse le simple confort technique pour offrir un environnement de travail professionnel où la gestion des données sur le réseau bsalado.lan devient transparente. La présence constante du serveur dans la barre latérale du Finder et la résolution simplifiée des noms d'hôte stabilisent vos flux de production, qu'il s'agisse de développement web, de gestion de conteneurs Docker ou de sauvegarde. Vous disposez dorénavant d'une fondation solide et évolutive, capable de soutenir vos futurs déploiements avec une accessibilité totale et une performance optimisée, parachevant ainsi la mutation de votre Mac Mini Server en un centre de ressources centralisé et parfaitement maîtrisé.
 11 - SAUVEGARDE DE LA CONFIGURATION DU SERVEUR
img pre10
Schéma de principe - Sauvegarde de la configuration du serveur.
 
La mise en place d'une routine de sauvegarde périodique pour les fichiers de configuration d'un serveur Ubuntu est la pierre angulaire d'une administration système sereine et professionnelle. Ces fichiers, qui représentent la mémoire et l'intelligence de votre machine, contiennent l'intégralité des réglages personnalisés que vous avez patiemment mis en œuvre pour orchestrer vos services, vos accès réseau et la sécurité de vos données. En cas de défaillance matérielle d'un disque, d'une erreur de manipulation lors d'une mise à jour ou d'une mauvaise commande, l'absence de ces sauvegardes peut transformer un simple incident en un sinistre majeur, obligeant à reconstruire toute l'architecture à partir d'une feuille blanche. À l'inverse, disposer d'une copie régulière de ces configurations textuelles offre une assurance de continuité de service en permettant de restaurer l'état exact de votre serveur en seulement quelques minutes. C'est cette démarche préventive qui garantit la résilience de votre infrastructure et vous permet d'aborder chaque modification technique avec la certitude qu'un retour en arrière est toujours possible sans perte d'historique.

La commande suivante sert à créer de manière sécurisée le dossier qui va accueillir toutes les sauvegardes des fichiers de configuration de votre système. L'utilisation du paramètre -p est particulièrement astucieuse pour vos lecteurs, car elle permet de générer toute l'arborescence d'un seul coup, en créant le sous-dossier config en même temps que le dossier parent backup s'il n'existait pas encore, tout en évitant d'afficher un message d'erreur si l'emplacement est déjà présent sur le disque.
sudo mkdir -p /SSD2/backup/config
La commande suivante sert à ouvrir l'éditeur de texte intégré nano avec les privilèges d'administration afin de créer ou de modifier le script de sauvegarde automatique. L'usage du préfixe sudo est indispensable car le répertoire ciblé fait partie des zones protégées du système, ce qui empêche toute modification accidentelle par un utilisateur non autorisé.

L'analyse du résultat se traduit par une bascule immédiate de l'écran de la console vers l'interface simplifiée de l'éditeur nano. Le terminal habituel s'efface pour laisser place à une page blanche ou au code existant du script, avec un menu de commandes affiché tout en bas de l'écran pour vous guider. L'absence de message d'erreur à l'ouverture confirme que vous disposez des droits nécessaires pour rédiger vos lignes de code et programmer le comportement de votre future routine de sauvegarde.

Le simple appel du nom du script backup-configs.sh sert à solliciter l'exécution de la routine de sauvegarde que vous avez programmée. Pour que le système comprenne cette instruction sans que vous n'ayez à spécifier tout son chemin d'accès, il est nécessaire que l'administrateur se trouve déjà à l'intérieur du dossier où est rangé le fichier, ou que ce script ait été déclaré dans les chemins prioritaires d'Ubuntu.

L'analyse de ce résultat dépend directement de la manière dont la commande a été introduite. Si le système répond immédiatement en affichant le déroulement de la sauvegarde, cela confirme que le script est parfaitement reconnu, qu'il possède les droits d'exécution nécessaires et qu'il accomplit sa mission de sécurisation des fichiers de configuration. En revanche, si Ubuntu renvoie un message indiquant que la commande est introuvable, cela signifie simplement qu'il faut préciser au système où chercher ce fichier, par exemple en tapant ./backup-configs.sh si l'on se situe dans le bon répertoire, rappelant ainsi aux lecteurs qu'un serveur a besoin d'une trajectoire rigoureuse pour exécuter ses tâches.
sudo nano /usr/local/sbin/backup-configs.sh

 

#!/bin/bash
# ========================= # SAUVEGARDE AUTOMATIQUE DES CONFIGURATIONS # ========================= DATE=$(date +"%Y-%m-%d_%H-%M") BASE="/SSD2/backup" DEST_CONFIG="$BASE/config/configs-$DATE" DEST_DOCKER="$BASE/docker/docker-$DATE" DEST_APACHE="$BASE/apache/apache-$DATE" DEST_AKEEBA="$BASE/bsalado.eu" SOURCE_AKEEBA="/SSD2/www/bsalado.eu/administrator/components/com_akeebabackup/backup" mkdir -p "$DEST_CONFIG" "$DEST_DOCKER" "$DEST_APACHE" "$DEST_AKEEBA" # ========================= # CONFIGURATION SYSTÈME # ========================= rsync -aR --ignore-missing-args \ /etc/netplan/ \ /etc/sysctl.conf \ /etc/wireguard/ \ /etc/default/isc-dhcp-server \ /etc/dhcp/dhcpd.conf \ /etc/ssh/sshd_config \ /etc/ssh/sshd_config.d/ \ /etc/bind/ \ /var/lib/bind/zones/ \ /etc/resolv.conf \ /etc/systemd/resolved.conf \ /etc/samba/smb.conf \ /etc/fstab \ /etc/apt/sources.list.d/docker.list \ /etc/fail2ban/ \ /etc/letsencrypt/ \ "$DEST_CONFIG/" if [ -f /SSD2/www/bsalado.eu/configuration.php ]; then rsync -aR /SSD2/www/bsalado.eu/configuration.php "$DEST_CONFIG/" fi dpkg --get-selections > "$DEST_CONFIG/liste-paquets-installes.txt" # ========================= # COMPRESSION # ========================= cd "$BASE/config" || exit 1 tar -czf "configs-$DATE.tar.gz" "configs-$DATE" rm -rf "configs-$DATE" cd "$BASE/docker" || exit 1 tar -czf "docker-$DATE.tar.gz" "docker-$DATE" rm -rf "docker-$DATE" cd "$BASE/apache" || exit 1 tar -czf "apache-$DATE.tar.gz" "apache-$DATE" rm -rf "apache-$DATE" # ========================= # RÉTENTION 60 JOURS # ========================= find "$BASE/config" -name "configs-*.tar.gz" -type f -mtime +60 -delete

Cette commande sert à rendre le script de sauvegarde opérationnel en lui attribuant le droit d'exécution. Par défaut, sous Ubuntu, tout nouveau fichier texte est créé avec des droits restrictifs qui interdisent son lancement comme un programme, afin d'éviter qu'un script malveillant ne s'exécute tout seul. L'usage de l'argument +x lève cette barrière de sécurité de manière ciblée pour ce fichier précis, le transformant officiellement d'un simple document texte en un outil d'administration actif.
Lorsque vous validez cette instruction, le terminal ne renvoie aucun commentaire et affiche une nouvelle ligne vierge. Pour vos lecteurs, cette réaction neutre de la part d'Ubuntu est le signe d'une réussite totale, confirmant que le système de fichiers a immédiatement intégré ce changement de droits. Le script possède désormais le statut d'exécutable, ce qui permettra au serveur ou à l'administrateur de l'appeler directement pour lancer la procédure de sauvegarde sans être bloqué par une interdiction de sécurité.
sudo chmod +x /usr/local/sbin/backup-configs.sh

Cette commande sert à déclencher manuellement la routine d'archivage automatique en l'exécutant avec les privilèges de l'administrateur suprême du serveur. L'attribution du préfixe sudo est ici cruciale pour vos lecteurs, car le script a besoin d'une autorisation totale pour s'introduire dans les dossiers système verrouillés d'Ubuntu afin d'y copier les fichiers de configuration, une opération que le script ne pourrait pas accomplir s'il était lancé par un utilisateur ordinaire. L'analyse du résultat se manifeste par le défilement des étapes de sauvegarde à l'écran, témoignant de la bonne exécution du code. Le terminal confirme que le script accède successivement aux répertoires demandés, emballe les fichiers de réglages dans un bloc unique et les compresse pour réduire l'espace occupé sur le second disque. L'apparition finale d'un message de validation, souvent accompagné du nom précis du fichier généré et de son horodatage, atteste que l'opération s'est déroulée sans accroc et que la configuration actuelle de votre serveur est désormais entièrement sécurisée.
sudo /usr/local/sbin/backup-configs.sh

 

La mise en place d'une routine de sauvegarde périodique pour les fichiers de configuration d'un serveur Ubuntu est la pierre angulaire d'une administration système sereine et professionnelle. Ces fichiers, qui représentent la mémoire et l'intelligence de votre machine, contiennent l'intégralité des réglages personnalisés que vous avez patiemment mis en œuvre pour orchestrer vos services, vos accès réseau et la sécurité de vos données. En cas de défaillance matérielle d'un disque, d'une erreur de manipulation lors d'une mise à jour ou d'une mauvaise commande, l'absence de ces sauvegardes peut transformer un simple incident en un sinistre majeur, obligeant à reconstruire toute l'architecture à partir d'une feuille blanche. À l'inverse, disposer d'une copie régulière de ces configurations textuelles offre une assurance de continuité de service en permettant de restaurer l'état exact de votre serveur en seulement quelques minutes. C'est cette démarche préventive qui garantit la résilience de votre infrastructure et vous permet d'aborder chaque modification technique avec la certitude qu'un retour en arrière est toujours possible sans perte d'historique.

La commande suivante sert à créer de manière sécurisée le dossier qui va accueillir toutes les sauvegardes des fichiers de configuration de votre système. L'utilisation du paramètre -p est particulièrement astucieuse pour vos lecteurs, car elle permet de générer toute l'arborescence d'un seul coup, en créant le sous-dossier config en même temps que le dossier parent backup s'il n'existait pas encore, tout en évitant d'afficher un message d'erreur si l'emplacement est déjà présent sur le disque.

sudo mkdir -p /SSD2/backup/config


La commande suivante sert à ouvrir l'éditeur de texte intégré nano avec les privilèges d'administration afin de créer ou de modifier le script de sauvegarde automatique. L'usage du préfixe sudo est indispensable car le répertoire ciblé fait partie des zones protégées du système, ce qui empêche toute modification accidentelle par un utilisateur non autorisé.
L'analyse du résultat se traduit par une bascule immédiate de l'écran de la console vers l'interface simplifiée de l'éditeur nano. Le terminal habituel s'efface pour laisser place à une page blanche ou au code existant du script, avec un menu de commandes affiché tout en bas de l'écran pour vous guider. L'absence de message d'erreur à l'ouverture confirme que vous disposez des droits nécessaires pour rédiger vos lignes de code et programmer le comportement de votre future routine de sauvegarde. Le simple appel du nom du script backup-configs.sh sert à solliciter l'exécution de la routine de sauvegarde que vous avez programmée. Pour que le système comprenne cette instruction sans que vous n'ayez à spécifier tout son chemin d'accès, il est nécessaire que l'administrateur se trouve déjà à l'intérieur du dossier où est rangé le fichier, ou que ce script ait été déclaré dans les chemins prioritaires d'Ubuntu. L'analyse de ce résultat dépend directement de la manière dont la commande a été introduite. Si le système répond immédiatement en affichant le déroulement de la sauvegarde, cela confirme que le script est parfaitement reconnu, qu'il possède les droits d'exécution nécessaires et qu'il accomplit sa mission de sécurisation des fichiers de configuration. En revanche, si Ubuntu renvoie un message indiquant que la commande est introuvable, cela signifie simplement qu'il faut préciser au système où chercher ce fichier, par exemple en tapant ./backup-configs.sh si l'on se situe dans le bon répertoire, rappelant ainsi aux lecteurs qu'un serveur a besoin d'une trajectoire rigoureuse pour exécuter ses tâches.

#!/bin/bash

sudo nano /usr/local/sbin/backup-configs.sh

# =========================
# SAUVEGARDE AUTOMATIQUE DES CONFIGURATIONS
# =========================

DATE=$(date +"%Y-%m-%d_%H-%M")

BASE="/SSD2/backup"
DEST_CONFIG="$BASE/config/configs-$DATE"
DEST_DOCKER="$BASE/docker/docker-$DATE"
DEST_APACHE="$BASE/apache/apache-$DATE"
DEST_AKEEBA="$BASE/bsalado.eu"

SOURCE_AKEEBA="/SSD2/www/bsalado.eu/administrator/components/com_akeebabackup/backup"

mkdir -p "$DEST_CONFIG" "$DEST_DOCKER" "$DEST_APACHE" "$DEST_AKEEBA"

# =========================
# CONFIGURATION SYSTÈME
# =========================

rsync -aR --ignore-missing-args \
/etc/netplan/ \
/etc/sysctl.conf \
/etc/wireguard/ \
/etc/default/isc-dhcp-server \
/etc/dhcp/dhcpd.conf \
/etc/ssh/sshd_config \
/etc/ssh/sshd_config.d/ \
/etc/bind/ \
/var/lib/bind/zones/ \
/etc/resolv.conf \
/etc/systemd/resolved.conf \
/etc/samba/smb.conf \
/etc/fstab \
/etc/apt/sources.list.d/docker.list \
/etc/fail2ban/ \
/etc/letsencrypt/ \
"$DEST_CONFIG/"

if [ -f /SSD2/www/bsalado.eu/configuration.php ]; then
    rsync -aR /SSD2/www/bsalado.eu/configuration.php "$DEST_CONFIG/"
fi

dpkg --get-selections > "$DEST_CONFIG/liste-paquets-installes.txt"

# =========================
# COMPRESSION
# =========================

cd "$BASE/config" || exit 1
tar -czf "configs-$DATE.tar.gz" "configs-$DATE"
rm -rf "configs-$DATE"

cd "$BASE/docker" || exit 1
tar -czf "docker-$DATE.tar.gz" "docker-$DATE"
rm -rf "docker-$DATE"

cd "$BASE/apache" || exit 1
tar -czf "apache-$DATE.tar.gz" "apache-$DATE"
rm -rf "apache-$DATE"

# =========================
# RÉTENTION 60 JOURS
# =========================

find "$BASE/config" -name "configs-*.tar.gz" -type f -mtime +60 -delete


Cette commande sert à rendre le script de sauvegarde opérationnel en lui attribuant le droit d'exécution. Par défaut, sous Ubuntu, tout nouveau fichier texte est créé avec des droits restrictifs qui interdisent son lancement comme un programme, afin d'éviter qu'un script malveillant ne s'exécute tout seul. L'usage de l'argument +x lève cette barrière de sécurité de manière ciblée pour ce fichier précis, le transformant officiellement d'un simple document texte en un outil d'administration actif.
Lorsque vous validez cette instruction, le terminal ne renvoie aucun commentaire et affiche une nouvelle ligne vierge. Pour vos lecteurs, cette réaction neutre de la part d'Ubuntu est le signe d'une réussite totale, confirmant que le système de fichiers a immédiatement intégré ce changement de droits. Le script possède désormais le statut d'exécutable, ce qui permettra au serveur ou à l'administrateur de l'appeler directement pour lancer la procédure de sauvegarde sans être bloqué par une interdiction de sécurité.

sudo chmod +x /usr/local/sbin/backup-configs.sh


Cette commande sert à déclencher manuellement la routine d'archivage automatique en l'exécutant avec les privilèges de l'administrateur suprême du serveur. L'attribution du préfixe sudo est ici cruciale pour vos lecteurs, car le script a besoin d'une autorisation totale pour s'introduire dans les dossiers système verrouillés d'Ubuntu afin d'y copier les fichiers de configuration, une opération que le script ne pourrait pas accomplir s'il était lancé par un utilisateur ordinaire.

L'analyse du résultat se manifeste par le défilement des étapes de sauvegarde à l'écran, témoignant de la bonne exécution du code. Le terminal confirme que le script accède successivement aux répertoires demandés, emballe les fichiers de réglages dans un bloc unique et les compresse pour réduire l'espace occupé sur le second disque. L'apparition finale d'un message de validation, souvent accompagné du nom précis du fichier généré et de son horodatage, atteste que l'opération s'est déroulée sans accroc et que la configuration actuelle de votre serveur est désormais entièrement sécurisée.

sudo /usr/local/sbin/backup-configs.sh


Cette invocation de ce chemin spécifique, sans commande de modification associée, sert à désigner l'emplacement exact où le serveur Ubuntu enregistre la carte d'identité de votre tâche de sauvegarde sous forme de service automatisé. Pour vos lecteurs, ce répertoire /etc/systemd/system/ est le centre névralgique de la gestion des processus en arrière-plan, l'endroit où l'on dépose les instructions pour que le système sache gérer un programme de manière autonome, comme un grand.

L'analyse de ce résultat dépend de l'action qui accompagne ce chemin. S'il est utilisé pour consulter le contenu, il affiche les lignes de code décrivant les paramètres du service, comme le script à lancer et l'utilisateur responsable de la tâche. Si ce chemin est sollicité de manière brute sans outil de lecture comme cat ou less, le terminal signalera simplement qu'il s'agit d'un fichier texte et non d'une commande exécutable, confirmant ainsi aux lecteurs que cet emplacement est un espace de stockage de règles de gestion et non un levier d'action direct.

sudo nano /etc/systemd/system/backup-configs.service

[Unit]
Description=Sauvegarde des fichiers de configuration du serveur

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/backup-configs.sh


Cette commande combinée sert à créer et à rédiger le planificateur temporel qui va déclencher la sauvegarde de votre serveur Ubuntu à un moment précis. En ouvrant l'éditeur nano avec les privilèges sudo, vous injectez des instructions dans un fichier d'horloge appelé timer pour programmer l'exécution automatique de la tâche toutes les nuits à 3 heures 30, la mention de persistance garantissant que si le serveur était éteint à cette heure-là, la sauvegarde se lancerait immédiatement au redémarrage suivant.
L'analyse du résultat se valide par l'enregistrement de ce texte au cœur du système de gestion des tâches d'Ubuntu. L'écran de l'éditeur se ferme proprement après la sauvegarde, confirmant que le serveur a accepté ces nouvelles règles de planification sans rejeter le format des données. À ce stade, l'horloge interne du système possède toutes les directives nécessaires pour orchestrer l'archivage régulier en arrière-plan, libérant définitivement l'administrateur de la nécessité d'effectuer cette action manuellement.

sudo nano /etc/systemd/system/backup-configs.timer

[Unit]
Description=Sauvegarde automatique quotidienne des configurations

[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true

[Install]
WantedBy=timers.target


Cette commande sert à ordonner au gestionnaire central du serveur Ubuntu, appelé systemd, de relire l'intégralité de ses fichiers de configuration. Lorsque vous créez ou modifiez des tâches automatiques, comme le planificateur horaire et le service de sauvegarde que vous venez de rédiger, Ubuntu ne les prend pas en compte immédiatement par mesure de sécurité pour éviter de perturber les processus en cours. L'utilisation de daemon-reload force le système à scanner à nouveau ses répertoires internes pour enregistrer instantanément vos nouvelles instructions de sauvegarde.

Lorsque vous validez cette ligne, le terminal s'exécute de manière totalement invisible et affiche une nouvelle ligne d'invite sans renvoyer le moindre texte. L'analyse de ce résultat silencieux est excellente pour vos lecteurs, car elle confirme qu'Ubuntu a parcouru tous les fichiers de gestion, qu'il a validé la syntaxe de vos nouveaux scripts d'automatisation et qu'il est désormais prêt à les orchestrer sans avoir eu besoin de redémarrer tout le serveur.

sudo systemctl daemon-reload


Cette commande sert à activer et à démarrer instantanément le planificateur horaire que vous avez conçu pour vos sauvegardes automatiques. En associant l'action enable (qui programme le lancement automatique de l'horloge à chaque démarrage du serveur) et l'option --now (qui réveille le minuteur sur-le-champ sans attendre le prochain redémarrage), vous verrouillez définitivement la routine de sécurité de votre système Ubuntu.

Lorsque vous validez cette instruction, le terminal affiche deux lignes de texte techniques indiquant que des liens symboliques ont été créés dans les dossiers de démarrage d'Ubuntu. L'analyse de ce résultat confirme le succès total de l'opération : le système de gestion des tâches a officiellement enregistré votre horloge de sauvegarde, la rendant active immédiatement et de façon permanente, ce qui signifie que votre serveur est désormais autonome pour protéger ses configurations toutes les nuits à l'heure dite.

sudo systemctl enable --now backup-configs.timer

 

CONCLUSION
L'automatisation de la sauvegarde des configurations marque l'aboutissement d'une démarche d'administration rigoureuse et prévoyante sur votre serveur Ubuntu. En combinant la création d'un script ciblé, l'attribution de permissions d'exécution sécurisées et la mise en place d'un minuteur adossé au gestionnaire de tâches du système, vous avez doté votre infrastructure d'un véritable bouclier de protection. Le serveur n'est plus seulement fonctionnel, il est désormais résilient, capable de veiller sur sa propre mémoire technique de manière totalement autonome, jour après jour, sans intervention humaine. Ce chapitre met en lumière la philosophie même d'Ubuntu, où des outils textuels simples s'assemblent pour former des mécanismes de sécurité d'une efficacité redoutable. La possibilité de stocker ces archives compressées sur un second disque physique garantit une isolation parfaite face aux pannes matérielles. En maîtrisant ces commandes fondamentales, l'administrateur s'affranchit du stress des manipulations techniques, sachant que l'état de référence du serveur est définitivement mis à l'abri et prêt à être restauré en quelques secondes en cas de besoin.
12 - CONFIGURATION DE FAIL2BAN
img pre11
Schéma de principe - Configuration de Fail2Ban.

Ce chapitre met en lumière la philosophie même d'Ubuntu, où des outils textuels simples s'assemblent pour former des mécanismes de sécurité d'une efficacité redoutable. La possibilité de stocker ces archives compressées sur un second disque physique garantit une isolation parfaite face aux pannes matérielles. En maîtrisant ces commandes fondamentales, l'administrateur s'affranchit du stress des manipulations techniques, sachant que l'état de référence du serveur est définitivement mis à l'abri et prêt à être restauré en quelques secondes en cas de besoin. L'introduction de Fail2Ban au sein d'un serveur Ubuntu marque une étape cruciale pour la sécurisation de votre infrastructure contre les menaces extérieures. Dès qu'un ordinateur est connecté à Internet, il devient la cible quasi immédiate de robots automatisés qui tentent de s'y introduire en testant des milliers de combinaisons de mots de passe à la chaîne : c'est ce que l'on appelle une attaque par force brute. Face à cette menace invisible et incessante, Fail2Ban agit comme un gardien de nuit virtuel et automatisé, capable de surveiller en temps réel les accès à votre machine.
Le fonctionnement de cet outil est aussi simple qu'efficace pour protéger vos services comme le SSH, votre serveur web ou vos partages. Fail2Ban analyse en permanence les fichiers journaux du système, là où Ubuntu enregistre scrupuleusement toutes les tentatives de connexion et les erreurs d'authentification. Lorsqu'il repère qu'une même adresse IP échoue de manière répétée et suspecte dans un intervalle de temps très court, le logiciel prend immédiatement la décision de bloquer cette adresse à l'aide du pare-feu du serveur. L'intrus se retrouve alors banni, incapable de communiquer avec votre machine pendant une durée que vous aurez déterminée, ce qui décourage instantanément les assauts informatiques tout en préservant les ressources de votre serveur pour vos utilisateurs légitimes.

Cette commande sert à installer le logiciel de sécurité Fail2Ban sur votre serveur Ubuntu. En utilisant le gestionnaire de paquets apt, le système se connecte aux serveurs de distribution officiels d'Ubuntu pour télécharger le programme ainsi que tous les composants nécessaires à son bon fonctionnement, tandis que l'option -y permet de valider automatiquement toutes les demandes de confirmation pour réaliser une installation rapide et sans interruption. L'analyse de ce résultat se lit à travers le défilement des lignes d'installation qui affichent le téléchargement des fichiers, le décompactage du logiciel et sa configuration initiale. À la fin du processus, le retour à la ligne de commande classique sans message d'alerte indique que Fail2Ban est désormais correctement intégré au système, démarré en arrière-plan et prêt à surveiller les accès de votre serveur pour le protéger des intrus.

sudo apt install fail2ban -y


Le simple mot-clé jail.local fait référence au nom du document dans lequel sont inscrites toutes les directives de filtrage et de punition de votre gardien virtuel. Pour vos lecteurs, ce terme désigne la "prison" (le mot jail signifiant prison en anglais) dans laquelle Fail2Ban va enfermer numériquement les adresses IP malveillantes en leur coupant l'accès au serveur Ubuntu. L'analyse de ce résultat montre que l'évocation seule de ce nom de fichier, sans préciser de chemin ni de commande au serveur, ne déclenche aucune action de la part d'Ubuntu, le terminal indiquant qu'il ne s'agit pas d'une instruction valide. Cet élément rappelle à vos lecteurs que dans l'univers Linux, chaque fichier de configuration doit toujours être accompagné d'un outil approprié, comme un éditeur de texte pour le modifier ou le service Fail2Ban lui-même pour l'analyser et appliquer les règles de sécurité qu'il contient.

sudo nano /etc/fail2ban/jail.local

[DEFAULT]

# Ne jamais bannir ces IPs (LAN + VPN + localhost)
ignoreip = 127.0.0.1/8 172.16.0.0/16 10.10.0.0/24

# Bannissement
bantime = 1h
findtime = 10m
maxretry = 3

# Backend
backend = systemd

# Email (optionnel)
destemail = root@localhost
sender = Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

# Action
banaction = iptables-multiport

# =========================
# PROTECTION SSH
# =========================
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log

# =========================
# PROTECTION APACHE (GLOBAL)
# =========================

[apache-auth]
enabled = true
port = http,https
logpath = /var/log/apache2/*error.log

[apache-badbots]
enabled = true
port = http,https
logpath = /var/log/apache2/*access.log

[apache-noscript]
enabled = true
port = http,https
logpath = /var/log/apache2/*access.log

[apache-overflows]
enabled = true
port = http,https
logpath = /var/log/apache2/*error.log

# =========================
# PROTECTION VAULTWARDEN (RENFORCÉE)
# =========================

[apache-vaultwarden]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/*access.log

# Plus strict
maxretry = 2
findtime = 10m
bantime = 24h

[phpmyadmin]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/*access.log
maxretry = 3
bantime = 1h

# =========================
# PROTECTION ANTI-SCAN / DOS LÉGER
# =========================

[apache-dos]
enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/apache2/*access.log
maxretry = 20
findtime = 1m
bantime = 10m

# =========================
# RÉCIDIVE (ATTAQUANTS PERSISTANTS)
# =========================

[recidive]
enabled = true
logpath = /var/log/fail2ban.log
banaction = iptables-allports
bantime = 7d
findtime = 1d
maxretry = 5

Créer un filtre spécifique Vaultwarden
sudo nano /etc/fail2ban/filter.d/vaultwarden.conf
[Definition]
failregex = ^ -.*"(POST /.*login.*)".* 401
ignoreregex =

Cette commande sert à programmer le lancement automatique du logiciel Fail2Ban dès que le serveur Ubuntu démarre. En utilisant l'outil de gestion des services systemctl avec l'argument enable, vous demandez au système de lier ce gardien virtuel à la séquence d'allumage de la machine, garantissant ainsi que votre protection contre les attaques par force brute sera opérationnelle en arrière-plan sans nécessiter d'activation manuelle après chaque maintenance ou coupure de courant. Lorsque vous validez cette instruction, le terminal affiche une ligne technique indiquant qu'un lien symbolique a été créé dans les dossiers de démarrage d'Ubuntu. L'analyse de ce résultat confirme le succès de l'opération : Fail2Ban est désormais officiellement inscrit dans la liste des services prioritaires du serveur, assurant une surveillance continue et automatique de vos accès dès le chargement initial du système d'exploitation.

sudo systemctl enable fail2ban

Cette commande sert à redémarrer le service Fail2Ban afin de forcer le logiciel à couper son exécution en cours et à se relancer immédiatement. Sous Ubuntu, cette action est indispensable à chaque fois que vous modifiez le fichier jail.local : Fail2Ban tourne en arrière-plan et ne lit ses instructions qu'au moment de son initialisation. Le redémarrer permet donc d'appliquer instantanément vos nouvelles règles de sécurité et vos temps de bannissement sans avoir à redémarrer l'intégralité du serveur. Lorsque vous validez cette ligne, le terminal s'exécute de manière totalement silencieuse et affiche une nouvelle ligne d'invite vierge.

Analyse du résultat

  • L'absence de message (silence du terminal) :
    C'est le signe d'une réussite totale. Cela confirme qu'Ubuntu a arrêté le service, a relu vos fichiers de configuration sans y trouver d'erreur de syntaxe, et a relancé le gardien virtuel avec succès.
  • En cas d'erreur :
    Si le terminal affiche une alerte, cela signifie généralement qu'une faute de frappe s'est glissée dans votre fichier jail.local, bloquant le démarrage du logiciel et nécessitant une vérification de votre code.
sudo systemctl restart fail2ban
Cette commande sert à vérifier l'état de santé en temps réel de Fail2Ban sur votre serveur Ubuntu. Après l'avoir installé, configuré et redémarré, l'argument status permet d'interroger le gestionnaire de services systemctl pour s'assurer que ce gardien virtuel fonctionne correctement en arrière-plan, qu'il surveille activement vos fichiers journaux et qu'aucun bug n'est venu bloquer son exécution. Lorsque vous validez cette ligne, le terminal affiche un bloc d'informations détaillées sur l'activité du logiciel.

Analyse du résultat

En observant le retour de la commande, vous devez prêter attention à plusieurs indicateurs clés :
  • La mention Active: active (running) :
    Écrite en vert sur la plupart des terminaux, elle confirme que Fail2Ban est pleinement opérationnel et qu'il protège votre serveur à l'instant présent.
  • La ligne Main PID :
    Elle indique le numéro d'identification unique du processus dans la mémoire d'Ubuntu, preuve que le programme est bien ancré dans le système.
  • Les lignes de journal (Logs) en bas d'affichage :
    Elles retracent les dernières actions du logiciel. Vous y verrez notamment l'initialisation des filtres et l'activation des différentes "prisons" (comme [sshd]) que vous avez configurées dans votre fichier jail.local.

sudo systemctl status fail2ban

CONCLUSION 

La mise en place de Fail2Ban marque une étape décisive dans le verrouillage de votre serveur Ubuntu. En transformant la passivité des fichiers journaux (logs) en une force de frappe défensive et automatisée, vous avez équipé votre machine d'un mécanisme de légitime défense indispensable. Ce logiciel ne se contente pas de constater les agressions : il y répond en temps réel, coupant court aux tentatives des robots malveillants avant même qu'ils ne puissent faire vaciller la sécurité de vos comptes. En conclusion, Fail2Ban offre un excellent ratio entre sa simplicité de déploiement et la sérénité qu'il apporte à l'administrateur. Bien qu'il ne remplace pas une politique de mots de passe robustes ou une authentification par clés SSH, il élimine définitivement le "bruit de fond" des attaques automatisées du Web, préservant à la fois la bande passante et les ressources CPU de votre serveur Ubuntu. Votre infrastructure est maintenant parée à faire face aux assauts extérieurs.

13 - CONCLUSION GÉNÉRALE

Cet article présente une architecture complète de serveur personnel auto-hébergé sous Ubuntu, pensée pour centraliser les services réseau, sécuriser les accès et automatiser la maintenance. L’ensemble repose sur une configuration cohérente et structurée intégrant la gestion du réseau local, du DNS, du DHCP, du VPN, du partage de fichiers, des sauvegardes et de la sécurité système. Le serveur utilise une adresse IP fixe en IPv4 et IPv6 afin de devenir le point central du réseau domestique. Il distribue automatiquement les adresses IP grâce à un serveur DHCP configuré avec des réservations fixes pour les équipements importants, ce qui garantit une administration stable et prévisible du réseau. Le DNS local, géré par BIND, permet une résolution interne des noms de machines et met également en place un système de Split Horizon DNS pour accéder aux services locaux via le même nom de domaine utilisé depuis Internet. La sécurité occupe une place majeure dans cette infrastructure. Le serveur SSH a été durci avec l’utilisation exclusive des clés publiques, la désactivation des mots de passe, des restrictions de sessions et des limitations d’accès selon les plages réseau autorisées. Le système Fail2ban complète cette protection en détectant et bloquant automatiquement les tentatives d’intrusion sur SSH, Apache, Vaultwarden et d’autres services exposés.
L'accès distant est assuré par un serveur WireGuard configuré en tunnel complet afin de permettre aux clients VPN d’accéder au réseau local et à Internet de manière sécurisée. Cette configuration assure une continuité d’usage même à distance tout en conservant les services internes comme le DNS local.
Le serveur intègre également Samba pour le partage de fichiers et l’accès aux répertoires réseau depuis différents systèmes, avec des espaces publics et privés adaptés aux besoins d’administration et d’hébergement web. Le stockage secondaire est organisé autour d’un second SSD dédié aux données, aux sauvegardes et aux services hébergés.
Enfin, une stratégie de sauvegarde automatisée a été mise en place afin d’archiver quotidiennement l’ensemble des configurations critiques du système, des services réseau, des conteneurs Docker et des applications web. Cette approche garantit une restauration rapide en cas de panne ou de mauvaise manipulation et démontre une volonté forte de fiabilité et de pérennité de l’infrastructure.