3 - Installation du serveur Debian
Debian est une organisation communautaire et démocratique, dont le but est le développement de systèmes d'exploitation basés exclusivement sur des logiciels libres. Debian se distingue de la plupart des distributions fondées sur elle par son caractère non commercial et par le mode de gouvernance coopératif de l'association qui gère la distribution. (Wikipedia)
Téléchargement
Suivant votre architecture processeur :
- https://deb.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/mini.iso
- https://deb.debian.org/debian/dists/stable/main/installer-arm64/current/images/netboot/mini.iso
Renommer le fichier : mini-debian-bookworm.iso
Mise en place
- Lancer VirtualBox

- Virtual machine name and operating system
- VM Name : Serveur Debian
- VM Folder : default
- ISO Image : …/mini-debian-bookworm.iso
- OS : Linux
- OS Distribution : Debian
- OS Version : Debian (64-bit) (⚠️ important)
- ☐
Proceed with Unattended Installation
- Specify virtual hardware
- Base Memory : 1024 Mio (768 Mio si vous n'avez que 8Go de RAM)
- Number of CPUs : autant de cœurs vert que possible (au moins 2)
- Specify virtual hard disk
- Disk Size : 15 Gio
- Hard Disk File Type and Format : VDI (VirtualBox Disk Image)
- [Finish]
Configuration
- Réseau [Adapter 1]
- Attached to : NAT
- [Redirection de ports] → [+]
- Nom : SSH
- Protocole : TCP
- Port hôte : 2222
- Port invité : 22
- Réseau [Adapter 2]
- ☑ Activer la carte réseau
- Attached to : Réseau interne
- Nom : intnet
- [OK]
Premier lancement

Navigation durant l'installation
L'installation se fait entièrement au clavier
- Flèche : ⬅⬆⬇➡ (déplacement dans les options)
- Barre d'espace (activer une option)
- Tabulation ↹ (déplacement dans les champs)
- Entrée ⏎ (validation d'une page)
⚠️ La touche [Entrée] ne peut pas servir à activer une case à cocher. Elle validera la page entière ! Pour activer une option, il faut utiliser la barre d'espace. Pour naviguer, il faut utiliser la touche tabulation.
Installation
- Install
- French - Français → France → Français
- enp0s3: Intel Corporation 82540EM Gigabit Ethernet Controller
- Nom de machine : serveur-debian
- Domaine : admx.osef
- France → deb.debian.org
- pas de mandataire (proxy), laissez vide
- ... Chargement ...
- Mot de passe du superutilisateur («root») : (laissez vide)
- Confirmation du mot de passe : (laissez vide)
- Nom complet du nouvel utilisateur : Utilisateur
- Identifiant pour le compte utilisateur : user
- Mot de passe pour le nouvel utilisateur : -+
- Confirmation du mot de passe : -+
- Assisté - utiliser un disque entier
- SCSI3 (0,0,0) (sda) - 16,1 GB ATA VBOX HARDDISK
- Tout dans une seule partition (recommandé pour les débutants)
- Terminer le partitionnement et appliquer les changements
- Faut-il appliquer les changements sur les disques ? : <oui>
- ... Première phase d'installation ...
- Souhaitez-vous participer à l'étude statistique sur l'utilisation des paquets ? (Comme vous voulez…)
- Sélection des logiciels : Tout déselectionner avec la barre d'espace puis... :
- [*] Serveur SSH
- [*] Utilitaires usuels du système
- [↹] <Continuer>
- ... Deuxième phase d'installation ...
- Installer le programme de démarrage GRUB sur un disque dur : <oui>
- /dev/sda (ata-VBOX_HARDDISK_VB....)
- Terminer l'installation : <Continuer>
Éjection
Dans le menu de la machine virtuelle :
- Périphériques
- Lecteurs optiques
- Remove Disk From Virtual Drive
- Lecteurs optiques
- Machine
- Redémarrage
Finitions
Entrer l'identifiant et le mot de passe utilisateur...
serveur-debian login: user
password: -+
sudo apt update
[sudo] password for user: -+
sudo apt -y install vim vim-airline bash-completion ssh
Démarrage du serveur debian en mode « headless »
Il ne sert à rien de consommer des ressources en laissant la fenêtre VirtualBox du serveur Debian affichée. Celà oblige l'hôte à piloter un écran virtuel inutilement. Dans un premier temps, arrêtez le serveur Debian :
# @server
sudo poweroff
👉 Ici, un premier snapshot peut-être envisagé
Dans la fenêtre de VirtualBox :
- cliquer sur le triangle noir à coté du bouton [Démarrer][▾]
- sélectionnez Start without GUI (Ctrl+Alt+Espace)
Le même résultat est obtenu depuis la ligne de commande en lançant :
Sous Linux/Unix/Mac :
# @host
VBoxManage startvm "Serveur Debian" --type headless
Sous Windows :
# @host
cd %ProgramFiles%
Oracle\VirtualBox\VBoxManage.exe startvm "Serveur Debian" --type headless
🔍 en mode « headless », l'accélération 3d n'est pas disponible.
Désormais, nous pouvons contrôler le serveur debian en ouvrant une connexion SSH depuis l'hôte.
# @host
ssh -p2222 user@localhost
Il y a deux avantages majeur à travailler dans le terminal de l'hôte via SSH plutôt que directement dans la fenêtre de Virtualbox.
- Pouvoir redimmensionner le terminal pour gagner de la place et afficher de longue ligne.
- Pouvoir copier/coller des commandes du navigateur de l'hôte vers le terminal.
Simplification de la connexion
Vu que c'est pénible de taper tout ça, nous allons simplifier. Dans un premier temps, il faut créer un fichier « config » dans le dossier « .ssh » de l'hôte :
# @host
# Terminal
vi ~/.ssh/config
# ou
nano ~/.ssh/config
# GUI
gedit ~/.ssh/config
# ou
kate ~/.ssh/config
# Windows
notepad.exe ~/.ssh/config
⚠️ Le Bloc-note de Windows est psychorigide, il adore ajouter « .txt » à la fin du fichier au moment de la sauvegarde.
Le fichier devra contenir ceci :
Host *
Compression yes
Host srv
Hostname localhost
User user
Port 2222
IdentityFile ~/.ssh/cle_tp_admx
Il ne reste qu'à sauvegarder :
- vi : [echap] :wq [entrée]
- nano : ctrl+O [entrée] ctrl+X
- gedit, micro, kate, notepad : ctrl+S, alt+F4
Désormais, vous pouvez appeler le serveur depuis l'hôte d'un simple :
# @host
ssh serveur
Suppression du mot de passe
Pour ne pas avoir à saisir un mot de passe à chaque connexion, copier le texte de la clé publique SSH de l'hôte (cat ~/.ssh/cle_tp_admx.pub) et collez le dans le fichier ~/.ssh/authorized_keys du serveur. Si le dossier « .ssh » n'existe pas sur le serveur, vous pouvez le créer avec : mkdir ~/.ssh.
Si votre hôte est sous Linux et que vous avez bien suivi les instructions de simplification de la connexion ci-dessus, vous pouvez obtenir le même résultat avec la commande :
# @host
ssh-copy-id -i ~/.ssh/cle_tp_admx serveur
Configuration du serveur Debian
Partage de connexion avec le client Ubuntu
Lorsqu'un ordinateur doit partager la connexion disponible sur l'une de ces interfaces réseau (ou carte) avec d'autres ordinateurs reliés à lui via une deuxième interface (ou plus), il faut activer une option du noyau Linux : l'IP Forwarding.
# @server
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Contrôler que la valeur 1 à bien remplacer la valeur 0 dans le fichier /proc/sys/net/ipv4/ip_forward en saisisant la commande de relecture suivante qui doit retourner la valeur 1 :
# @server
cat /proc/sys/net/ipv4/ip_forward
1
Pour activer « l'IP forward » à chaque démarrage du serveur sans intervention de votre part, il faut modifier le fichier /etc/sysctl.conf via le dossier de sous-configuration /etc/sysctl.d dans lequel nous allons créer le fichier suivant :
# @server
vi /etc/sysctl.d/perso.conf
# Autorise les paquets à traverser le système
net.ipv4.ip_forward=1
# Si besoin :
# désactivation de ipv6 pour toutes les interfaces
#net.ipv6.conf.all.disable_ipv6 = 1
# désactivation de l’auto configuration pour toutes les interfaces
#net.ipv6.conf.all.autoconf = 0
# désactivation de ipv6 pour les nouvelles interfaces (ex:si ajout de carte réseau)
#net.ipv6.conf.default.disable_ipv6 = 1
# désactivation de l’auto configuration pour les nouvelles interfaces
#net.ipv6.conf.default.autoconf = 0
Ces actions qui transforment le serveur en passerelle seraient suffisantes si l'ensemble des interfaces réseaux en jeux étaient configurées avec des adresses IP publiques et qu'une table de routage adéquate était en place... Mais ce n'est pas le cas ici.
Translation d'adresse
Le client Ubuntu ne pouvant pas accéder à une adresse IP public, nous allons attribuer à la deuxième carte réseau du serveur Debian (celle en réseau interne : intnet) ainsi qu'à celle du client Ubuntu, des adresses IP privées. Celle du serveur sera fixée dans /etc/network/interfaces, celle du client sera allouée par le serveur via le protocole DHCP.
Dans ce cas, pour que le partage fonctionne, il faut mettre en oeuvre la translation d'adresse dans la pile réseau du noyau Linux du serveur qui est piloté par la commande : iptables :
# @server
sudo apt install iptables
sudo iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
Cette ligne indique que tout les paquets qui transitent et sortent par l'interface réseau enp0s3 du serveur doivent être masqués (avec l'adresse IP publique de l'interface enp0s3).
Pour sauvegarder l'état des règles iptables, installer le paquet iptables-persistent :
# @server
sudo apt install iptables-persistent
Répondre oui au deux questions.
Construction d'un réseau privé
⚠️ N'utilisez pas le vi basic fourni avec beaucoup de distribution (son ergonomie est déroutante pour les débutants) préférez lui la version améliorer vim en suivant les consignes de la page d'aide dédié.
Pour ne pas avoir à saisir les commandes de partages et de NAT (Network Address Translation) à chaque redémarrage, nous allons automatiser leurs exécutions dans le fichier de configuration des interfaces réseaux et en profiter pour inscrire dans le marbre la configuration statique de la deuxième interface réseau du serveur :
# @server
sudo vi /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp
auto enp0s8
iface enp0s8 inet static
address 10.0.0.254
netmask 255.255.255.0
# post-up echo 1 > /proc/sys/net/ipv4/ip_forward
# post-up iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
Les deux dernières lignes ont été commentées. Elles sont concervées pour mémoire, afin de présenter comment ajouter des actions après l'activation d'une carte réseau. Ici, la première ligne à été rendu obsolète après la modification du fichier /etc/sysctl.conf et la deuxième par l'installation du paquet iptables-persistent (dans les deux cas, voir plus haut).
Pour activer la deuxième interface réseau une fois configurée, vous pouvez utiliser la commande :
# @server
sudo ifup enp0s8
👉 la commande ifdown permet de déconfigurer une interface réseau
Masqueradequoi ?
Ci-dessus, nous avons indiqué dans le fichier de configuration des interfaces réseaux qu'il falait, lorsque la deuxième carte réseau était activée, masquer l'adresse IP des paquets sortant par la première interface (enp0s3).
Pour cela, la commande iptables a été appelé.
- -t nat indique que l'on souhaite manipuler la table de « Network Adresse Translation »
- -A POSTROUTING indique que l'on souhaite Ajouter une règle à la chaine POSTROUTING (après le routage)
- -o enp0s3 indique que cela concerne la sortie de la première interface réseau
- -j MASQUERADE indique qu'il s'agit de masquer l'adresse IP d'origine
Pour vérifier que tout c'est bien passer, vous pouvez demander à iptables d'afficher les règles de « nat » active :
# @server
sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
La dernière ligne, indique que le « masquage » est bien en place pour toutes les sources et vers toutes les destinations.
👉 Si tous c'est bien passé, éteindre la VM et faire un nouveau snapshot (le premier peut être supprimer)
>>> Vous pouvez passer à l'installation du service DHCP
