
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
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.

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

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;
}
sudo mkdir -p /run/dhcp-server
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
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
sudo systemctl start isc-dhcp-server
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
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
sudo systemctl restart isc-dhcp-server
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-
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
Schéma de principe - Installation serveur SSH.
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
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.
- 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
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
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)
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))
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
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.pubCette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. .0.2
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
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) #AllowUsersCette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. .0.0/16Cette 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
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
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
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

Schéma de principe - Installation serveur DNS.
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.
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
sudo apt install bind9 bind9utils bind9-doc -y
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
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
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.
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
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'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.
- 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.
sudo mkdir -p /var/lib/bind/zones
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.
- 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).
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
};
- 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.
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";
};
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.
- 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.
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
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.
- 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.
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.
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.
- 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
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.
sudo chown bind:bind /var/lib/bind/zones/db.*
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.
- 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.
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.*
- 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.
sudo nano /etc/resolv.conf
nameserver 127.0.0.1
nameserver 172.16.0.2
search bsalado.lan
- 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
- 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
- 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.
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.
- 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.
- 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.
sudo systemctl restart named
- 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
- "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.*.
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
- 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.
- 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

Schéma de principe - Installation serveur VPN.
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.
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).
- 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
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
- 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
- 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).
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
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.
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
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").
wg --version
wireguard-tools v1.0.20210914 - https://git.zx2c4.com/wireguard-tools/
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
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.
- 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:~#
- 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.
À 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.
cd /etc/wireguard
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.
- 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.
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
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.
- 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=
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
# ========================================================== 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

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.
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
- 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 !!!!
sudo mkfs.ext4 /dev/sdb
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.
- 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"
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.
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
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/
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
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
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.
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
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.
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

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'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.
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.
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 :
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 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
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.*.
- 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
Pour que votre configuration soit optimale et sécurisée, votre fichier doit s'articuler autour de deux sections principales :
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
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:
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.
sudo systemctl restart smbd
- 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.
smb://172.16.0.2/www-partage
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é.

Schéma de principe - Sauvegarde de la configuration du serveur.
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/configLa 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
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.

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 fail2banCette 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.
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.