<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.epsi.tala-informatique.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jung+Jean-Marie</id>
	<title>BTS EPSI - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.epsi.tala-informatique.fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jung+Jean-Marie"/>
	<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Sp%C3%A9cial:Contributions/Jung_Jean-Marie"/>
	<updated>2026-07-15T18:07:48Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=OpenVPN&amp;diff=165</id>
		<title>OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=OpenVPN&amp;diff=165"/>
		<updated>2026-04-20T22:34:43Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Installation et Configuration OpenVPN sur pfSense (Remote Access)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#004d40;&amp;quot;&amp;gt;&lt;br /&gt;
Ce guide permet de configurer un VPN OpenVPN en mode Remote Access sur pfSense. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Il permet à des clients distants d&#039;accéder au réseau interne &amp;lt;b&amp;gt;192.168.60.0/24&amp;lt;/b&amp;gt; de manière sécurisée. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
L&#039;architecture repose sur un tunnel chiffré AES-256-GCM avec authentification par certificats et gestion des utilisateurs intégrée à pfSense.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;1 — Préparation du réseau&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Informations de l&#039;environnement réseau utilisé dans ce guide&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Adressage réseau&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Élément !! Adresse&lt;br /&gt;
|-&lt;br /&gt;
| pfSense LAN || 192.168.60.254&lt;br /&gt;
|-&lt;br /&gt;
| Réseau LAN || 192.168.60.0/24&lt;br /&gt;
|-&lt;br /&gt;
| VM cible || 192.168.60.33&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Schéma de l&#039;architecture :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                        Internet&lt;br /&gt;
                           │&lt;br /&gt;
              ┌────────────┴────────────┐&lt;br /&gt;
              │                         │&lt;br /&gt;
    ┌─────────────────┐       ┌─────────────────────┐&lt;br /&gt;
    │   Client VPN    │       │       pfSense        │&lt;br /&gt;
    │  (PC distant)   │ ════► │  OpenVPN Remote      │&lt;br /&gt;
    │  .ovpn importé  │       │  Access  Port 1194   │&lt;br /&gt;
    └─────────────────┘       └──────────┬──────────┘&lt;br /&gt;
                                         │&lt;br /&gt;
                              ┌──────────┴──────────┐&lt;br /&gt;
                              │   LAN 192.168.60.x  │&lt;br /&gt;
                              │  VM : 192.168.60.33 │&lt;br /&gt;
                              └─────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;2 — Création de l&#039;Autorité de Certification (CA)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Création d&#039;une CA interne qui signera tous les certificats du VPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Accès au gestionnaire de certificats&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Certificate Authorities → Add&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Configuration de la CA&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Remplir les champs de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! Champ !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Method || Create an internal Certificate Authority&lt;br /&gt;
|-&lt;br /&gt;
| Descriptive Name || VPN-CA&lt;br /&gt;
|-&lt;br /&gt;
| Key Length || 2048&lt;br /&gt;
|-&lt;br /&gt;
| Digest Algorithm || SHA256&lt;br /&gt;
|-&lt;br /&gt;
| Lifetime || 3650&lt;br /&gt;
|-&lt;br /&gt;
| Common Name || VPN-CA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Remplir les informations d&#039;identité :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Country Code : FR&lt;br /&gt;
City         : Montpellier (ou au choix)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; La durée de vie de 3650 jours correspond à 10 ans. La CA sera valable pendant toute cette période pour signer les certificats du VPN.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;3 — Création du certificat serveur&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Génération du certificat d&#039;identité du serveur OpenVPN, signé par la CA&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Accès à la section Certificates&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Certificates → Add / Sign&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Configuration du certificat serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Remplir les champs de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! Champ !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Method || Create internal certificate&lt;br /&gt;
|-&lt;br /&gt;
| Descriptive Name || OpenVPN-Server&lt;br /&gt;
|-&lt;br /&gt;
| Certificate Authority || VPN-CA&lt;br /&gt;
|-&lt;br /&gt;
| Type || Server Certificate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Le type doit impérativement être &amp;lt;b&amp;gt;Server Certificate&amp;lt;/b&amp;gt; et non User Certificate, sinon OpenVPN refusera de démarrer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;4 — Création du serveur OpenVPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Configuration du serveur VPN via l&#039;assistant intégré de pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Accès à l&#039;assistant&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;VPN → OpenVPN → Wizards&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sélectionner le backend d&#039;authentification :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Authentication Backend : Local User Access&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis sélectionner successivement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CA          : VPN-CA&lt;br /&gt;
Certificate : OpenVPN-Server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Configuration générale du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:65%;&amp;quot;&lt;br /&gt;
! Paramètre !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Server Mode || Remote Access (SSL/TLS)&lt;br /&gt;
|-&lt;br /&gt;
| Protocol || UDP&lt;br /&gt;
|-&lt;br /&gt;
| Interface || LAN (lab Proxmox)&lt;br /&gt;
|-&lt;br /&gt;
| Port || 1194&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Cryptographie&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:65%;&amp;quot;&lt;br /&gt;
! Paramètre !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| TLS Authentication || Activé&lt;br /&gt;
|-&lt;br /&gt;
| Encryption Algorithm || AES-256-GCM&lt;br /&gt;
|-&lt;br /&gt;
| Auth Digest Algorithm || SHA256&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; AES-256-GCM est le chiffrement recommandé — il combine chiffrement et authentification du message en un seul algorithme performant.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Configuration réseau&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:65%;&amp;quot;&lt;br /&gt;
! Paramètre !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Tunnel Network || 10.8.0.0/24&lt;br /&gt;
|-&lt;br /&gt;
| Local Network || 192.168.60.0/24&lt;br /&gt;
|-&lt;br /&gt;
| DNS Server 1 || 192.168.60.254&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Le champ &amp;lt;b&amp;gt;Tunnel Network&amp;lt;/b&amp;gt; doit être un réseau inutilisé sur votre infrastructure. Le champ &amp;lt;b&amp;gt;Local Network&amp;lt;/b&amp;gt; correspond au réseau LAN réel à exposer aux clients VPN.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Finish&amp;lt;/b&amp;gt; pour terminer l&#039;assistant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;5 — Création d&#039;un utilisateur VPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Création d&#039;un compte utilisateur avec son certificat client pour l&#039;authentification VPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Accès au gestionnaire d&#039;utilisateurs&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → User Manager → Add&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Configuration de l&#039;utilisateur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Remplir les informations du compte :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%;&amp;quot;&lt;br /&gt;
! Champ !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Username || vpnuser&lt;br /&gt;
|-&lt;br /&gt;
| Password || (mot de passe sécurisé)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cocher l&#039;option :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Click to create a user certificate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans le menu déroulant qui apparaît, sélectionner :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CA : VPN-CA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; En cochant cette case, pfSense va automatiquement générer et signer un certificat client pour cet utilisateur. Ce certificat sera embarqué dans le fichier de configuration .ovpn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;6 — Installation du package d&#039;export client&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Installation du package pfSense permettant d&#039;exporter les configurations clients OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Accès au gestionnaire de paquets&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Package Manager → Available Packages&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Installation du package&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Rechercher et installer le package suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openvpn-client-export&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Install&amp;lt;/b&amp;gt; puis confirmer.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; Ce package ajoute une interface dans pfSense permettant de générer automatiquement les fichiers de configuration pour chaque utilisateur VPN, incluant les certificats et clés embarquées.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;7 — Export de la configuration client&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Génération et téléchargement du fichier de configuration pour le client VPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Accès à l&#039;export client&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;VPN → OpenVPN → Client Export&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La liste des utilisateurs configurés apparaît.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Téléchargement de la configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Choisir le format adapté au système du client :&lt;br /&gt;
&lt;br /&gt;
Pour &amp;lt;b&amp;gt;Windows&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Windows Installer (.exe)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Le fichier .ovpn contient les certificats, clés et paramètres de connexion. Il est confidentiel : ne pas le partager ni le stocker dans un endroit non sécurisé.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;8 — Règles de pare-feu pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Création des règles de pare-feu pour autoriser les clients VPN à accéder au réseau LAN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Règle OpenVPN → LAN&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → Rules → OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer la règle suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Action      : Pass&lt;br /&gt;
Interface   : OpenVPN&lt;br /&gt;
Protocol    : any&lt;br /&gt;
Source      : OpenVPN net&lt;br /&gt;
Destination : LAN net&lt;br /&gt;
Description : Allow VPN clients to LAN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ NOTE :&amp;lt;/b&amp;gt; Pour un environnement de production, affiner les règles en précisant les protocoles et ports autorisés plutôt que d&#039;utiliser &amp;quot;any&amp;quot;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Schéma du flux réseau VPN :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌──────────────────────────────────────────────────────────────┐&lt;br /&gt;
│                      pfSense Firewall                        │&lt;br /&gt;
├──────────────────────────────────────────────────────────────┤&lt;br /&gt;
│                                                              │&lt;br /&gt;
│  WAN Rules    : ✓ UDP 1194 → OpenVPN Server                 │&lt;br /&gt;
│  OpenVPN Rules: ✓ OpenVPN net → LAN net (any)               │&lt;br /&gt;
│  LAN Rules    : ✓ Trafic habituel                           │&lt;br /&gt;
│                                                              │&lt;br /&gt;
└──────────────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; puis &amp;lt;b&amp;gt;Apply Changes&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;9 — Client VPN (VM Windows)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Installation et configuration du client OpenVPN sur la VM Windows&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Installation du client&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur la VM Windows, installer le client OpenVPN officiel puis importer le fichier exporté depuis pfSense :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Clic droit&amp;lt;/b&amp;gt; sur l&#039;icône OpenVPN dans la barre des tâches&lt;br /&gt;
* Sélectionner &amp;lt;b&amp;gt;Import file&amp;lt;/b&amp;gt;&lt;br /&gt;
* Choisir le fichier &amp;lt;b&amp;gt;.ovpn&amp;lt;/b&amp;gt; téléchargé&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Connexion au VPN&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Clic droit&amp;lt;/b&amp;gt; sur l&#039;icône OpenVPN dans la barre des tâches&lt;br /&gt;
* Sélectionner &amp;lt;b&amp;gt;Connect&amp;lt;/b&amp;gt;&lt;br /&gt;
* Saisir les identifiants du compte créé :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Username : vpnuser&lt;br /&gt;
Password : (mot de passe défini dans pfSense)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;icône doit passer au vert indiquant une connexion établie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;10 — Tests&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Vérification du bon fonctionnement de la connexion OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Test de connectivité&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Une fois connecté, vérifier l&#039;accès au réseau interne :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Ping vers pfSense&amp;lt;/b&amp;gt; (passerelle LAN) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 192.168.60.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Ping vers la VM cible&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 192.168.60.33&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Vérification de l&#039;adresse IP VPN attribuée&amp;lt;/b&amp;gt; (doit être dans le tunnel 10.8.0.0/24) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Carte Ethernet OpenVPN :&lt;br /&gt;
   Adresse IPv4. . . . . . . : 10.8.0.x&lt;br /&gt;
   Masque de sous-réseau . . : 255.255.255.0&lt;br /&gt;
   Passerelle par défaut . . : 10.8.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Vérification côté pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans l&#039;interface web pfSense, vérifier les connexions actives :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Status → OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌──────────────┬──────────────┬──────────────┬──────────────┐&lt;br /&gt;
│     User     │  Real IP     │  VPN IP      │  Connected   │&lt;br /&gt;
├──────────────┼──────────────┼──────────────┼──────────────┤&lt;br /&gt;
│  vpnuser     │ X.X.X.X      │ 10.8.0.2     │  00:05:32    │&lt;br /&gt;
└──────────────┴──────────────┴──────────────┴──────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Récapitulatif des indicateurs de succès&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;VPN connecté&amp;lt;/b&amp;gt; — icône verte dans le client OpenVPN&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;IP tunnel attribuée&amp;lt;/b&amp;gt; — adresse en 10.8.0.x visible dans ipconfig&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Accès au réseau 192.168.60.0/24&amp;lt;/b&amp;gt; — ping vers pfSense et VMs opérationnel&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Accès aux machines internes&amp;lt;/b&amp;gt; — communication établie avec 192.168.60.33&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Conclusion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#b2dfdb; border:1px solid #4db6ac; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#004d40;&amp;quot;&amp;gt;&lt;br /&gt;
Mise en place d&#039;un &amp;lt;b&amp;gt;VPN Remote Access SSL/TLS&amp;lt;/b&amp;gt; sur pfSense permettant un accès sécurisé au réseau interne via authentification utilisateur et certificat. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Le tunnel chiffré &amp;lt;b&amp;gt;AES-256-GCM&amp;lt;/b&amp;gt; garantit la confidentialité des échanges, tandis que l&#039;authentification par certificat assure l&#039;identité des clients connectés.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Pfsense&amp;diff=164</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Pfsense&amp;diff=164"/>
		<updated>2026-04-20T22:28:42Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : Annulation des modifications 163 de Jung Jean-Marie (discussion)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1565c0;&amp;quot;&amp;gt;Installation et Configuration pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e3f2fd; border:1px solid #90caf9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#1565c0;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète d&#039;un firewall pfSense. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de mettre en place une solution de sécurité réseau professionnelle avec gestion multi-zones (WAN, LAN, DMZ, PRI). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la configuration du DHCP Relay, du NAT et des règles de pare-feu pour sécuriser et gérer le trafic réseau.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;1 — Installation de pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Création de la machine virtuelle et téléchargement de l&#039;ISO&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Téléchargement de l&#039;ISO pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Télécharger l&#039;image ISO de pfSense depuis le dépôt officiel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://repo.ialab.dsu.edu/pfsense/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Création de la VM pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer une nouvelle machine virtuelle avec l&#039;ISO pfSense téléchargé.&lt;br /&gt;
&lt;br /&gt;
Spécifications recommandées :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt; : 2 Go minimum&lt;br /&gt;
* &amp;lt;b&amp;gt;CPU&amp;lt;/b&amp;gt; : 2 cœurs minimum&lt;br /&gt;
* &amp;lt;b&amp;gt;Disque&amp;lt;/b&amp;gt; : 20 Go minimum&lt;br /&gt;
* &amp;lt;b&amp;gt;Interfaces réseau&amp;lt;/b&amp;gt; : 4 Network Devices (configuration détaillée ci-dessous)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Configuration des interfaces réseau (Hardware)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans la section &amp;lt;b&amp;gt;Hardware&amp;lt;/b&amp;gt; de votre hyperviseur, créer 4 Network Devices :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 1 (net0) - WAN :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbr0&lt;br /&gt;
Model : Intel E1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 2 (net1) - LAN :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrlan&lt;br /&gt;
Model : VirtIO (paravirtualized)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 3 (net2) - DMZ :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrdmz&lt;br /&gt;
Model : VirtIO (paravirtualized)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 4 (net3) - PRI :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrpri&lt;br /&gt;
Model : VirtIO (paravirtualized)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la configuration terminée, démarrer la VM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;2 — Configuration des Interfaces pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Attribution et configuration des interfaces réseau dans pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Assignation des interfaces&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Au démarrage de pfSense, vous accédez à la console en ligne de commande.&lt;br /&gt;
&lt;br /&gt;
Appuyer sur &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; pour accéder à &amp;lt;b&amp;gt;&amp;quot;Assign Interfaces&amp;quot;&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Instructions d&#039;assignation :&lt;br /&gt;
&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;première interface&amp;lt;/b&amp;gt; au &amp;lt;b&amp;gt;WAN&amp;lt;/b&amp;gt;&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;seconde interface&amp;lt;/b&amp;gt; au &amp;lt;b&amp;gt;LAN&amp;lt;/b&amp;gt;&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;troisième interface&amp;lt;/b&amp;gt; à &amp;lt;b&amp;gt;OPT1&amp;lt;/b&amp;gt; (qui deviendra DMZ)&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;quatrième interface&amp;lt;/b&amp;gt; à &amp;lt;b&amp;gt;OPT2&amp;lt;/b&amp;gt; (qui deviendra PRI)&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; L&#039;ordre d&#039;assignation doit correspondre exactement à l&#039;ordre de configuration dans la section Hardware.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Configuration des adresses IP&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Appuyer sur &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; pour accéder à &amp;lt;b&amp;gt;&amp;quot;Set Interfaces IP Address&amp;quot;&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sélectionner chaque interface une par une et effectuer les opérations suivantes :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Refuser&amp;lt;/b&amp;gt; l&#039;assignation d&#039;adresse IPv4 par DHCP&lt;br /&gt;
* &amp;lt;b&amp;gt;Entrer&amp;lt;/b&amp;gt; une adresse IPv4 statique&lt;br /&gt;
* &amp;lt;b&amp;gt;Entrer&amp;lt;/b&amp;gt; le masque de sous-réseau&lt;br /&gt;
* &amp;lt;b&amp;gt;Refuser&amp;lt;/b&amp;gt; l&#039;assignation d&#039;adresse IPv6 par DHCP&lt;br /&gt;
* &amp;lt;b&amp;gt;Ne rien entrer&amp;lt;/b&amp;gt; pour l&#039;IPv6&lt;br /&gt;
* &amp;lt;b&amp;gt;Refuser&amp;lt;/b&amp;gt; le retour sur HTTP&lt;br /&gt;
* &amp;lt;b&amp;gt;Appuyer sur Entrée&amp;lt;/b&amp;gt; pour valider&lt;br /&gt;
&lt;br /&gt;
Répéter cette procédure pour chaque interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Résultat attendu de la configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après configuration, la console pfSense doit afficher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────────────────────────────────────────────┐&lt;br /&gt;
│  WAN (wan)  → em0     → v4: 192.168.20.200/24       │&lt;br /&gt;
│  LAN (lan)  → vtnet0  → v4: 192.168.30.254/24       │&lt;br /&gt;
│  DMZ (opt1) → vtnet1  → v4: 192.168.10.254/24       │&lt;br /&gt;
│  PRI (opt2) → vtnet2  → v4: 192.168.40.254/24       │&lt;br /&gt;
└─────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schéma de l&#039;architecture réseau :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                        Internet&lt;br /&gt;
                           │&lt;br /&gt;
                           ▼&lt;br /&gt;
                    ┌──────────────┐&lt;br /&gt;
                    │   pfSense    │&lt;br /&gt;
                    │  Firewall    │&lt;br /&gt;
                    └──────┬───────┘&lt;br /&gt;
                           │&lt;br /&gt;
        ┌──────────────────┼──────────────────┐&lt;br /&gt;
        │                  │                  │&lt;br /&gt;
        ▼                  ▼                  ▼&lt;br /&gt;
    ┌───────┐         ┌────────┐        ┌────────┐&lt;br /&gt;
    │  LAN  │         │  DMZ   │        │  PRI   │&lt;br /&gt;
    │ .30.x │         │ .10.x  │        │ .40.x  │&lt;br /&gt;
    └───────┘         └────────┘        └────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;3 — Configuration du Client Windows&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Mise en place d&#039;une VM client pour accéder à l&#039;interface web de pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Création de la VM Windows&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer une machine virtuelle Windows (ou Linux avec interface graphique) pour accéder à l&#039;interface web de pfSense.&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrlan&lt;br /&gt;
Model : Intel E1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer la VM Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Configuration réseau sous Windows&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir la fenêtre de configuration des cartes réseau :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ncpa.cpl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sélectionner la carte réseau présente et configurer manuellement l&#039;adresse IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Adresse IP            : 192.168.30.100&lt;br /&gt;
Masque de sous-réseau : 255.255.255.0&lt;br /&gt;
Passerelle par défaut : 192.168.30.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Accès à l&#039;interface web pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir un navigateur web et saisir l&#039;adresse suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://192.168.30.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identifiants de connexion par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Nom d&#039;utilisateur : admin&lt;br /&gt;
Mot de passe      : pfsense&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez accéder à l&#039;interface d&#039;administration web de pfSense.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b5e20;&amp;quot;&amp;gt;4 — Configuration Avancée de pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1b5e20;&amp;quot;&amp;gt;Configuration de la passerelle WAN, du DHCP Relay, du NAT et des règles de pare-feu&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration de la passerelle WAN&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans l&#039;interface web de pfSense, configurer la passerelle de l&#039;interface WAN pour permettre la connexion à Internet.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Routing → Gateways&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration de la gateway WAN :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Gateway IP : 192.168.20.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sauvegarder et appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration du DHCP Relay&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le DHCP Relay permet de transférer les requêtes DHCP vers un serveur DHCP central.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Services → DHCP Relay&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Activer&amp;lt;/b&amp;gt; le DHCP Relay&lt;br /&gt;
* &amp;lt;b&amp;gt;Sélectionner&amp;lt;/b&amp;gt; toutes les interfaces où le DHCP Relay sera utilisé&lt;br /&gt;
* Cliquer sur &amp;lt;b&amp;gt;&amp;quot;Add upstream server&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;Entrer l&#039;adresse IP&amp;lt;/b&amp;gt; de votre serveur DHCP&lt;br /&gt;
&lt;br /&gt;
Sauvegarder et appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Schéma du DHCP Relay :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────┐       Requête DHCP         ┌──────────────┐&lt;br /&gt;
│   Client    │ ─────────────────────────→ │   pfSense    │&lt;br /&gt;
│ (LAN/DMZ)   │                            │ DHCP Relay   │&lt;br /&gt;
└─────────────┘                            └──────┬───────┘&lt;br /&gt;
                                                  │&lt;br /&gt;
                                    Transfert     │&lt;br /&gt;
                                                  ▼&lt;br /&gt;
                                           ┌──────────────┐&lt;br /&gt;
                                           │ Serveur DHCP │&lt;br /&gt;
                                           │   Central    │&lt;br /&gt;
                                           └──────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration du NAT (Network Address Translation)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le NAT permet aux machines du réseau interne d&#039;accéder à Internet en masquant leurs adresses IP privées.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → NAT → Outbound&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration :&lt;br /&gt;
&lt;br /&gt;
* Laisser le mode en &amp;lt;b&amp;gt;&amp;quot;Automatic outbound NAT&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
* Sauvegarder et appliquer les changements&lt;br /&gt;
&lt;br /&gt;
Des règles NAT seront automatiquement créées pour chaque interface interne.&lt;br /&gt;
&lt;br /&gt;
Schéma du NAT :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────────┐                   ┌─────────────────┐&lt;br /&gt;
│  Réseau Interne │                   │    Internet     │&lt;br /&gt;
│  192.168.30.x   │  ───────NAT────→  │  IP Publique    │&lt;br /&gt;
│  192.168.10.x   │                   │                 │&lt;br /&gt;
│  192.168.40.x   │                   │                 │&lt;br /&gt;
└─────────────────┘                   └─────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration des règles de pare-feu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Les règles de pare-feu permettent de contrôler le trafic réseau entre les différentes zones.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → Rules&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de règle pour autoriser le ping (ICMP) :&lt;br /&gt;
&lt;br /&gt;
Configuration d&#039;une règle ICMP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Action        : Pass&lt;br /&gt;
Interface     : LAN / DMZ / PRI (selon besoin)&lt;br /&gt;
Protocol      : ICMP&lt;br /&gt;
ICMP Type     : Echo Request&lt;br /&gt;
Source        : LAN net / DMZ net / PRI net&lt;br /&gt;
Destination   : Any&lt;br /&gt;
Description   : Autoriser ping depuis [interface]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Les règles de pare-feu doivent être configurées interface par interface (LAN, DMZ, PRI).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Schéma des règles de pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────────────────────────────────────────────┐&lt;br /&gt;
│                   pfSense Firewall                  │&lt;br /&gt;
├─────────────────────────────────────────────────────┤&lt;br /&gt;
│                                                     │&lt;br /&gt;
│  LAN Rules    : ✓ Ping  ✓ HTTP  ✓ HTTPS            │&lt;br /&gt;
│  DMZ Rules    : ✓ Ping  ✓ HTTP  ✓ HTTPS            │&lt;br /&gt;
│  PRI Rules    : ✓ Ping  ✗ Accès limité             │&lt;br /&gt;
│  WAN Rules    : ✗ Bloqué par défaut                │&lt;br /&gt;
│                                                     │&lt;br /&gt;
└─────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sauvegarder et appliquer les changements après chaque création de règle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Vérification et Tests&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3e5f5; border:1px solid #ce93d8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Vérification du bon fonctionnement de pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#6a1b9a;&amp;quot;&amp;gt;Test de connectivité&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Depuis une machine cliente (LAN, DMZ ou PRI), vérifier :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Connectivité locale&amp;lt;/b&amp;gt; : Ping vers la passerelle pfSense&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 192.168.30.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Connectivité Internet&amp;lt;/b&amp;gt; : Ping vers un serveur externe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 8.8.8.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Résolution DNS&amp;lt;/b&amp;gt; : Ping vers un nom de domaine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping google.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#6a1b9a;&amp;quot;&amp;gt;Vérification des services&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que les services suivants fonctionnent correctement :&lt;br /&gt;
&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Interface web&amp;lt;/b&amp;gt; accessible depuis le réseau LAN&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;DHCP Relay&amp;lt;/b&amp;gt; attribue correctement les adresses IP&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;NAT&amp;lt;/b&amp;gt; permet l&#039;accès à Internet&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Règles de pare-feu&amp;lt;/b&amp;gt; autorisent/bloquent le trafic selon la configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3e5f5; border:1px solid #ce93d8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Cette configuration pfSense remplace efficacement un firewall iptables traditionnel en offrant une interface graphique intuitive et des fonctionnalités avancées de sécurité réseau. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Le système est maintenant opérationnel avec une architecture multi-zones sécurisée (WAN, LAN, DMZ, PRI). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
N&#039;oubliez pas de sauvegarder régulièrement votre configuration pfSense via &amp;lt;b&amp;gt;Diagnostics → Backup &amp;amp; Restore&amp;lt;/b&amp;gt;.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Pfsense&amp;diff=163</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Pfsense&amp;diff=163"/>
		<updated>2026-04-20T22:27:31Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b4f72;&amp;quot;&amp;gt;Installation et Configuration OpenVPN sur pfSense (Remote Access - LAB Proxmox)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#d6eaf8; border:1px solid #85c1e9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#1b4f72;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit la mise en place d’un serveur VPN OpenVPN en mode Remote Access sur pfSense dans un environnement virtualisé Proxmox. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
L’objectif est de permettre à des clients Windows (VM) de se connecter à distance au réseau interne 192.168.60.0/24 de manière sécurisée. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Le tunnel VPN repose sur un chiffrement AES-256-GCM avec authentification par certificats et utilisateurs locaux pfSense.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Prérequis&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Vérification de l&#039;environnement avant configuration&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Environnement nécessaire&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
* pfSense installé et fonctionnel&lt;br /&gt;
* VM client Windows&lt;br /&gt;
* Réseau LAN : 192.168.60.0/24&lt;br /&gt;
* pfSense LAN : 192.168.60.254&lt;br /&gt;
&lt;br /&gt;
Accès interface pfSense :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://192.168.60.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schéma logique :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                VM Client VPN&lt;br /&gt;
                      │&lt;br /&gt;
                      ▼&lt;br /&gt;
              ┌──────────────┐&lt;br /&gt;
              │   pfSense    │&lt;br /&gt;
              │ OpenVPN SRV  │&lt;br /&gt;
              └──────┬───────┘&lt;br /&gt;
                     │&lt;br /&gt;
          ┌──────────┴──────────┐&lt;br /&gt;
          │                     │&lt;br /&gt;
   192.168.60.33        autres VMs LAN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;1 — Création de l’Autorité de Certification (CA)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b&amp;gt;Création de la CA interne pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Accès&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Certificate Manager → Authorities → Add&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Method              : Create an internal Certificate Authority&lt;br /&gt;
Descriptive Name    : VPN-CA&lt;br /&gt;
Key Length          : 2048&lt;br /&gt;
Digest              : SHA256&lt;br /&gt;
Lifetime            : 3650&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Common Name :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VPN-CA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
✔ Save&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;2 — Création du certificat serveur&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Certificate Manager → Certificates → Add / Sign&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Method              : Create internal certificate&lt;br /&gt;
Descriptive Name    : OpenVPN-Server&lt;br /&gt;
Certificate Authority : VPN-CA&lt;br /&gt;
Type                : Server Certificate&lt;br /&gt;
Key Length          : 2048&lt;br /&gt;
Digest              : SHA256&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
✔ Save&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;3 — Configuration OpenVPN (Remote Access)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b&amp;gt;Configuration du serveur OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;VPN → OpenVPN → Wizards&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Authentification ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local User Access&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CA :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VPN-CA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Certificat :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenVPN-Server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Paramètres serveur ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Server Mode   : Remote Access (SSL/TLS)&lt;br /&gt;
Protocol      : UDP&lt;br /&gt;
Interface     : LAN&lt;br /&gt;
Port          : 1194&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Cryptographie ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TLS Authentication   : activé&lt;br /&gt;
Encryption           : AES-256-GCM&lt;br /&gt;
Auth Digest          : SHA256&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Réseau VPN ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tunnel Network : 10.8.0.0/24&lt;br /&gt;
Local Network  : 192.168.60.0/24&lt;br /&gt;
DNS Server     : 192.168.60.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
✔ Finish&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;4 — Création utilisateur VPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → User Manager → Add&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Username : vpnuser&lt;br /&gt;
Password : sécurisé&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
✔ Cocher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Click to create a user certificate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CA :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VPN-CA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
✔ Save&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;5 — Export client OpenVPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Installer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;openvpn-client-export&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;VPN → OpenVPN → Client Export&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Télécharger :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Windows Installer (.exe)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a235a;&amp;quot;&amp;gt;6 — Firewall pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → Rules → OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Action      : Pass&lt;br /&gt;
Source      : OpenVPN net&lt;br /&gt;
Destination : LAN net&lt;br /&gt;
Protocol    : any&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b2631;&amp;quot;&amp;gt;7 — Client VPN (VM Windows)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Installer :&lt;br /&gt;
&lt;br /&gt;
:contentReference[oaicite:0]{index=0}&lt;br /&gt;
&lt;br /&gt;
Importer le fichier .ovpn&lt;br /&gt;
&lt;br /&gt;
Connexion :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
User     : vpnuser&lt;br /&gt;
Password : celui défini dans pfSense&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b2631;&amp;quot;&amp;gt;8 — Tests de fonctionnement&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Depuis la VM client :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 192.168.60.254&lt;br /&gt;
ping 192.168.60.33&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier IP VPN :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10.8.0.x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
✔ Connexion VPN établie  &lt;br /&gt;
✔ IP tunnel 10.8.0.x attribuée  &lt;br /&gt;
✔ Accès réseau 192.168.60.0/24  &lt;br /&gt;
✔ Accès aux VM internes Proxmox  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b4f72;&amp;quot;&amp;gt;Conclusion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
La solution met en place un VPN Remote Access SSL/TLS sur pfSense dans un environnement Proxmox, permettant un accès sécurisé aux machines internes via authentification utilisateur et certificats.&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=OpenVPN&amp;diff=162</id>
		<title>OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=OpenVPN&amp;diff=162"/>
		<updated>2026-04-20T22:26:05Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b4f72;&amp;quot;&amp;gt;Installation et Configuration OpenVPN sur pfSense (Remote Access - LAB Proxmox)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#d6eaf8; border:1px solid #85c1e9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#1b4f72;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit la mise en place d’un serveur VPN OpenVPN en mode Remote Access sur pfSense dans un environnement virtualisé Proxmox. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
L’objectif est de permettre à des clients Windows (VM) de se connecter à distance au réseau interne 192.168.60.0/24 de manière sécurisée. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Le tunnel VPN repose sur un chiffrement AES-256-GCM avec authentification par certificats et utilisateurs locaux pfSense.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Prérequis&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Environnement nécessaire avant configuration&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* pfSense installé et fonctionnel&lt;br /&gt;
* VM client Windows&lt;br /&gt;
* Réseau LAN : 192.168.60.0/24&lt;br /&gt;
* pfSense LAN : 192.168.60.254&lt;br /&gt;
&lt;br /&gt;
Accès interface :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://192.168.60.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;1 — Création de l’Autorité de Certification (CA)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b&amp;gt;Création de la CA interne pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Accès :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Certificate Manager → Authorities → Add&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration :&lt;br /&gt;
&lt;br /&gt;
- Method : Create an internal Certificate Authority  &lt;br /&gt;
- Descriptive Name : VPN-CA  &lt;br /&gt;
- Key Length : 2048  &lt;br /&gt;
- Digest : SHA256  &lt;br /&gt;
- Lifetime : 3650  &lt;br /&gt;
&lt;br /&gt;
Common Name :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VPN-CA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pays : FR&lt;br /&gt;
&lt;br /&gt;
✔ Save&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;2 — Création du certificat serveur&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Certificate Manager → Certificates → Add / Sign&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- Method : Create internal certificate  &lt;br /&gt;
- Descriptive Name : OpenVPN-Server  &lt;br /&gt;
- CA : VPN-CA  &lt;br /&gt;
- Type : Server Certificate  &lt;br /&gt;
&lt;br /&gt;
✔ Save&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;3 — Configuration OpenVPN (Remote Access)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;VPN → OpenVPN → Wizards&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Authentication Backend :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Local User Access&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CA :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VPN-CA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Certificat :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenVPN-Server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Paramètres serveur ==&lt;br /&gt;
&lt;br /&gt;
- Mode : Remote Access (SSL/TLS)  &lt;br /&gt;
- Protocol : UDP  &lt;br /&gt;
- Interface : LAN (IMPORTANT en lab Proxmox)  &lt;br /&gt;
- Port : 1194  &lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Cryptographie ==&lt;br /&gt;
&lt;br /&gt;
- TLS Authentication : activé  &lt;br /&gt;
- Encryption : AES-256-GCM  &lt;br /&gt;
- Auth Digest : SHA256  &lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== Réseau VPN ==&lt;br /&gt;
&lt;br /&gt;
Tunnel Network :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10.8.0.0/24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Local Network :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.60.0/24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DNS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.60.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
✔ Finish&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;4 — Création utilisateur VPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → User Manager → Add&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- Username : vpnuser  &lt;br /&gt;
- Password : sécurisé  &lt;br /&gt;
&lt;br /&gt;
✔ Cocher :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Click to create a user certificate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CA :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VPN-CA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
✔ Save&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;5 — Export client OpenVPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Installer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;openvpn-client-export&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;VPN → OpenVPN → Client Export&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Télécharger :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Windows Installer (.exe)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a235a;&amp;quot;&amp;gt;6 — Firewall pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
== OpenVPN rules ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → Rules → OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Règle :&lt;br /&gt;
&lt;br /&gt;
- Action : Pass  &lt;br /&gt;
- Source : OpenVPN net  &lt;br /&gt;
- Destination : LAN net  &lt;br /&gt;
- Protocol : any  &lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
== WAN (si nécessaire) ==&lt;br /&gt;
&lt;br /&gt;
- UDP 1194 autorisé vers pfSense&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b2631;&amp;quot;&amp;gt;7 — Client VPN (VM Windows)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Installer :contentReference[oaicite:0]{index=0}&lt;br /&gt;
&lt;br /&gt;
Importer le fichier .ovpn&lt;br /&gt;
&lt;br /&gt;
Connexion :&lt;br /&gt;
&lt;br /&gt;
- user : vpnuser  &lt;br /&gt;
- password : celui défini&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b2631;&amp;quot;&amp;gt;8 — Tests de fonctionnement&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Depuis VM client :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 192.168.60.254&lt;br /&gt;
ping 192.168.60.33&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier IP VPN :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10.8.0.x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
✔ Connexion VPN établie  &lt;br /&gt;
✔ IP tunnel 10.8.0.x attribuée  &lt;br /&gt;
✔ Accès réseau 192.168.60.0/24  &lt;br /&gt;
✔ Accès aux VM internes Proxmox  &lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b4f72;&amp;quot;&amp;gt;Conclusion&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
La solution met en place un VPN Remote Access SSL/TLS sur pfSense en environnement virtualisé Proxmox, permettant un accès sécurisé aux ressources internes via authentification utilisateur et certificats.&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Proxmox_Backup_Server&amp;diff=161</id>
		<title>Proxmox Backup Server</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Proxmox_Backup_Server&amp;diff=161"/>
		<updated>2026-04-20T12:12:16Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : Page créée avec « &amp;lt;br&amp;gt; = &amp;lt;span style=&amp;quot;color:#1565c0;&amp;quot;&amp;gt;Installation et Configuration Proxmox Backup Server&amp;lt;/span&amp;gt; =  {| style=&amp;quot;width:100%; background:#e3f2fd; border:1px solid #90caf9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot; | &amp;lt;span style=&amp;quot;font-size:115%; color:#1565c0;&amp;quot;&amp;gt; Cette section décrit l&amp;#039;installation et la configuration complète de Proxmox Backup Server (PBS).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; Elle permet de mettre en place une solution de sauvegarde centralisée pour les machines virtu... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1565c0;&amp;quot;&amp;gt;Installation et Configuration Proxmox Backup Server&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e3f2fd; border:1px solid #90caf9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#1565c0;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète de Proxmox Backup Server (PBS).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de mettre en place une solution de sauvegarde centralisée pour les machines virtuelles et conteneurs Proxmox.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut la création du datastore, la récupération de l’empreinte de sécurité et la configuration des sauvegardes automatiques.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;1 — Installation de Proxmox Backup Server&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Création de la machine virtuelle PBS&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Création de la VM&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer une machine virtuelle avec l’ISO de Proxmox Backup Server.&lt;br /&gt;
&lt;br /&gt;
Configuration recommandée :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Disques&amp;lt;/b&amp;gt; : 2 disques&lt;br /&gt;
  * 1 disque pour le système (ISO)&lt;br /&gt;
  * 1 disque dédié aux sauvegardes&lt;br /&gt;
* &amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt; : 2 Go minimum&lt;br /&gt;
* &amp;lt;b&amp;gt;CPU&amp;lt;/b&amp;gt; : 2 cœurs minimum&lt;br /&gt;
&lt;br /&gt;
Démarrer la VM et procéder à l’installation classique.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;2 — Accès à l’interface web PBS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Connexion à l’interface graphique&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Depuis une machine cliente, accéder à l’interface web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://IP_DU_SERVEUR:8007&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://192.168.20.197:8007&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;3 — Création du Datastore&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Configuration du stockage des sauvegardes&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dans l’interface web PBS :&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Administration → Storage/Disk → Directory&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Étapes :&lt;br /&gt;
&lt;br /&gt;
* Cliquer sur &amp;lt;b&amp;gt;Create Directory&amp;lt;/b&amp;gt;&lt;br /&gt;
* Sélectionner le disque dédié&lt;br /&gt;
* Définir :&lt;br /&gt;
  * Nom du dossier&lt;br /&gt;
  * Chemin&lt;br /&gt;
  * Nom du datastore&lt;br /&gt;
&lt;br /&gt;
Après création, le datastore apparaît dans la section &amp;lt;b&amp;gt;Datastore&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;4 — Récupération du Fingerprint&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ Important :&amp;lt;/b&amp;gt; Le fingerprint est nécessaire pour sécuriser la connexion entre Proxmox VE et PBS.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sur le serveur PBS, exécuter la commande :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
proxmox-backup-manager cert info | grep Fingerprint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de résultat :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
03:a0:8c:a6:45:cb:96:3a:9c:fa:42:53:a6:46:6c:24:72:f7:8a:c9:3d:7f:31:b8:fe:52:12:00:5a:8a:aa:3a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b5e20;&amp;quot;&amp;gt;5 — Ajout du PBS dans Proxmox VE&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1b5e20;&amp;quot;&amp;gt;Connexion du serveur de backup à Proxmox&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dans Proxmox VE :&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Datacenter → Storage → Add → Proxmox Backup Server&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ID          : pbs&lt;br /&gt;
Server      : 192.168.20.197&lt;br /&gt;
Username    : root@pam&lt;br /&gt;
Password    : password&lt;br /&gt;
Datastore   : backup&lt;br /&gt;
Fingerprint : (copié précédemment)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Valider l’ajout.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b5e20;&amp;quot;&amp;gt;6 — Configuration des Sauvegardes&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1b5e20;&amp;quot;&amp;gt;Planification des backups&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Datacenter → Backup → Add&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Node     : bts1&lt;br /&gt;
Storage  : pbs&lt;br /&gt;
Schedule : 01:00&lt;br /&gt;
Mode     : Snapshot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Options :&lt;br /&gt;
&lt;br /&gt;
* Choisir les VM et conteneurs à sauvegarder&lt;br /&gt;
* Définir la fréquence des sauvegardes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Vérification&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3e5f5; border:1px solid #ce93d8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Contrôle du bon fonctionnement&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vérifier :&lt;br /&gt;
&lt;br /&gt;
* ✓ Le datastore est accessible&lt;br /&gt;
* ✓ Les sauvegardes se lancent correctement&lt;br /&gt;
* ✓ Les fichiers sont visibles dans PBS&lt;br /&gt;
* ✓ Aucune erreur dans les logs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3e5f5; border:1px solid #ce93d8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Proxmox Backup Server permet de centraliser et sécuriser les sauvegardes de votre infrastructure.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
L&#039;utilisation du mode &amp;lt;b&amp;gt;Snapshot&amp;lt;/b&amp;gt; garantit des sauvegardes rapides et cohérentes.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Il est recommandé de vérifier régulièrement les sauvegardes et de tester les restaurations.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=160</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=160"/>
		<updated>2026-04-20T12:11:53Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Salle machine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Salle machine =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #d5dbdb; border-radius:10px; background:#f8f9f9; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-left-radius:10px;&amp;quot; | L&#039;architecture&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-right-radius:10px;&amp;quot; | Les services&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-left-radius:10px;&amp;quot; |&lt;br /&gt;
* Les zones :  &lt;br /&gt;
** [[MGMT]]  &lt;br /&gt;
** [[VM]]  &lt;br /&gt;
** [[LAN]]  &lt;br /&gt;
** [[MyDIL]]  &lt;br /&gt;
** [[WAN]]  &lt;br /&gt;
* Les serveurs : [[Serveurs]]  &lt;br /&gt;
* Les switchs : [[Switchs]]&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-right-radius:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Sécurité&#039;&#039;&#039;&lt;br /&gt;
** [[Iptables]]&lt;br /&gt;
** [[Pfsense]]&lt;br /&gt;
** [[Fail2ban]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Infrastructure réseau&#039;&#039;&#039;&lt;br /&gt;
** [[DHCP]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Accès distant&#039;&#039;&#039;&lt;br /&gt;
** [[SSH]]&lt;br /&gt;
** [[Proxy SSH]]&lt;br /&gt;
** [[OpenVPN]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Supervision&#039;&#039;&#039;&lt;br /&gt;
** [[Zabbix]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Sauvegarde&#039;&#039;&#039;&lt;br /&gt;
** [[Proxmox Backup Server]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Web / Applications&#039;&#039;&#039;&lt;br /&gt;
** [[Apache]]&lt;br /&gt;
** [[Reverse proxy HTTP/S|Reverse proxy HTTP/S]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Base de données&#039;&#039;&#039;&lt;br /&gt;
** [[Base de données]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= BTS SIO =&lt;br /&gt;
&lt;br /&gt;
== Épreuves obligatoires ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fdfefe; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Coeff&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E1&lt;br /&gt;
| Culture générale et expression&lt;br /&gt;
| U1&lt;br /&gt;
| 2&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E2&lt;br /&gt;
| Expression et communication en langue anglaise&lt;br /&gt;
| U2&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;2h écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E3&lt;br /&gt;
| Mathématiques pour l’informatique (partie algo)&lt;br /&gt;
| U2&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;30 min. pratique&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E4&lt;br /&gt;
| Culture économique, managériale et juridique pour l’informatique&lt;br /&gt;
| U3&lt;br /&gt;
| 3&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E5&lt;br /&gt;
| Support et mise à disposition des services informatiques&lt;br /&gt;
| U4&lt;br /&gt;
| 4&lt;br /&gt;
| 40 min. orale&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | [[Ep_e6|E6]]&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SISR → Administration des systèmes et réseaux&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;SLAM → Conception et développement d’applications&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
| U5&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. exposé&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;1h réalisation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. questions&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | E7&lt;br /&gt;
| Cybersécurité des services informatiques&lt;br /&gt;
| U6&lt;br /&gt;
| 4&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 4h papier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Épreuves facultatives ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fef9f0; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF1&lt;br /&gt;
| Langue vivante 2&lt;br /&gt;
| UF12&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;20 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF2&lt;br /&gt;
| Mathématiques approfondies&lt;br /&gt;
| UF2&lt;br /&gt;
| 2h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | UF23&lt;br /&gt;
| Parcours de certification complémentaire&lt;br /&gt;
| UF3&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 20 min. orale&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=OpenVPN&amp;diff=159</id>
		<title>OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=OpenVPN&amp;diff=159"/>
		<updated>2026-03-23T23:26:51Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /*OpenVPN*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b4f72;&amp;quot;&amp;gt;Installation et Configuration OpenVPN sur pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#d6eaf8; border:1px solid #85c1e9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#1b4f72;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète d&#039;un serveur VPN avec OpenVPN intégré à pfSense. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de se connecter à distance à son réseau local et d&#039;accéder aux ressources internes (VMs Proxmox, NAS, Active Directory, etc.) de manière sécurisée. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
L&#039;architecture repose sur un tunnel chiffré AES-256-GCM avec authentification par certificats et gestion des utilisateurs intégrée à pfSense.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Prérequis&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Vérification de l&#039;environnement avant de commencer la configuration&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2471a3;&amp;quot;&amp;gt;Environnement nécessaire&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Avant de commencer la configuration d&#039;OpenVPN, s&#039;assurer que les éléments suivants sont en place :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;pfSense installé&amp;lt;/b&amp;gt; et opérationnel&lt;br /&gt;
* &amp;lt;b&amp;gt;Accès à l&#039;interface web&amp;lt;/b&amp;gt; pfSense disponible à l&#039;adresse :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://IP_PFSENSE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Port ouvert sur la box Internet&amp;lt;/b&amp;gt; (redirection de port) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1194 UDP  →  IP_PFSENSE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schéma de l&#039;architecture VPN :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                        Internet&lt;br /&gt;
                           │&lt;br /&gt;
              ┌────────────┴────────────┐&lt;br /&gt;
              │                         │&lt;br /&gt;
    ┌─────────────────┐       ┌─────────────────┐&lt;br /&gt;
    │   Client VPN    │       │    pfSense       │&lt;br /&gt;
    │  (PC distant)   │ ════► │  OpenVPN Server  │&lt;br /&gt;
    │  .ovpn importé  │       │   Port 1194 UDP  │&lt;br /&gt;
    └─────────────────┘       └────────┬─────────┘&lt;br /&gt;
                                       │&lt;br /&gt;
                          ┌────────────┼────────────┐&lt;br /&gt;
                          │            │             │&lt;br /&gt;
                     ┌────────┐  ┌──────────┐  ┌────────┐&lt;br /&gt;
                     │  LAN   │  │ Proxmox  │  │  NAS   │&lt;br /&gt;
                     │ .1.x   │  │   VMs    │  │  AD    │&lt;br /&gt;
                     └────────┘  └──────────┘  └────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;1 — Créer l&#039;Autorité de Certification (CA)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Création d&#039;une CA interne qui signera tous les certificats du VPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2471a3;&amp;quot;&amp;gt;Accès au gestionnaire de certificats&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
L&#039;Autorité de Certification (CA) est la racine de confiance du VPN. Elle signera le certificat serveur et les certificats utilisateurs.&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Cert. Manager → CAs&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2471a3;&amp;quot;&amp;gt;Configuration de la CA&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Remplir les champs de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! Champ !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Method || Create an internal CA&lt;br /&gt;
|-&lt;br /&gt;
| Descriptive Name || VPN-CA&lt;br /&gt;
|-&lt;br /&gt;
| Key length || 2048&lt;br /&gt;
|-&lt;br /&gt;
| Digest Algorithm || sha256&lt;br /&gt;
|-&lt;br /&gt;
| Lifetime || 3650&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Remplir les informations d&#039;identité (valeurs libres) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Country Code  : FR&lt;br /&gt;
State         : (votre région)&lt;br /&gt;
City          : (votre ville)&lt;br /&gt;
Organization  : (votre organisation)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; La durée de vie de 3650 jours correspond à 10 ans. La CA sera valable pendant toute cette période pour signer les certificats du VPN.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; pour enregistrer la CA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;2 — Créer le Certificat Serveur&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Génération du certificat d&#039;identité du serveur OpenVPN, signé par la CA&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2471a3;&amp;quot;&amp;gt;Accès à la section Certificates&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Cert. Manager → Certificates&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add / Sign&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2471a3;&amp;quot;&amp;gt;Configuration du certificat serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Remplir les champs de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! Champ !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Method || Create internal certificate&lt;br /&gt;
|-&lt;br /&gt;
| Descriptive Name || OpenVPN-Server&lt;br /&gt;
|-&lt;br /&gt;
| Certificate Authority || VPN-CA&lt;br /&gt;
|-&lt;br /&gt;
| Type || Server Certificate&lt;br /&gt;
|-&lt;br /&gt;
| Key length || 2048&lt;br /&gt;
|-&lt;br /&gt;
| Digest Algorithm || sha256&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Le type doit impérativement être &amp;lt;b&amp;gt;Server Certificate&amp;lt;/b&amp;gt; et non User Certificate, sinon OpenVPN refusera de démarrer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; pour enregistrer le certificat serveur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;3 — Lancer l&#039;Assistant OpenVPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;Configuration du serveur VPN via l&#039;assistant intégré de pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Accès à l&#039;assistant&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;VPN → OpenVPN → Wizards&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;assistant se déroule en plusieurs étapes successives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Sélection de la CA&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Choisir l&#039;autorité de certification créée précédemment :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VPN-CA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Next&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Sélection du certificat serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Choisir le certificat serveur créé précédemment :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenVPN-Server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Next&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Configuration du serveur VPN&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Configurer les paramètres généraux du serveur :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:65%;&amp;quot;&lt;br /&gt;
! Paramètre !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Server Mode || Remote Access (SSL/TLS)&lt;br /&gt;
|-&lt;br /&gt;
| Protocol || UDP&lt;br /&gt;
|-&lt;br /&gt;
| Interface || WAN&lt;br /&gt;
|-&lt;br /&gt;
| Port || 1194&lt;br /&gt;
|-&lt;br /&gt;
| TLS Authentication || Cocher (activer)&lt;br /&gt;
|-&lt;br /&gt;
| Encryption Algorithm || AES-256-GCM&lt;br /&gt;
|-&lt;br /&gt;
| Auth Digest Algorithm || SHA256&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; AES-256-GCM est le chiffrement recommandé — il combine chiffrement et authentification du message en un seul algorithme performant.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Configuration du réseau VPN&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Configurer le tunnel réseau et le réseau local à exposer :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:65%;&amp;quot;&lt;br /&gt;
! Paramètre !! Exemple&lt;br /&gt;
|-&lt;br /&gt;
| Tunnel Network || 10.8.0.0/24&lt;br /&gt;
|-&lt;br /&gt;
| Local Network || 192.168.1.0/24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Le champ &amp;lt;b&amp;gt;Local Network&amp;lt;/b&amp;gt; doit contenir l&#039;adresse de &amp;lt;b&amp;gt;TON réseau LAN réel&amp;lt;/b&amp;gt; (ex: 192.168.30.0/24 selon ta configuration pfSense).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Explication des paramètres réseau :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Tunnel Network&amp;lt;/b&amp;gt; : plage d&#039;adresses IP dédiée aux clients VPN (doit être un réseau inutilisé)&lt;br /&gt;
* &amp;lt;b&amp;gt;Local Network&amp;lt;/b&amp;gt; : réseau interne que les clients VPN pourront joindre une fois connectés&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Configuration DNS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Renseigner l&#039;adresse DNS que les clients VPN utiliseront :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:65%;&amp;quot;&lt;br /&gt;
! Paramètre !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| DNS Server 1 || IP de pfSense (ex: 192.168.1.1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; Pointer le DNS vers pfSense permet aux clients VPN de résoudre les noms internes (serveurs, AD, NAS) comme s&#039;ils étaient sur le réseau local.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Options avancées&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Option importante à activer selon le besoin :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Redirect Gateway&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Cocher&amp;lt;/b&amp;gt; cette option si l&#039;on souhaite que &amp;lt;b&amp;gt;tout le trafic Internet&amp;lt;/b&amp;gt; du client passe par le VPN (full tunnel)&lt;br /&gt;
* &amp;lt;b&amp;gt;Laisser décoché&amp;lt;/b&amp;gt; si l&#039;on souhaite uniquement accéder au réseau interne sans modifier le trafic Internet du client (split tunnel)&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Finish&amp;lt;/b&amp;gt; pour terminer l&#039;assistant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;4 — Créer un Utilisateur VPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;Création d&#039;un compte utilisateur avec son certificat client pour l&#039;authentification VPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Accès au gestionnaire d&#039;utilisateurs&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → User Manager&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Configuration de l&#039;utilisateur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Remplir les informations du compte :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! Champ !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Username || uservpn&lt;br /&gt;
|-&lt;br /&gt;
| Password || (mot de passe sécurisé)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cocher l&#039;option :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Click to create a user certificate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans le menu déroulant qui apparaît, sélectionner :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VPN-CA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; En cochant cette case, pfSense va automatiquement générer et signer un certificat client pour cet utilisateur. Ce certificat sera embarqué dans le fichier de configuration .ovpn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; pour créer l&#039;utilisateur et son certificat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;5 — Installer le Package d&#039;Export Client&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fef9e7; border:1px solid #f9e79f; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;Installation du package pfSense permettant d&#039;exporter les configurations clients OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#9a7d0a;&amp;quot;&amp;gt;Accès au gestionnaire de paquets&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Package Manager → Available Packages&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#9a7d0a;&amp;quot;&amp;gt;Installation du package&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Rechercher et installer le package suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openvpn-client-export&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Install&amp;lt;/b&amp;gt; puis confirmer.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fef9e7; border:1px solid #f9e79f; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; Ce package ajoute une interface dans pfSense permettant de générer automatiquement les fichiers de configuration pour chaque utilisateur VPN, incluant les certificats et clés embarquées.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;6 — Exporter la Configuration Client&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fef9e7; border:1px solid #f9e79f; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;Génération et téléchargement du fichier de configuration pour le client VPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#9a7d0a;&amp;quot;&amp;gt;Accès à l&#039;export client&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;VPN → OpenVPN → Client Export&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La liste des utilisateurs configurés apparaît.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#9a7d0a;&amp;quot;&amp;gt;Téléchargement de la configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Choisir le format de configuration adapté au système du client :&lt;br /&gt;
&lt;br /&gt;
Pour &amp;lt;b&amp;gt;Windows&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Windows Installer (.exe)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour &amp;lt;b&amp;gt;Linux / macOS / mobile&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.OVPN file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Le fichier .ovpn contient les certificats, clés et paramètres de connexion. Il est confidentiel : ne pas le partager ni le stocker dans un endroit non sécurisé.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Contenu d&#039;un fichier .ovpn type :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client&lt;br /&gt;
dev tun&lt;br /&gt;
proto udp&lt;br /&gt;
remote IP_PUBLIQUE 1194&lt;br /&gt;
resolv-retry infinite&lt;br /&gt;
nobind&lt;br /&gt;
persist-key&lt;br /&gt;
persist-tun&lt;br /&gt;
remote-cert-tls server&lt;br /&gt;
cipher AES-256-GCM&lt;br /&gt;
auth SHA256&lt;br /&gt;
&amp;amp;lt;ca&amp;amp;gt;&lt;br /&gt;
  ... certificat CA ...&lt;br /&gt;
&amp;amp;lt;/ca&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;cert&amp;amp;gt;&lt;br /&gt;
  ... certificat client ...&lt;br /&gt;
&amp;amp;lt;/cert&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;key&amp;amp;gt;&lt;br /&gt;
  ... clé privée client ...&lt;br /&gt;
&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;tls-auth&amp;amp;gt;&lt;br /&gt;
  ... clé TLS ...&lt;br /&gt;
&amp;amp;lt;/tls-auth&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a235a;&amp;quot;&amp;gt;7 — Ouvrir le Pare-feu&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f5eef8; border:1px solid #d7bde2; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#4a235a;&amp;quot;&amp;gt;Création des règles de pare-feu pour autoriser les connexions entrantes sur le port VPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Règle WAN — Autoriser le port 1194&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → Rules → WAN&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier qu&#039;une règle autorisant le trafic UDP sur le port 1194 existe déjà (l&#039;assistant OpenVPN la crée normalement automatiquement).&lt;br /&gt;
&lt;br /&gt;
Si la règle est absente, la créer manuellement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Action      : Pass&lt;br /&gt;
Interface   : WAN&lt;br /&gt;
Protocol    : UDP&lt;br /&gt;
Source      : any&lt;br /&gt;
Destination : WAN address&lt;br /&gt;
Port        : 1194&lt;br /&gt;
Description : Allow OpenVPN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; puis &amp;lt;b&amp;gt;Apply Changes&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Règle OpenVPN — Autoriser l&#039;accès au réseau interne&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Une règle est également nécessaire sur l&#039;interface &amp;lt;b&amp;gt;OpenVPN&amp;lt;/b&amp;gt; pour autoriser les clients VPN à joindre le réseau interne.&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → Rules → OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer une règle permissive :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Action      : Pass&lt;br /&gt;
Interface   : OpenVPN&lt;br /&gt;
Protocol    : any&lt;br /&gt;
Source      : any&lt;br /&gt;
Destination : any&lt;br /&gt;
Description : Allow VPN clients to LAN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ NOTE :&amp;lt;/b&amp;gt; Pour un environnement de production, affiner les règles en limitant la destination au réseau LAN uniquement et en précisant les protocoles et ports autorisés.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Schéma du flux réseau VPN :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌──────────────────────────────────────────────────────────────┐&lt;br /&gt;
│                      pfSense Firewall                        │&lt;br /&gt;
├──────────────────────────────────────────────────────────────┤&lt;br /&gt;
│                                                              │&lt;br /&gt;
│  WAN Rules    : ✓ UDP 1194 → OpenVPN Server                 │&lt;br /&gt;
│  OpenVPN Rules: ✓ Any → LAN (clients VPN → réseau interne)  │&lt;br /&gt;
│  LAN Rules    : ✓ Trafic habituel                           │&lt;br /&gt;
│                                                              │&lt;br /&gt;
└──────────────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sauvegarder et appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b2631;&amp;quot;&amp;gt;8 — Tester la Connexion VPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaecee; border:1px solid #aab7b8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1b2631;&amp;quot;&amp;gt;Vérification du bon fonctionnement de la connexion OpenVPN depuis un client distant&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e4053;&amp;quot;&amp;gt;Installation et import sur le client&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le PC distant, télécharger et installer le client OpenVPN officiel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://openvpn.net/community-downloads/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois installé, importer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Clic droit&amp;lt;/b&amp;gt; sur l&#039;icône OpenVPN dans la barre des tâches&lt;br /&gt;
* Sélectionner &amp;lt;b&amp;gt;Import file&amp;lt;/b&amp;gt;&lt;br /&gt;
* Choisir le fichier &amp;lt;b&amp;gt;.ovpn&amp;lt;/b&amp;gt; téléchargé depuis pfSense&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e4053;&amp;quot;&amp;gt;Connexion au VPN&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Clic droit&amp;lt;/b&amp;gt; sur l&#039;icône OpenVPN dans la barre des tâches&lt;br /&gt;
* Sélectionner &amp;lt;b&amp;gt;Connect&amp;lt;/b&amp;gt;&lt;br /&gt;
* Saisir les identifiants du compte créé :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Username : uservpn&lt;br /&gt;
Password : (mot de passe défini dans pfSense)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;icône doit passer au vert indiquant une connexion établie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e4053;&amp;quot;&amp;gt;Vérification de la connectivité&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Une fois connecté, vérifier l&#039;accès au réseau interne :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Ping vers pfSense&amp;lt;/b&amp;gt; (passerelle LAN) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 192.168.1.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Ping vers une VM ou un serveur interne&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 192.168.1.x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Vérification de l&#039;adresse IP VPN attribuée&amp;lt;/b&amp;gt; (doit être dans le tunnel 10.8.0.0/24) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Carte Ethernet OpenVPN :&lt;br /&gt;
   Adresse IPv4. . . . . . . : 10.8.0.x&lt;br /&gt;
   Masque de sous-réseau . . : 255.255.255.0&lt;br /&gt;
   Passerelle par défaut . . : 10.8.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e4053;&amp;quot;&amp;gt;Vérification côté pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans l&#039;interface web pfSense, vérifier les connexions actives :&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Status → OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La liste des clients connectés s&#039;affiche avec leur adresse IP du tunnel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌──────────────┬──────────────┬──────────────┬──────────────┐&lt;br /&gt;
│     User     │  Real IP     │  VPN IP      │  Connected   │&lt;br /&gt;
├──────────────┼──────────────┼──────────────┼──────────────┤&lt;br /&gt;
│  uservpn     │ X.X.X.X      │ 10.8.0.2     │  00:05:32    │&lt;br /&gt;
└──────────────┴──────────────┴──────────────┴──────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;✓ SUCCÈS :&amp;lt;/b&amp;gt; Si le client apparaît dans cette liste avec une adresse 10.8.0.x, le VPN est pleinement fonctionnel. Vous pouvez maintenant accéder à toutes les ressources internes (Proxmox, NAS, AD) comme si vous étiez sur place.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=OpenVPN&amp;diff=158</id>
		<title>OpenVPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=OpenVPN&amp;diff=158"/>
		<updated>2026-03-23T23:22:06Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : Page créée avec « &amp;lt;br&amp;gt; = &amp;lt;span style=&amp;quot;color:#1b4f72;&amp;quot;&amp;gt;Installation et Configuration OpenVPN sur pfSense&amp;lt;/span&amp;gt; =  {| style=&amp;quot;width:100%; background:#d6eaf8; border:1px solid #85c1e9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot; | &amp;lt;span style=&amp;quot;font-size:115%; color:#1b4f72;&amp;quot;&amp;gt; Cette section décrit l&amp;#039;installation et la configuration complète d&amp;#039;un serveur VPN avec OpenVPN intégré à pfSense. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; Elle permet de se connecter à distance à son réseau local et d&amp;#039;accéder... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b4f72;&amp;quot;&amp;gt;Installation et Configuration OpenVPN sur pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#d6eaf8; border:1px solid #85c1e9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#1b4f72;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète d&#039;un serveur VPN avec OpenVPN intégré à pfSense. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de se connecter à distance à son réseau local et d&#039;accéder aux ressources internes (VMs Proxmox, NAS, Active Directory, etc.) de manière sécurisée. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
L&#039;architecture repose sur un tunnel chiffré AES-256-GCM avec authentification par certificats et gestion des utilisateurs intégrée à pfSense.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Prérequis&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Vérification de l&#039;environnement avant de commencer la configuration&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2471a3;&amp;quot;&amp;gt;Environnement nécessaire&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Avant de commencer la configuration d&#039;OpenVPN, s&#039;assurer que les éléments suivants sont en place :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;pfSense installé&amp;lt;/b&amp;gt; et opérationnel&lt;br /&gt;
* &amp;lt;b&amp;gt;Accès à l&#039;interface web&amp;lt;/b&amp;gt; pfSense disponible à l&#039;adresse :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://IP_PFSENSE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Port ouvert sur la box Internet&amp;lt;/b&amp;gt; (redirection de port) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1194 UDP  →  IP_PFSENSE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schéma de l&#039;architecture VPN :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                        Internet&lt;br /&gt;
                           │&lt;br /&gt;
              ┌────────────┴────────────┐&lt;br /&gt;
              │                         │&lt;br /&gt;
    ┌─────────────────┐       ┌─────────────────┐&lt;br /&gt;
    │   Client VPN    │       │    pfSense       │&lt;br /&gt;
    │  (PC distant)   │ ════► │  OpenVPN Server  │&lt;br /&gt;
    │  .ovpn importé  │       │   Port 1194 UDP  │&lt;br /&gt;
    └─────────────────┘       └────────┬─────────┘&lt;br /&gt;
                                       │&lt;br /&gt;
                          ┌────────────┼────────────┐&lt;br /&gt;
                          │            │             │&lt;br /&gt;
                     ┌────────┐  ┌──────────┐  ┌────────┐&lt;br /&gt;
                     │  LAN   │  │ Proxmox  │  │  NAS   │&lt;br /&gt;
                     │ .1.x   │  │   VMs    │  │  AD    │&lt;br /&gt;
                     └────────┘  └──────────┘  └────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;1 — Créer l&#039;Autorité de Certification (CA)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Création d&#039;une CA interne qui signera tous les certificats du VPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2471a3;&amp;quot;&amp;gt;Accès au gestionnaire de certificats&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
L&#039;Autorité de Certification (CA) est la racine de confiance du VPN. Elle signera le certificat serveur et les certificats utilisateurs.&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Cert. Manager → CAs&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2471a3;&amp;quot;&amp;gt;Configuration de la CA&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Remplir les champs de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! Champ !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Method || Create an internal CA&lt;br /&gt;
|-&lt;br /&gt;
| Descriptive Name || VPN-CA&lt;br /&gt;
|-&lt;br /&gt;
| Key length || 2048&lt;br /&gt;
|-&lt;br /&gt;
| Digest Algorithm || sha256&lt;br /&gt;
|-&lt;br /&gt;
| Lifetime || 3650&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Remplir les informations d&#039;identité (valeurs libres) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Country Code  : FR&lt;br /&gt;
State         : (votre région)&lt;br /&gt;
City          : (votre ville)&lt;br /&gt;
Organization  : (votre organisation)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; La durée de vie de 3650 jours correspond à 10 ans. La CA sera valable pendant toute cette période pour signer les certificats du VPN.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; pour enregistrer la CA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;2 — Créer le Certificat Serveur&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1a5276;&amp;quot;&amp;gt;Génération du certificat d&#039;identité du serveur OpenVPN, signé par la CA&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2471a3;&amp;quot;&amp;gt;Accès à la section Certificates&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Cert. Manager → Certificates&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add / Sign&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2471a3;&amp;quot;&amp;gt;Configuration du certificat serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Remplir les champs de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! Champ !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Method || Create internal certificate&lt;br /&gt;
|-&lt;br /&gt;
| Descriptive Name || OpenVPN-Server&lt;br /&gt;
|-&lt;br /&gt;
| Certificate Authority || VPN-CA&lt;br /&gt;
|-&lt;br /&gt;
| Type || Server Certificate&lt;br /&gt;
|-&lt;br /&gt;
| Key length || 2048&lt;br /&gt;
|-&lt;br /&gt;
| Digest Algorithm || sha256&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Le type doit impérativement être &amp;lt;b&amp;gt;Server Certificate&amp;lt;/b&amp;gt; et non User Certificate, sinon OpenVPN refusera de démarrer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; pour enregistrer le certificat serveur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;3 — Lancer l&#039;Assistant OpenVPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;Configuration du serveur VPN via l&#039;assistant intégré de pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Accès à l&#039;assistant&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;VPN → OpenVPN → Wizards&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;assistant se déroule en plusieurs étapes successives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Étape 1 — Sélection de la CA&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Choisir l&#039;autorité de certification créée précédemment :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VPN-CA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Next&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Étape 2 — Sélection du certificat serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Choisir le certificat serveur créé précédemment :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenVPN-Server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Next&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Étape 3 — Configuration du serveur VPN&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Configurer les paramètres généraux du serveur :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:65%;&amp;quot;&lt;br /&gt;
! Paramètre !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Server Mode || Remote Access (SSL/TLS)&lt;br /&gt;
|-&lt;br /&gt;
| Protocol || UDP&lt;br /&gt;
|-&lt;br /&gt;
| Interface || WAN&lt;br /&gt;
|-&lt;br /&gt;
| Port || 1194&lt;br /&gt;
|-&lt;br /&gt;
| TLS Authentication || Cocher (activer)&lt;br /&gt;
|-&lt;br /&gt;
| Encryption Algorithm || AES-256-GCM&lt;br /&gt;
|-&lt;br /&gt;
| Auth Digest Algorithm || SHA256&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; AES-256-GCM est le chiffrement recommandé — il combine chiffrement et authentification du message en un seul algorithme performant.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Étape 3 (suite) — Configuration du réseau VPN&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Configurer le tunnel réseau et le réseau local à exposer :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:65%;&amp;quot;&lt;br /&gt;
! Paramètre !! Exemple&lt;br /&gt;
|-&lt;br /&gt;
| Tunnel Network || 10.8.0.0/24&lt;br /&gt;
|-&lt;br /&gt;
| Local Network || 192.168.1.0/24&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Le champ &amp;lt;b&amp;gt;Local Network&amp;lt;/b&amp;gt; doit contenir l&#039;adresse de &amp;lt;b&amp;gt;TON réseau LAN réel&amp;lt;/b&amp;gt; (ex: 192.168.30.0/24 selon ta configuration pfSense).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Explication des paramètres réseau :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Tunnel Network&amp;lt;/b&amp;gt; : plage d&#039;adresses IP dédiée aux clients VPN (doit être un réseau inutilisé)&lt;br /&gt;
* &amp;lt;b&amp;gt;Local Network&amp;lt;/b&amp;gt; : réseau interne que les clients VPN pourront joindre une fois connectés&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Étape 3 (suite) — Configuration DNS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Renseigner l&#039;adresse DNS que les clients VPN utiliseront :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:65%;&amp;quot;&lt;br /&gt;
! Paramètre !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| DNS Server 1 || IP de pfSense (ex: 192.168.1.1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; Pointer le DNS vers pfSense permet aux clients VPN de résoudre les noms internes (serveurs, AD, NAS) comme s&#039;ils étaient sur le réseau local.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Étape 3 (suite) — Options avancées&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Option importante à activer selon le besoin :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Redirect Gateway&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Cocher&amp;lt;/b&amp;gt; cette option si l&#039;on souhaite que &amp;lt;b&amp;gt;tout le trafic Internet&amp;lt;/b&amp;gt; du client passe par le VPN (full tunnel)&lt;br /&gt;
* &amp;lt;b&amp;gt;Laisser décoché&amp;lt;/b&amp;gt; si l&#039;on souhaite uniquement accéder au réseau interne sans modifier le trafic Internet du client (split tunnel)&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Finish&amp;lt;/b&amp;gt; pour terminer l&#039;assistant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;4 — Créer un Utilisateur VPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;Création d&#039;un compte utilisateur avec son certificat client pour l&#039;authentification VPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Accès au gestionnaire d&#039;utilisateurs&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → User Manager&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Configuration de l&#039;utilisateur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Remplir les informations du compte :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%;&amp;quot;&lt;br /&gt;
! Champ !! Valeur&lt;br /&gt;
|-&lt;br /&gt;
| Username || uservpn&lt;br /&gt;
|-&lt;br /&gt;
| Password || (mot de passe sécurisé)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cocher l&#039;option :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Click to create a user certificate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans le menu déroulant qui apparaît, sélectionner :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VPN-CA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; En cochant cette case, pfSense va automatiquement générer et signer un certificat client pour cet utilisateur. Ce certificat sera embarqué dans le fichier de configuration .ovpn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; pour créer l&#039;utilisateur et son certificat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;5 — Installer le Package d&#039;Export Client&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fef9e7; border:1px solid #f9e79f; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;Installation du package pfSense permettant d&#039;exporter les configurations clients OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#9a7d0a;&amp;quot;&amp;gt;Accès au gestionnaire de paquets&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Package Manager → Available Packages&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#9a7d0a;&amp;quot;&amp;gt;Installation du package&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Rechercher et installer le package suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openvpn-client-export&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Install&amp;lt;/b&amp;gt; puis confirmer.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fef9e7; border:1px solid #f9e79f; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;ℹ INFO :&amp;lt;/b&amp;gt; Ce package ajoute une interface dans pfSense permettant de générer automatiquement les fichiers de configuration pour chaque utilisateur VPN, incluant les certificats et clés embarquées.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;6 — Exporter la Configuration Client&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fef9e7; border:1px solid #f9e79f; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d6608;&amp;quot;&amp;gt;Génération et téléchargement du fichier de configuration pour le client VPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#9a7d0a;&amp;quot;&amp;gt;Accès à l&#039;export client&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;VPN → OpenVPN → Client Export&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La liste des utilisateurs configurés apparaît.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#9a7d0a;&amp;quot;&amp;gt;Téléchargement de la configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Choisir le format de configuration adapté au système du client :&lt;br /&gt;
&lt;br /&gt;
Pour &amp;lt;b&amp;gt;Windows&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Windows Installer (.exe)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour &amp;lt;b&amp;gt;Linux / macOS / mobile&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.OVPN file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Le fichier .ovpn contient les certificats, clés et paramètres de connexion. Il est confidentiel : ne pas le partager ni le stocker dans un endroit non sécurisé.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Contenu d&#039;un fichier .ovpn type :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client&lt;br /&gt;
dev tun&lt;br /&gt;
proto udp&lt;br /&gt;
remote IP_PUBLIQUE 1194&lt;br /&gt;
resolv-retry infinite&lt;br /&gt;
nobind&lt;br /&gt;
persist-key&lt;br /&gt;
persist-tun&lt;br /&gt;
remote-cert-tls server&lt;br /&gt;
cipher AES-256-GCM&lt;br /&gt;
auth SHA256&lt;br /&gt;
&amp;amp;lt;ca&amp;amp;gt;&lt;br /&gt;
  ... certificat CA ...&lt;br /&gt;
&amp;amp;lt;/ca&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;cert&amp;amp;gt;&lt;br /&gt;
  ... certificat client ...&lt;br /&gt;
&amp;amp;lt;/cert&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;key&amp;amp;gt;&lt;br /&gt;
  ... clé privée client ...&lt;br /&gt;
&amp;amp;lt;/key&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;tls-auth&amp;amp;gt;&lt;br /&gt;
  ... clé TLS ...&lt;br /&gt;
&amp;amp;lt;/tls-auth&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a235a;&amp;quot;&amp;gt;7 — Ouvrir le Pare-feu&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f5eef8; border:1px solid #d7bde2; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#4a235a;&amp;quot;&amp;gt;Création des règles de pare-feu pour autoriser les connexions entrantes sur le port VPN&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Règle WAN — Autoriser le port 1194&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → Rules → WAN&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier qu&#039;une règle autorisant le trafic UDP sur le port 1194 existe déjà (l&#039;assistant OpenVPN la crée normalement automatiquement).&lt;br /&gt;
&lt;br /&gt;
Si la règle est absente, la créer manuellement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Action      : Pass&lt;br /&gt;
Interface   : WAN&lt;br /&gt;
Protocol    : UDP&lt;br /&gt;
Source      : any&lt;br /&gt;
Destination : WAN address&lt;br /&gt;
Port        : 1194&lt;br /&gt;
Description : Allow OpenVPN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cliquer sur &amp;lt;b&amp;gt;Save&amp;lt;/b&amp;gt; puis &amp;lt;b&amp;gt;Apply Changes&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Règle OpenVPN — Autoriser l&#039;accès au réseau interne&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Une règle est également nécessaire sur l&#039;interface &amp;lt;b&amp;gt;OpenVPN&amp;lt;/b&amp;gt; pour autoriser les clients VPN à joindre le réseau interne.&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → Rules → OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer une règle permissive :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Action      : Pass&lt;br /&gt;
Interface   : OpenVPN&lt;br /&gt;
Protocol    : any&lt;br /&gt;
Source      : any&lt;br /&gt;
Destination : any&lt;br /&gt;
Description : Allow VPN clients to LAN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ NOTE :&amp;lt;/b&amp;gt; Pour un environnement de production, affiner les règles en limitant la destination au réseau LAN uniquement et en précisant les protocoles et ports autorisés.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Schéma du flux réseau VPN :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌──────────────────────────────────────────────────────────────┐&lt;br /&gt;
│                      pfSense Firewall                        │&lt;br /&gt;
├──────────────────────────────────────────────────────────────┤&lt;br /&gt;
│                                                              │&lt;br /&gt;
│  WAN Rules    : ✓ UDP 1194 → OpenVPN Server                 │&lt;br /&gt;
│  OpenVPN Rules: ✓ Any → LAN (clients VPN → réseau interne)  │&lt;br /&gt;
│  LAN Rules    : ✓ Trafic habituel                           │&lt;br /&gt;
│                                                              │&lt;br /&gt;
└──────────────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sauvegarder et appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b2631;&amp;quot;&amp;gt;8 — Tester la Connexion VPN&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaecee; border:1px solid #aab7b8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1b2631;&amp;quot;&amp;gt;Vérification du bon fonctionnement de la connexion OpenVPN depuis un client distant&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e4053;&amp;quot;&amp;gt;Installation et import sur le client&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le PC distant, télécharger et installer le client OpenVPN officiel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://openvpn.net/community-downloads/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois installé, importer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Clic droit&amp;lt;/b&amp;gt; sur l&#039;icône OpenVPN dans la barre des tâches&lt;br /&gt;
* Sélectionner &amp;lt;b&amp;gt;Import file&amp;lt;/b&amp;gt;&lt;br /&gt;
* Choisir le fichier &amp;lt;b&amp;gt;.ovpn&amp;lt;/b&amp;gt; téléchargé depuis pfSense&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e4053;&amp;quot;&amp;gt;Connexion au VPN&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Clic droit&amp;lt;/b&amp;gt; sur l&#039;icône OpenVPN dans la barre des tâches&lt;br /&gt;
* Sélectionner &amp;lt;b&amp;gt;Connect&amp;lt;/b&amp;gt;&lt;br /&gt;
* Saisir les identifiants du compte créé :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Username : uservpn&lt;br /&gt;
Password : (mot de passe défini dans pfSense)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;icône doit passer au vert indiquant une connexion établie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e4053;&amp;quot;&amp;gt;Vérification de la connectivité&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Une fois connecté, vérifier l&#039;accès au réseau interne :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Ping vers pfSense&amp;lt;/b&amp;gt; (passerelle LAN) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 192.168.1.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Ping vers une VM ou un serveur interne&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 192.168.1.x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Vérification de l&#039;adresse IP VPN attribuée&amp;lt;/b&amp;gt; (doit être dans le tunnel 10.8.0.0/24) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ipconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Carte Ethernet OpenVPN :&lt;br /&gt;
   Adresse IPv4. . . . . . . : 10.8.0.x&lt;br /&gt;
   Masque de sous-réseau . . : 255.255.255.0&lt;br /&gt;
   Passerelle par défaut . . : 10.8.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e4053;&amp;quot;&amp;gt;Vérification côté pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans l&#039;interface web pfSense, vérifier les connexions actives :&lt;br /&gt;
&lt;br /&gt;
Naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Status → OpenVPN&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La liste des clients connectés s&#039;affiche avec leur adresse IP du tunnel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌──────────────┬──────────────┬──────────────┬──────────────┐&lt;br /&gt;
│     User     │  Real IP     │  VPN IP      │  Connected   │&lt;br /&gt;
├──────────────┼──────────────┼──────────────┼──────────────┤&lt;br /&gt;
│  uservpn     │ X.X.X.X      │ 10.8.0.2     │  00:05:32    │&lt;br /&gt;
└──────────────┴──────────────┴──────────────┴──────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;✓ SUCCÈS :&amp;lt;/b&amp;gt; Si le client apparaît dans cette liste avec une adresse 10.8.0.x, le VPN est pleinement fonctionnel. Vous pouvez maintenant accéder à toutes les ressources internes (Proxmox, NAS, AD) comme si vous étiez sur place.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=157</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=157"/>
		<updated>2026-03-23T23:21:48Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Salle machine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Salle machine =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #d5dbdb; border-radius:10px; background:#f8f9f9; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-left-radius:10px;&amp;quot; | L&#039;architecture&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-right-radius:10px;&amp;quot; | Les services&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-left-radius:10px;&amp;quot; |&lt;br /&gt;
* Les zones :  &lt;br /&gt;
** [[MGMT]]  &lt;br /&gt;
** [[VM]]  &lt;br /&gt;
** [[LAN]]  &lt;br /&gt;
** [[MyDIL]]  &lt;br /&gt;
** [[WAN]]  &lt;br /&gt;
* Les serveurs : [[Serveurs]]  &lt;br /&gt;
* Les switchs : [[Switchs]]&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-right-radius:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Sécurité&#039;&#039;&#039;&lt;br /&gt;
** [[Iptables]]&lt;br /&gt;
** [[Pfsense]]&lt;br /&gt;
** [[Fail2ban]]&lt;br /&gt;
* &#039;&#039;&#039;Infrastructure réseau&#039;&#039;&#039;&lt;br /&gt;
** [[DHCP]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
* &#039;&#039;&#039;Accès distant&#039;&#039;&#039;&lt;br /&gt;
** [[SSH]]&lt;br /&gt;
** [[Proxy SSH]]&lt;br /&gt;
** [[OpenVPN]]&lt;br /&gt;
* &#039;&#039;&#039;Supervision&#039;&#039;&#039;&lt;br /&gt;
** [[Zabbix]]&lt;br /&gt;
* &#039;&#039;&#039;Web / Applications&#039;&#039;&#039;&lt;br /&gt;
** [[Apache]]&lt;br /&gt;
** [[Reverse proxy HTTP/S|Reverse proxy HTTP/S]]&lt;br /&gt;
* &#039;&#039;&#039;Base de données&#039;&#039;&#039;&lt;br /&gt;
** [[Base de données]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= BTS SIO =&lt;br /&gt;
&lt;br /&gt;
== Épreuves obligatoires ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fdfefe; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Coeff&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E1&lt;br /&gt;
| Culture générale et expression&lt;br /&gt;
| U1&lt;br /&gt;
| 2&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E2&lt;br /&gt;
| Expression et communication en langue anglaise&lt;br /&gt;
| U2&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;2h écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E3&lt;br /&gt;
| Mathématiques pour l’informatique (partie algo)&lt;br /&gt;
| U2&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;30 min. pratique&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E4&lt;br /&gt;
| Culture économique, managériale et juridique pour l’informatique&lt;br /&gt;
| U3&lt;br /&gt;
| 3&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E5&lt;br /&gt;
| Support et mise à disposition des services informatiques&lt;br /&gt;
| U4&lt;br /&gt;
| 4&lt;br /&gt;
| 40 min. orale&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | [[Ep_e6|E6]]&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SISR → Administration des systèmes et réseaux&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;SLAM → Conception et développement d’applications&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
| U5&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. exposé&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;1h réalisation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. questions&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | E7&lt;br /&gt;
| Cybersécurité des services informatiques&lt;br /&gt;
| U6&lt;br /&gt;
| 4&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 4h papier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Épreuves facultatives ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fef9f0; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF1&lt;br /&gt;
| Langue vivante 2&lt;br /&gt;
| UF12&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;20 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF2&lt;br /&gt;
| Mathématiques approfondies&lt;br /&gt;
| UF2&lt;br /&gt;
| 2h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | UF23&lt;br /&gt;
| Parcours de certification complémentaire&lt;br /&gt;
| UF3&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 20 min. orale&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=SSH&amp;diff=156</id>
		<title>SSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=SSH&amp;diff=156"/>
		<updated>2026-02-27T21:10:48Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /*SSH*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#37474f;&amp;quot;&amp;gt;Installation et Configuration SSH&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eceff1; border:1px solid #b0bec5; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#37474f;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète du service SSH. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle couvre l&#039;installation du serveur OpenSSH et la configuration des paramètres de connexion.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#455a64;&amp;quot;&amp;gt;1 — Installation de SSH&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eceff1; border:1px solid #b0bec5; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#455a64;&amp;quot;&amp;gt;Installation du serveur OpenSSH&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#546e7a;&amp;quot;&amp;gt;Installation du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer le serveur OpenSSH :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf -y install openssh-server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#455a64;&amp;quot;&amp;gt;2 — Configuration de SSH&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eceff1; border:1px solid #b0bec5; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#455a64;&amp;quot;&amp;gt;Modification du fichier de configuration sshd_config&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#546e7a;&amp;quot;&amp;gt;Modification de la configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier de configuration de SSH :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser la ligne &amp;lt;code&amp;gt;#PermitRootLogin&amp;lt;/code&amp;gt; et la modifier comme suit :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PermitRootLogin yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Autoriser la connexion root en SSH est déconseillé en production. Préférez l&#039;utilisation d&#039;un utilisateur dédié avec élévation de privilèges via &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#546e7a;&amp;quot;&amp;gt;Démarrage du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer SSH :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable sshd&lt;br /&gt;
systemctl start sshd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#37474f;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eceff1; border:1px solid #b0bec5; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Votre service SSH est maintenant fonctionnel. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pensez à ouvrir le port 22 dans iptables si ce n&#039;est pas déjà fait : &amp;lt;b&amp;gt;-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT&amp;lt;/b&amp;gt;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour renforcer la sécurité, envisagez de coupler SSH avec &amp;lt;b&amp;gt;Fail2ban&amp;lt;/b&amp;gt; afin de bloquer les tentatives de connexion par force brute.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Zabbix&amp;diff=155</id>
		<title>Zabbix</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Zabbix&amp;diff=155"/>
		<updated>2026-02-27T21:08:04Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a237e;&amp;quot;&amp;gt;Installation et Configuration Zabbix&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#1a237e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète de la solution de supervision Zabbix. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle couvre l&#039;installation du serveur Zabbix, de MariaDB et d&#039;Apache, ainsi que la configuration de la base de données. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place des agents Zabbix sur les machines à superviser et leur ajout dans l&#039;interface graphique.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#283593;&amp;quot;&amp;gt;1 — Installation de Zabbix&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Installation de Zabbix, MariaDB et Apache&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Installation du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Importer le dépôt officiel de Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installer les services nécessaires :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-agent mariadb-server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#283593;&amp;quot;&amp;gt;2 — Configuration de la base de données&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Création et initialisation de la base de données MariaDB pour Zabbix&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Démarrage de MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et sécuriser MariaDB :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable --now mariadb&lt;br /&gt;
mysql_secure_installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Création de la base de données&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Se connecter à la base de données :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer la base Zabbix et l&#039;utilisateur associé :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;&lt;br /&gt;
CREATE USER &#039;zabbix&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;password&#039;;&lt;br /&gt;
GRANT ALL PRIVILEGES ON zabbix.* TO &#039;zabbix&#039;@&#039;localhost&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
EXIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Importer le schéma de base de données Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Cette commande peut prendre plusieurs minutes. Elle initialise toutes les tables nécessaires au fonctionnement de Zabbix.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#283593;&amp;quot;&amp;gt;3 — Configuration de Zabbix&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Configuration du serveur Zabbix, PHP et ouverture des ports&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Configuration du serveur Zabbix&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier de configuration de Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/zabbix/zabbix_server.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Renseigner le mot de passe de la base de données :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DBPassword=MotDePasseFort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Configuration du fuseau horaire PHP&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier de configuration PHP de Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/php-fpm.d/zabbix.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter ou modifier la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php_value[date.timezone] = Europe/Paris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Démarrage des services&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer tous les services Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable --now zabbix-server zabbix-agent httpd php-fpm&lt;br /&gt;
systemctl start zabbix-server zabbix-agent httpd php-fpm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir les ports Zabbix (10051), HTTP (80) et HTTPS (443) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Accès à l&#039;interface web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Depuis une machine cliente, ouvrir un navigateur et saisir l&#039;adresse IP du serveur Zabbix.&lt;br /&gt;
&lt;br /&gt;
Identifiants de connexion par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Utilisateur : Admin&lt;br /&gt;
Mot de passe : zabbix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Changer le mot de passe par défaut immédiatement après la première connexion.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#283593;&amp;quot;&amp;gt;4 — Configuration d&#039;un agent Zabbix&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Installation et configuration de l&#039;agent Zabbix sur les machines à superviser&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Installation de l&#039;agent&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur chaque machine à superviser, importer le dépôt Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installer l&#039;agent :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install zabbix-agent -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Configuration de l&#039;agent&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier de configuration de l&#039;agent :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/zabbix/zabbix_agentd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les trois lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Server=IP_DU_SERVEUR_ZABBIX&lt;br /&gt;
ServerActive=IP_DU_SERVEUR_ZABBIX&lt;br /&gt;
Hostname=Nom_Exact_DuServeur_A_Superviser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Server&amp;lt;/b&amp;gt; : adresse IP du serveur Zabbix&lt;br /&gt;
* &amp;lt;b&amp;gt;ServerActive&amp;lt;/b&amp;gt; : adresse IP du serveur Zabbix (checks actifs)&lt;br /&gt;
* &amp;lt;b&amp;gt;Hostname&amp;lt;/b&amp;gt; : nom exact de la machine (doit correspondre à celui saisi dans l&#039;interface web)&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer l&#039;agent :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable --now zabbix-agent&lt;br /&gt;
systemctl start zabbix-agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Ouverture du port de l&#039;agent dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le port 10050 uniquement pour le serveur Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-A INPUT -p tcp -s IP_Serveur_Zabbix --dport 10050 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#283593;&amp;quot;&amp;gt;5 — Ajout de l&#039;agent dans l&#039;interface Zabbix&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Déclaration de la machine supervisée dans l&#039;interface graphique Zabbix&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Création d&#039;un hôte&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans l&#039;interface web de Zabbix, naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Data collection → Hosts → Create host&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplir les champs suivants :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Host name&amp;lt;/b&amp;gt; : nom exact renseigné dans la configuration de l&#039;agent&lt;br /&gt;
* &amp;lt;b&amp;gt;Templates&amp;lt;/b&amp;gt; : sélectionner le template adapté (ex : &amp;lt;i&amp;gt;Linux by Zabbix agent&amp;lt;/i&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Host groups&amp;lt;/b&amp;gt; : créer un nouveau groupe ou en sélectionner un existant&lt;br /&gt;
* &amp;lt;b&amp;gt;Interfaces&amp;lt;/b&amp;gt; : sélectionner &amp;lt;b&amp;gt;Agent&amp;lt;/b&amp;gt; et renseigner l&#039;adresse IP de la machine&lt;br /&gt;
* Cliquer sur &amp;lt;b&amp;gt;Add&amp;lt;/b&amp;gt; pour valider&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Le champ &amp;lt;b&amp;gt;Host name&amp;lt;/b&amp;gt; doit correspondre exactement au paramètre &amp;lt;code&amp;gt;Hostname&amp;lt;/code&amp;gt; du fichier &amp;lt;code&amp;gt;zabbix_agentd.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Après quelques instants, la section &amp;lt;b&amp;gt;Availability&amp;lt;/b&amp;gt; de l&#039;hôte doit passer au vert.&lt;br /&gt;
&lt;br /&gt;
Répéter ces étapes pour chaque machine à superviser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a237e;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Votre superviseur Zabbix est désormais fonctionnel. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pensez à configurer des &amp;lt;b&amp;gt;triggers&amp;lt;/b&amp;gt; et des &amp;lt;b&amp;gt;alertes&amp;lt;/b&amp;gt; dans l&#039;interface pour être notifié en cas d&#039;anomalie sur vos machines. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Répéter la &amp;lt;b&amp;gt;4&amp;lt;/b&amp;gt; sur chaque machine que vous souhaitez superviser.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Zabbix&amp;diff=154</id>
		<title>Zabbix</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Zabbix&amp;diff=154"/>
		<updated>2026-02-27T21:07:04Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /*Supervision Zabbix*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a237e;&amp;quot;&amp;gt;Installation et Configuration Zabbix&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#1a237e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète de la solution de supervision Zabbix. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle couvre l&#039;installation du serveur Zabbix, de MariaDB et d&#039;Apache, ainsi que la configuration de la base de données. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place des agents Zabbix sur les machines à superviser et leur ajout dans l&#039;interface graphique.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Partie 1 — Installation de Zabbix&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Installation de Zabbix, MariaDB et Apache&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Installation du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Importer le dépôt officiel de Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installer les services nécessaires :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-agent mariadb-server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Partie 2 — Configuration de la base de données&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Création et initialisation de la base de données MariaDB pour Zabbix&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Démarrage de MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et sécuriser MariaDB :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable --now mariadb&lt;br /&gt;
mysql_secure_installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Création de la base de données&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Se connecter à la base de données :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer la base Zabbix et l&#039;utilisateur associé :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;&lt;br /&gt;
CREATE USER &#039;zabbix&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;password&#039;;&lt;br /&gt;
GRANT ALL PRIVILEGES ON zabbix.* TO &#039;zabbix&#039;@&#039;localhost&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
EXIT;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Importer le schéma de base de données Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Cette commande peut prendre plusieurs minutes. Elle initialise toutes les tables nécessaires au fonctionnement de Zabbix.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Partie 3 — Configuration de Zabbix&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Configuration du serveur Zabbix, PHP et ouverture des ports&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Configuration du serveur Zabbix&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier de configuration de Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/zabbix/zabbix_server.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Renseigner le mot de passe de la base de données :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DBPassword=MotDePasseFort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Configuration du fuseau horaire PHP&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier de configuration PHP de Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/php-fpm.d/zabbix.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter ou modifier la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php_value[date.timezone] = Europe/Paris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Démarrage des services&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer tous les services Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable --now zabbix-server zabbix-agent httpd php-fpm&lt;br /&gt;
systemctl start zabbix-server zabbix-agent httpd php-fpm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir les ports Zabbix (10051), HTTP (80) et HTTPS (443) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT&lt;br /&gt;
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Accès à l&#039;interface web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Depuis une machine cliente, ouvrir un navigateur et saisir l&#039;adresse IP du serveur Zabbix.&lt;br /&gt;
&lt;br /&gt;
Identifiants de connexion par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Utilisateur : Admin&lt;br /&gt;
Mot de passe : zabbix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Changer le mot de passe par défaut immédiatement après la première connexion.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Partie 4 — Configuration d&#039;un agent Zabbix&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Installation et configuration de l&#039;agent Zabbix sur les machines à superviser&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Installation de l&#039;agent&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur chaque machine à superviser, importer le dépôt Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installer l&#039;agent :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install zabbix-agent -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Configuration de l&#039;agent&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier de configuration de l&#039;agent :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/zabbix/zabbix_agentd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les trois lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Server=IP_DU_SERVEUR_ZABBIX&lt;br /&gt;
ServerActive=IP_DU_SERVEUR_ZABBIX&lt;br /&gt;
Hostname=Nom_Exact_DuServeur_A_Superviser&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Server&amp;lt;/b&amp;gt; : adresse IP du serveur Zabbix&lt;br /&gt;
* &amp;lt;b&amp;gt;ServerActive&amp;lt;/b&amp;gt; : adresse IP du serveur Zabbix (checks actifs)&lt;br /&gt;
* &amp;lt;b&amp;gt;Hostname&amp;lt;/b&amp;gt; : nom exact de la machine (doit correspondre à celui saisi dans l&#039;interface web)&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer l&#039;agent :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable --now zabbix-agent&lt;br /&gt;
systemctl start zabbix-agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Ouverture du port de l&#039;agent dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le port 10050 uniquement pour le serveur Zabbix :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-A INPUT -p tcp -s IP_Serveur_Zabbix --dport 10050 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Partie 5 — Ajout de l&#039;agent dans l&#039;interface Zabbix&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#283593;&amp;quot;&amp;gt;Déclaration de la machine supervisée dans l&#039;interface graphique Zabbix&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#3949ab;&amp;quot;&amp;gt;Création d&#039;un hôte&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans l&#039;interface web de Zabbix, naviguer vers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Data collection → Hosts → Create host&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplir les champs suivants :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Host name&amp;lt;/b&amp;gt; : nom exact renseigné dans la configuration de l&#039;agent&lt;br /&gt;
* &amp;lt;b&amp;gt;Templates&amp;lt;/b&amp;gt; : sélectionner le template adapté (ex : &amp;lt;i&amp;gt;Linux by Zabbix agent&amp;lt;/i&amp;gt;)&lt;br /&gt;
* &amp;lt;b&amp;gt;Host groups&amp;lt;/b&amp;gt; : créer un nouveau groupe ou en sélectionner un existant&lt;br /&gt;
* &amp;lt;b&amp;gt;Interfaces&amp;lt;/b&amp;gt; : sélectionner &amp;lt;b&amp;gt;Agent&amp;lt;/b&amp;gt; et renseigner l&#039;adresse IP de la machine&lt;br /&gt;
* Cliquer sur &amp;lt;b&amp;gt;Add&amp;lt;/b&amp;gt; pour valider&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Le champ &amp;lt;b&amp;gt;Host name&amp;lt;/b&amp;gt; doit correspondre exactement au paramètre &amp;lt;code&amp;gt;Hostname&amp;lt;/code&amp;gt; du fichier &amp;lt;code&amp;gt;zabbix_agentd.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Après quelques instants, la section &amp;lt;b&amp;gt;Availability&amp;lt;/b&amp;gt; de l&#039;hôte doit passer au vert.&lt;br /&gt;
&lt;br /&gt;
Répéter ces étapes pour chaque machine à superviser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1a237e;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Votre superviseur Zabbix est désormais fonctionnel. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pensez à configurer des &amp;lt;b&amp;gt;triggers&amp;lt;/b&amp;gt; et des &amp;lt;b&amp;gt;alertes&amp;lt;/b&amp;gt; dans l&#039;interface pour être notifié en cas d&#039;anomalie sur vos machines. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Répéter la &amp;lt;b&amp;gt;Partie 4&amp;lt;/b&amp;gt; sur chaque machine que vous souhaitez superviser.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Fail2ban&amp;diff=153</id>
		<title>Fail2ban</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Fail2ban&amp;diff=153"/>
		<updated>2026-02-27T21:04:38Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6a1039;&amp;quot;&amp;gt;Installation et Configuration Fail2ban&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#6a1039;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète de Fail2ban. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle couvre l&#039;installation des dépendances, la configuration du fichier jail.local et la protection du service SSH. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la désactivation de firewalld pour éviter les conflits avec Fail2ban.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;1 — Installation de Fail2ban&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Installation des dépendances et du service Fail2ban&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Installation du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer d&#039;abord le dépôt EPEL (requis pour Fail2ban) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf -y install epel-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installer Fail2ban :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf -y install fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;2 — Configuration de Fail2ban&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Configuration du fichier jail.local pour la protection SSH&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Création du fichier jail.local&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Copier le fichier de configuration par défaut en &amp;lt;code&amp;gt;jail.local&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Ne jamais modifier &amp;lt;code&amp;gt;jail.conf&amp;lt;/code&amp;gt; directement. Toujours travailler dans &amp;lt;code&amp;gt;jail.local&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Activation de la protection SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier &amp;lt;code&amp;gt;jail.local&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/fail2ban/jail.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser la section &amp;lt;code&amp;gt;[sshd]&amp;lt;/code&amp;gt; et ajouter la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
enabled = true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Paramètres de bannissement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants selon vos besoins :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bantime  = 10m&lt;br /&gt;
findtime = 10m&lt;br /&gt;
maxretry = 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;bantime&amp;lt;/b&amp;gt; : durée du bannissement de l&#039;IP&lt;br /&gt;
* &amp;lt;b&amp;gt;findtime&amp;lt;/b&amp;gt; : fenêtre de temps dans laquelle les tentatives sont comptabilisées&lt;br /&gt;
* &amp;lt;b&amp;gt;maxretry&amp;lt;/b&amp;gt; : nombre de tentatives échouées avant bannissement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;3 — Démarrage et finalisation&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Activation de Fail2ban et désactivation de firewalld&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Lancement du service Fail2ban&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer Fail2ban :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable fail2ban&lt;br /&gt;
systemctl start fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Désactivation de firewalld&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Désactiver firewalld pour éviter les conflits avec Fail2ban :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable firewalld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Fail2ban et firewalld peuvent entrer en conflit. Il est recommandé de n&#039;utiliser qu&#039;un seul gestionnaire de pare-feu à la fois.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Vérification et Tests&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Vérification du bon fonctionnement de Fail2ban&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Vérification du statut&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que Fail2ban est actif et protège SSH :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Statut général du service&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Statut de la jail SSH&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fail2ban-client status sshd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Liste des IP bannies&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fail2ban-client banned&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Vérification des services&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que les éléments suivants fonctionnent correctement :&lt;br /&gt;
&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Service Fail2ban&amp;lt;/b&amp;gt; actif et en cours d&#039;exécution&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Jail sshd&amp;lt;/b&amp;gt; activée et surveillée&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;firewalld&amp;lt;/b&amp;gt; désactivé&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Bannissement automatique&amp;lt;/b&amp;gt; des IP après dépassement du maxretry&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a0020;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Votre service Fail2ban est maintenant fonctionnel et protège l&#039;accès SSH. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pensez à consulter les logs de Fail2ban pour surveiller les tentatives d&#039;intrusion via &amp;lt;b&amp;gt;/var/log/fail2ban.log&amp;lt;/b&amp;gt;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour débannir manuellement une IP, utilisez : &amp;lt;b&amp;gt;fail2ban-client set sshd unbanip &amp;amp;lt;IP&amp;amp;gt;&amp;lt;/b&amp;gt;.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Fail2ban&amp;diff=152</id>
		<title>Fail2ban</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Fail2ban&amp;diff=152"/>
		<updated>2026-02-27T21:03:54Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /*Fail2Ban*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6a1039;&amp;quot;&amp;gt;Installation et Configuration Fail2ban&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#6a1039;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète de Fail2ban. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle couvre l&#039;installation des dépendances, la configuration du fichier jail.local et la protection du service SSH. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la désactivation de firewalld pour éviter les conflits avec Fail2ban.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Partie 1 — Installation de Fail2ban&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Installation des dépendances et du service Fail2ban&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Installation du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer d&#039;abord le dépôt EPEL (requis pour Fail2ban) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf -y install epel-release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installer Fail2ban :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf -y install fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Partie 2 — Configuration de Fail2ban&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Configuration du fichier jail.local pour la protection SSH&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Création du fichier jail.local&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Copier le fichier de configuration par défaut en &amp;lt;code&amp;gt;jail.local&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Ne jamais modifier &amp;lt;code&amp;gt;jail.conf&amp;lt;/code&amp;gt; directement. Toujours travailler dans &amp;lt;code&amp;gt;jail.local&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Activation de la protection SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier &amp;lt;code&amp;gt;jail.local&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/fail2ban/jail.local&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser la section &amp;lt;code&amp;gt;[sshd]&amp;lt;/code&amp;gt; et ajouter la ligne suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
enabled = true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Paramètres de bannissement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants selon vos besoins :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bantime  = 10m&lt;br /&gt;
findtime = 10m&lt;br /&gt;
maxretry = 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;bantime&amp;lt;/b&amp;gt; : durée du bannissement de l&#039;IP&lt;br /&gt;
* &amp;lt;b&amp;gt;findtime&amp;lt;/b&amp;gt; : fenêtre de temps dans laquelle les tentatives sont comptabilisées&lt;br /&gt;
* &amp;lt;b&amp;gt;maxretry&amp;lt;/b&amp;gt; : nombre de tentatives échouées avant bannissement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Partie 3 — Démarrage et finalisation&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Activation de Fail2ban et désactivation de firewalld&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Lancement du service Fail2ban&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer Fail2ban :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable fail2ban&lt;br /&gt;
systemctl start fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Désactivation de firewalld&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Désactiver firewalld pour éviter les conflits avec Fail2ban :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable firewalld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Fail2ban et firewalld peuvent entrer en conflit. Il est recommandé de n&#039;utiliser qu&#039;un seul gestionnaire de pare-feu à la fois.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Vérification et Tests&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#880e4f;&amp;quot;&amp;gt;Vérification du bon fonctionnement de Fail2ban&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Vérification du statut&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que Fail2ban est actif et protège SSH :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Statut général du service&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status fail2ban&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Statut de la jail SSH&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fail2ban-client status sshd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Liste des IP bannies&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fail2ban-client banned&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ad1457;&amp;quot;&amp;gt;Vérification des services&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que les éléments suivants fonctionnent correctement :&lt;br /&gt;
&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Service Fail2ban&amp;lt;/b&amp;gt; actif et en cours d&#039;exécution&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Jail sshd&amp;lt;/b&amp;gt; activée et surveillée&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;firewalld&amp;lt;/b&amp;gt; désactivé&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Bannissement automatique&amp;lt;/b&amp;gt; des IP après dépassement du maxretry&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a0020;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fce4ec; border:1px solid #f48fb1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Votre service Fail2ban est maintenant fonctionnel et protège l&#039;accès SSH. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pensez à consulter les logs de Fail2ban pour surveiller les tentatives d&#039;intrusion via &amp;lt;b&amp;gt;/var/log/fail2ban.log&amp;lt;/b&amp;gt;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pour débannir manuellement une IP, utilisez : &amp;lt;b&amp;gt;fail2ban-client set sshd unbanip &amp;amp;lt;IP&amp;amp;gt;&amp;lt;/b&amp;gt;.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=151</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=151"/>
		<updated>2026-02-27T20:59:54Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Salle machine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Salle machine =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #d5dbdb; border-radius:10px; background:#f8f9f9; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-left-radius:10px;&amp;quot; | L&#039;architecture&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-right-radius:10px;&amp;quot; | Les services&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-left-radius:10px;&amp;quot; |&lt;br /&gt;
* Les zones :  &lt;br /&gt;
** [[MGMT]]  &lt;br /&gt;
** [[VM]]  &lt;br /&gt;
** [[LAN]]  &lt;br /&gt;
** [[MyDIL]]  &lt;br /&gt;
** [[WAN]]  &lt;br /&gt;
* Les serveurs : [[Serveurs]]  &lt;br /&gt;
* Les switchs : [[Switchs]]&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-right-radius:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Sécurité&#039;&#039;&#039;&lt;br /&gt;
** [[Iptables]]&lt;br /&gt;
** [[Pfsense]]&lt;br /&gt;
** [[Fail2ban]]&lt;br /&gt;
* &#039;&#039;&#039;Infrastructure réseau&#039;&#039;&#039;&lt;br /&gt;
** [[DHCP]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
* &#039;&#039;&#039;Accès distant&#039;&#039;&#039;&lt;br /&gt;
** [[SSH]]&lt;br /&gt;
** [[Proxy SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Supervision&#039;&#039;&#039;&lt;br /&gt;
** [[Zabbix]]&lt;br /&gt;
* &#039;&#039;&#039;Web / Applications&#039;&#039;&#039;&lt;br /&gt;
** [[Apache]]&lt;br /&gt;
** [[Reverse proxy HTTP/S|Reverse proxy HTTP/S]]&lt;br /&gt;
* &#039;&#039;&#039;Base de données&#039;&#039;&#039;&lt;br /&gt;
** [[Base de données]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= BTS SIO =&lt;br /&gt;
&lt;br /&gt;
== Épreuves obligatoires ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fdfefe; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Coeff&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E1&lt;br /&gt;
| Culture générale et expression&lt;br /&gt;
| U1&lt;br /&gt;
| 2&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E2&lt;br /&gt;
| Expression et communication en langue anglaise&lt;br /&gt;
| U2&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;2h écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E3&lt;br /&gt;
| Mathématiques pour l’informatique (partie algo)&lt;br /&gt;
| U2&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;30 min. pratique&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E4&lt;br /&gt;
| Culture économique, managériale et juridique pour l’informatique&lt;br /&gt;
| U3&lt;br /&gt;
| 3&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E5&lt;br /&gt;
| Support et mise à disposition des services informatiques&lt;br /&gt;
| U4&lt;br /&gt;
| 4&lt;br /&gt;
| 40 min. orale&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | [[Ep_e6|E6]]&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SISR → Administration des systèmes et réseaux&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;SLAM → Conception et développement d’applications&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
| U5&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. exposé&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;1h réalisation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. questions&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | E7&lt;br /&gt;
| Cybersécurité des services informatiques&lt;br /&gt;
| U6&lt;br /&gt;
| 4&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 4h papier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Épreuves facultatives ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fef9f0; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF1&lt;br /&gt;
| Langue vivante 2&lt;br /&gt;
| UF12&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;20 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF2&lt;br /&gt;
| Mathématiques approfondies&lt;br /&gt;
| UF2&lt;br /&gt;
| 2h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | UF23&lt;br /&gt;
| Parcours de certification complémentaire&lt;br /&gt;
| UF3&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 20 min. orale&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=150</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=150"/>
		<updated>2026-02-27T20:58:57Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Salle machine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Salle machine =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #d5dbdb; border-radius:10px; background:#f8f9f9; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-left-radius:10px;&amp;quot; | L&#039;architecture&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-right-radius:10px;&amp;quot; | Les services&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-left-radius:10px;&amp;quot; |&lt;br /&gt;
* Les zones :  &lt;br /&gt;
** [[MGMT]]  &lt;br /&gt;
** [[VM]]  &lt;br /&gt;
** [[LAN]]  &lt;br /&gt;
** [[MyDIL]]  &lt;br /&gt;
** [[WAN]]  &lt;br /&gt;
* Les serveurs : [[Serveurs]]  &lt;br /&gt;
* Les switchs : [[Switchs]]&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-right-radius:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Sécurité&#039;&#039;&#039;&lt;br /&gt;
** [[Iptables]]&lt;br /&gt;
** [[pfSense]]&lt;br /&gt;
** [[Fail2ban]]&lt;br /&gt;
* &#039;&#039;&#039;Infrastructure réseau&#039;&#039;&#039;&lt;br /&gt;
** [[DHCP]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
* &#039;&#039;&#039;Accès distant&#039;&#039;&#039;&lt;br /&gt;
** [[SSH]]&lt;br /&gt;
** [[Proxy SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Supervision&#039;&#039;&#039;&lt;br /&gt;
** [[Zabbix]]&lt;br /&gt;
* &#039;&#039;&#039;Web / Applications&#039;&#039;&#039;&lt;br /&gt;
** [[Apache]]&lt;br /&gt;
** [[Reverse proxy HTTP/S|Reverse proxy HTTP/S]]&lt;br /&gt;
* &#039;&#039;&#039;Base de données&#039;&#039;&#039;&lt;br /&gt;
** [[Base de données]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= BTS SIO =&lt;br /&gt;
&lt;br /&gt;
== Épreuves obligatoires ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fdfefe; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Coeff&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E1&lt;br /&gt;
| Culture générale et expression&lt;br /&gt;
| U1&lt;br /&gt;
| 2&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E2&lt;br /&gt;
| Expression et communication en langue anglaise&lt;br /&gt;
| U2&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;2h écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E3&lt;br /&gt;
| Mathématiques pour l’informatique (partie algo)&lt;br /&gt;
| U2&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;30 min. pratique&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E4&lt;br /&gt;
| Culture économique, managériale et juridique pour l’informatique&lt;br /&gt;
| U3&lt;br /&gt;
| 3&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E5&lt;br /&gt;
| Support et mise à disposition des services informatiques&lt;br /&gt;
| U4&lt;br /&gt;
| 4&lt;br /&gt;
| 40 min. orale&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | [[Ep_e6|E6]]&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SISR → Administration des systèmes et réseaux&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;SLAM → Conception et développement d’applications&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
| U5&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. exposé&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;1h réalisation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. questions&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | E7&lt;br /&gt;
| Cybersécurité des services informatiques&lt;br /&gt;
| U6&lt;br /&gt;
| 4&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 4h papier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Épreuves facultatives ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fef9f0; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF1&lt;br /&gt;
| Langue vivante 2&lt;br /&gt;
| UF12&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;20 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF2&lt;br /&gt;
| Mathématiques approfondies&lt;br /&gt;
| UF2&lt;br /&gt;
| 2h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | UF23&lt;br /&gt;
| Parcours de certification complémentaire&lt;br /&gt;
| UF3&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 20 min. orale&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=149</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=149"/>
		<updated>2026-02-27T20:56:27Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Salle machine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Salle machine =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #d5dbdb; border-radius:10px; background:#f8f9f9; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-left-radius:10px;&amp;quot; | L&#039;architecture&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-right-radius:10px;&amp;quot; | Les services&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-left-radius:10px;&amp;quot; |&lt;br /&gt;
* Les zones :  &lt;br /&gt;
** [[MGMT]]  &lt;br /&gt;
** [[VM]]  &lt;br /&gt;
** [[LAN]]  &lt;br /&gt;
** [[MyDIL]]  &lt;br /&gt;
** [[WAN]]  &lt;br /&gt;
* Les serveurs : [[Serveurs]]  &lt;br /&gt;
* Les switchs : [[Switchs]]&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-right-radius:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Sécurité&#039;&#039;&#039;&lt;br /&gt;
** Firewalling&lt;br /&gt;
*** [[Iptables]]&lt;br /&gt;
*** [[pfSense]]&lt;br /&gt;
** [[Fail2ban]]&lt;br /&gt;
** [[Proxy SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Infrastructure réseau&#039;&#039;&#039;&lt;br /&gt;
** [[DHCP]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
* &#039;&#039;&#039;Accès distant&#039;&#039;&#039;&lt;br /&gt;
** [[SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Supervision&#039;&#039;&#039;&lt;br /&gt;
** [[Zabbix]]&lt;br /&gt;
* &#039;&#039;&#039;Web / Applications&#039;&#039;&#039;&lt;br /&gt;
** [[Apache]]&lt;br /&gt;
** [[Reverse proxy HTTP/S|Reverse proxy HTTP/S]]&lt;br /&gt;
* &#039;&#039;&#039;Base de données&#039;&#039;&#039;&lt;br /&gt;
** [[Base de données]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= BTS SIO =&lt;br /&gt;
&lt;br /&gt;
== Épreuves obligatoires ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fdfefe; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Coeff&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E1&lt;br /&gt;
| Culture générale et expression&lt;br /&gt;
| U1&lt;br /&gt;
| 2&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E2&lt;br /&gt;
| Expression et communication en langue anglaise&lt;br /&gt;
| U2&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;2h écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E3&lt;br /&gt;
| Mathématiques pour l’informatique (partie algo)&lt;br /&gt;
| U2&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;30 min. pratique&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E4&lt;br /&gt;
| Culture économique, managériale et juridique pour l’informatique&lt;br /&gt;
| U3&lt;br /&gt;
| 3&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E5&lt;br /&gt;
| Support et mise à disposition des services informatiques&lt;br /&gt;
| U4&lt;br /&gt;
| 4&lt;br /&gt;
| 40 min. orale&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | [[Ep_e6|E6]]&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SISR → Administration des systèmes et réseaux&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;SLAM → Conception et développement d’applications&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
| U5&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. exposé&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;1h réalisation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. questions&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | E7&lt;br /&gt;
| Cybersécurité des services informatiques&lt;br /&gt;
| U6&lt;br /&gt;
| 4&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 4h papier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Épreuves facultatives ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fef9f0; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF1&lt;br /&gt;
| Langue vivante 2&lt;br /&gt;
| UF12&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;20 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF2&lt;br /&gt;
| Mathématiques approfondies&lt;br /&gt;
| UF2&lt;br /&gt;
| 2h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | UF23&lt;br /&gt;
| Parcours de certification complémentaire&lt;br /&gt;
| UF3&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 20 min. orale&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=148</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=148"/>
		<updated>2026-02-27T20:54:07Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* BTS SIO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Salle machine =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #d5dbdb; border-radius:10px; background:#f8f9f9; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-left-radius:10px;&amp;quot; | L&#039;architecture&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-right-radius:10px;&amp;quot; | Les services&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-left-radius:10px;&amp;quot; |&lt;br /&gt;
* Les zones :  &lt;br /&gt;
** [[MGMT]]  &lt;br /&gt;
** [[VM]]  &lt;br /&gt;
** [[LAN]]  &lt;br /&gt;
** [[MyDIL]]  &lt;br /&gt;
** [[WAN]]  &lt;br /&gt;
* Les serveurs : [[Serveurs]]  &lt;br /&gt;
* Les switchs : [[Switchs]]&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-right-radius:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Sécurité&#039;&#039;&#039;&lt;br /&gt;
** [[Firewalling|Firewalling (iptables, pfSense)]]&lt;br /&gt;
** [[Fail2ban]]&lt;br /&gt;
** [[Proxy SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Infrastructure réseau&#039;&#039;&#039;&lt;br /&gt;
** [[DHCP]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
* &#039;&#039;&#039;Accès distant&#039;&#039;&#039;&lt;br /&gt;
** [[SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Supervision&#039;&#039;&#039;&lt;br /&gt;
** [[Zabbix]]&lt;br /&gt;
* &#039;&#039;&#039;Web / Applications&#039;&#039;&#039;&lt;br /&gt;
** [[Apache]]&lt;br /&gt;
** [[Reverse proxy HTTP/S|Reverse proxy HTTP/S]]&lt;br /&gt;
* &#039;&#039;&#039;Base de données&#039;&#039;&#039;&lt;br /&gt;
** [[Base de données]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= BTS SIO =&lt;br /&gt;
&lt;br /&gt;
== Épreuves obligatoires ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fdfefe; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Coeff&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E1&lt;br /&gt;
| Culture générale et expression&lt;br /&gt;
| U1&lt;br /&gt;
| 2&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E2&lt;br /&gt;
| Expression et communication en langue anglaise&lt;br /&gt;
| U2&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;2h écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E3&lt;br /&gt;
| Mathématiques pour l’informatique (partie algo)&lt;br /&gt;
| U2&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;30 min. pratique&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E4&lt;br /&gt;
| Culture économique, managériale et juridique pour l’informatique&lt;br /&gt;
| U3&lt;br /&gt;
| 3&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E5&lt;br /&gt;
| Support et mise à disposition des services informatiques&lt;br /&gt;
| U4&lt;br /&gt;
| 4&lt;br /&gt;
| 40 min. orale&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | [[Ep_e6|E6]]&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SISR → Administration des systèmes et réseaux&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;SLAM → Conception et développement d’applications&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
| U5&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. exposé&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;1h réalisation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. questions&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | E7&lt;br /&gt;
| Cybersécurité des services informatiques&lt;br /&gt;
| U6&lt;br /&gt;
| 4&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 4h papier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Épreuves facultatives ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fef9f0; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF1&lt;br /&gt;
| Langue vivante 2&lt;br /&gt;
| UF12&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;20 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF2&lt;br /&gt;
| Mathématiques approfondies&lt;br /&gt;
| UF2&lt;br /&gt;
| 2h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | UF23&lt;br /&gt;
| Parcours de certification complémentaire&lt;br /&gt;
| UF3&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 20 min. orale&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=147</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=147"/>
		<updated>2026-02-27T20:53:40Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Salle machine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Salle machine =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #d5dbdb; border-radius:10px; background:#f8f9f9; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-left-radius:10px;&amp;quot; | L&#039;architecture&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1; border-top-right-radius:10px;&amp;quot; | Les services&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-left-radius:10px;&amp;quot; |&lt;br /&gt;
* Les zones :  &lt;br /&gt;
** [[MGMT]]  &lt;br /&gt;
** [[VM]]  &lt;br /&gt;
** [[LAN]]  &lt;br /&gt;
** [[MyDIL]]  &lt;br /&gt;
** [[WAN]]  &lt;br /&gt;
* Les serveurs : [[Serveurs]]  &lt;br /&gt;
* Les switchs : [[Switchs]]&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-right-radius:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Sécurité&#039;&#039;&#039;&lt;br /&gt;
** [[Firewalling|Firewalling (iptables, pfSense)]]&lt;br /&gt;
** [[Fail2ban]]&lt;br /&gt;
** [[Proxy SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Infrastructure réseau&#039;&#039;&#039;&lt;br /&gt;
** [[DHCP]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
* &#039;&#039;&#039;Accès distant&#039;&#039;&#039;&lt;br /&gt;
** [[SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Supervision&#039;&#039;&#039;&lt;br /&gt;
** [[Zabbix]]&lt;br /&gt;
* &#039;&#039;&#039;Web / Applications&#039;&#039;&#039;&lt;br /&gt;
** [[Apache]]&lt;br /&gt;
** [[Reverse proxy HTTP/S|Reverse proxy HTTP/S]]&lt;br /&gt;
* &#039;&#039;&#039;Base de données&#039;&#039;&#039;&lt;br /&gt;
** [[Base de données]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= BTS SIO =&lt;br /&gt;
&lt;br /&gt;
== Épreuves obligatoires ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fdfefe; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Coeff&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E1&lt;br /&gt;
| Culture générale et expression&lt;br /&gt;
| U1&lt;br /&gt;
| 2&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E2&lt;br /&gt;
| Expression et communication en langue anglaise&lt;br /&gt;
| U2&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;2h écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E3&lt;br /&gt;
| Mathématiques pour l’informatique (partie algo)&lt;br /&gt;
| U2&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;30 min. pratique&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E4&lt;br /&gt;
| Culture économique, managériale et juridique pour l’informatique&lt;br /&gt;
| U3&lt;br /&gt;
| 3&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E5&lt;br /&gt;
| Support et mise à disposition des services informatiques&lt;br /&gt;
| U4&lt;br /&gt;
| 4&lt;br /&gt;
| 40 min. orale&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | [[E6]]&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SISR → Administration des systèmes et réseaux&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;SLAM → Conception et développement d’applications&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
| U5&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. exposé&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;1h réalisation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. questions&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | E7&lt;br /&gt;
| Cybersécurité des services informatiques&lt;br /&gt;
| U6&lt;br /&gt;
| 4&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 4h papier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Épreuves facultatives ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fef9f0; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF1&lt;br /&gt;
| Langue vivante 2&lt;br /&gt;
| UF12&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;20 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF2&lt;br /&gt;
| Mathématiques approfondies&lt;br /&gt;
| UF2&lt;br /&gt;
| 2h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | UF23&lt;br /&gt;
| Parcours de certification complémentaire&lt;br /&gt;
| UF3&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 20 min. orale&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=146</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=146"/>
		<updated>2026-02-27T20:51:50Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* BTS SIO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Salle machine =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #d5dbdb; border-radius:10px; background:#f8f9f9; padding:8px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1;&amp;quot; | L&#039;architecture&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1;&amp;quot; | Les services&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-left-radius:10px;&amp;quot; |&lt;br /&gt;
* Les zones :  &lt;br /&gt;
** [[MGMT]]  &lt;br /&gt;
** [[VM]]  &lt;br /&gt;
** [[LAN]]  &lt;br /&gt;
** [[MyDIL]]  &lt;br /&gt;
** [[WAN]]  &lt;br /&gt;
* Les serveurs : [[Serveurs]]  &lt;br /&gt;
* Les switchs : [[Switchs]]&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-right-radius:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Sécurité&#039;&#039;&#039;&lt;br /&gt;
** [[Firewalling|Firewalling (iptables, pfSense)]]&lt;br /&gt;
** [[Fail2ban]]&lt;br /&gt;
** [[Proxy SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Infrastructure réseau&#039;&#039;&#039;&lt;br /&gt;
** [[DHCP]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
* &#039;&#039;&#039;Accès distant&#039;&#039;&#039;&lt;br /&gt;
** [[SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Supervision&#039;&#039;&#039;&lt;br /&gt;
** [[Zabbix]]&lt;br /&gt;
* &#039;&#039;&#039;Web / Applications&#039;&#039;&#039;&lt;br /&gt;
** [[Apache]]&lt;br /&gt;
** [[Reverse proxy HTTP/S|Reverse proxy HTTP/S]]&lt;br /&gt;
* &#039;&#039;&#039;Base de données&#039;&#039;&#039;&lt;br /&gt;
** [[Base de données]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= BTS SIO =&lt;br /&gt;
&lt;br /&gt;
== Épreuves obligatoires ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fdfefe; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Coeff&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E1&lt;br /&gt;
| Culture générale et expression&lt;br /&gt;
| U1&lt;br /&gt;
| 2&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E2&lt;br /&gt;
| Expression et communication en langue anglaise&lt;br /&gt;
| U2&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;2h écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E3&lt;br /&gt;
| Mathématiques pour l’informatique (partie algo)&lt;br /&gt;
| U2&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;30 min. pratique&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E4&lt;br /&gt;
| Culture économique, managériale et juridique pour l’informatique&lt;br /&gt;
| U3&lt;br /&gt;
| 3&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E5&lt;br /&gt;
| Support et mise à disposition des services informatiques&lt;br /&gt;
| U4&lt;br /&gt;
| 4&lt;br /&gt;
| 40 min. orale&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | [[E6]]&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SISR → Administration des systèmes et réseaux&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;SLAM → Conception et développement d’applications&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
| U5&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. exposé&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;1h réalisation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. questions&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | E7&lt;br /&gt;
| Cybersécurité des services informatiques&lt;br /&gt;
| U6&lt;br /&gt;
| 4&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 4h papier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Épreuves facultatives ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fef9f0; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF1&lt;br /&gt;
| Langue vivante 2&lt;br /&gt;
| UF12&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;20 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF2&lt;br /&gt;
| Mathématiques approfondies&lt;br /&gt;
| UF2&lt;br /&gt;
| 2h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | UF23&lt;br /&gt;
| Parcours de certification complémentaire&lt;br /&gt;
| UF3&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 20 min. orale&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=145</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=145"/>
		<updated>2026-02-27T20:49:32Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* BTS SIO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Salle machine =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #d5dbdb; border-radius:10px; background:#f8f9f9; padding:8px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1;&amp;quot; | L&#039;architecture&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1;&amp;quot; | Les services&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-left-radius:10px;&amp;quot; |&lt;br /&gt;
* Les zones :  &lt;br /&gt;
** [[MGMT]]  &lt;br /&gt;
** [[VM]]  &lt;br /&gt;
** [[LAN]]  &lt;br /&gt;
** [[MyDIL]]  &lt;br /&gt;
** [[WAN]]  &lt;br /&gt;
* Les serveurs : [[Serveurs]]  &lt;br /&gt;
* Les switchs : [[Switchs]]&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-right-radius:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Sécurité&#039;&#039;&#039;&lt;br /&gt;
** [[Firewalling|Firewalling (iptables, pfSense)]]&lt;br /&gt;
** [[Fail2ban]]&lt;br /&gt;
** [[Proxy SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Infrastructure réseau&#039;&#039;&#039;&lt;br /&gt;
** [[DHCP]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
* &#039;&#039;&#039;Accès distant&#039;&#039;&#039;&lt;br /&gt;
** [[SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Supervision&#039;&#039;&#039;&lt;br /&gt;
** [[Zabbix]]&lt;br /&gt;
* &#039;&#039;&#039;Web / Applications&#039;&#039;&#039;&lt;br /&gt;
** [[Apache]]&lt;br /&gt;
** [[Reverse proxy HTTP/S|Reverse proxy HTTP/S]]&lt;br /&gt;
* &#039;&#039;&#039;Base de données&#039;&#039;&#039;&lt;br /&gt;
** [[Base de données]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= BTS SIO =&lt;br /&gt;
&lt;br /&gt;
== Épreuves obligatoires ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fdfefe; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8;&amp;quot; | Coeff&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#d6eaf8; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E1&lt;br /&gt;
| Culture générale et expression&lt;br /&gt;
| U1&lt;br /&gt;
| 2&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E2&lt;br /&gt;
| Expression et communication en langue anglaise&lt;br /&gt;
| U2&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;2h écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E3&lt;br /&gt;
| Mathématiques pour l’informatique (partie algo)&lt;br /&gt;
| U2&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. écrite&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;30 min. pratique&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E4&lt;br /&gt;
| Culture économique, managériale et juridique pour l’informatique&lt;br /&gt;
| U3&lt;br /&gt;
| 3&lt;br /&gt;
| 4h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E5&lt;br /&gt;
| Support et mise à disposition des services informatiques&lt;br /&gt;
| U4&lt;br /&gt;
| 4&lt;br /&gt;
| 40 min. orale&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | E6&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SISR → Administration des systèmes et réseaux&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;SLAM → Conception et développement d’applications&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
| U5&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;30 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. exposé&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;1h réalisation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. questions&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | E7&lt;br /&gt;
| Cybersécurité des services informatiques&lt;br /&gt;
| U6&lt;br /&gt;
| 4&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 4h papier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Épreuves facultatives ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border-radius:10px; background:#fef9f0; padding:8px; border-collapse: separate; border-spacing:0; overflow:hidden;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-left-radius:10px;&amp;quot; | Épreuves&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Intitulé&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f;&amp;quot; | Unités&lt;br /&gt;
! style=&amp;quot;padding:12px; background:#f9e79f; border-top-right-radius:10px;&amp;quot; | Forme&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF1&lt;br /&gt;
| Langue vivante 2&lt;br /&gt;
| UF12&lt;br /&gt;
| &amp;lt;ul style=&amp;quot;margin:0; padding-left:18px;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;20 min. préparation&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;20 min. orale&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center | UF2&lt;br /&gt;
| Mathématiques approfondies&lt;br /&gt;
| UF2&lt;br /&gt;
| 2h écrite&lt;br /&gt;
|- valign=top&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=center style=&amp;quot;border-bottom-left-radius:10px;&amp;quot; | UF23&lt;br /&gt;
| Parcours de certification complémentaire&lt;br /&gt;
| UF3&lt;br /&gt;
| style=&amp;quot;border-bottom-right-radius:10px;&amp;quot; | 20 min. orale&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=144</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=144"/>
		<updated>2026-02-27T20:48:18Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Salle machine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Salle machine =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #d5dbdb; border-radius:10px; background:#f8f9f9; padding:8px;&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1;&amp;quot; | L&#039;architecture&lt;br /&gt;
! style=&amp;quot;padding:10px; background:#d6eaf8; border-bottom:1px solid #aed6f1;&amp;quot; | Les services&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-left-radius:10px;&amp;quot; |&lt;br /&gt;
* Les zones :  &lt;br /&gt;
** [[MGMT]]  &lt;br /&gt;
** [[VM]]  &lt;br /&gt;
** [[LAN]]  &lt;br /&gt;
** [[MyDIL]]  &lt;br /&gt;
** [[WAN]]  &lt;br /&gt;
* Les serveurs : [[Serveurs]]  &lt;br /&gt;
* Les switchs : [[Switchs]]&lt;br /&gt;
| align=left style=&amp;quot;padding:10px; border-bottom-right-radius:10px;&amp;quot; |&lt;br /&gt;
* &#039;&#039;&#039;Sécurité&#039;&#039;&#039;&lt;br /&gt;
** [[Firewalling|Firewalling (iptables, pfSense)]]&lt;br /&gt;
** [[Fail2ban]]&lt;br /&gt;
** [[Proxy SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Infrastructure réseau&#039;&#039;&#039;&lt;br /&gt;
** [[DHCP]]&lt;br /&gt;
** [[DNS]]&lt;br /&gt;
* &#039;&#039;&#039;Accès distant&#039;&#039;&#039;&lt;br /&gt;
** [[SSH]]&lt;br /&gt;
* &#039;&#039;&#039;Supervision&#039;&#039;&#039;&lt;br /&gt;
** [[Zabbix]]&lt;br /&gt;
* &#039;&#039;&#039;Web / Applications&#039;&#039;&#039;&lt;br /&gt;
** [[Apache]]&lt;br /&gt;
** [[Reverse proxy HTTP/S|Reverse proxy HTTP/S]]&lt;br /&gt;
* &#039;&#039;&#039;Base de données&#039;&#039;&#039;&lt;br /&gt;
** [[Base de données]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= BTS SIO =&lt;br /&gt;
== Épreuves obligatoires ==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! épreuves !! Intitulé !! unités !! coeff !! forme&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E1 &lt;br /&gt;
|align=left| Culture générale et expression&lt;br /&gt;
|align=center| U1 &lt;br /&gt;
|align=center| 2&lt;br /&gt;
|align=center| 4h écrite&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E2&lt;br /&gt;
|align=left| Expression et communication en langue anglaise&lt;br /&gt;
|align=center| U2 &lt;br /&gt;
|align=center| 2&lt;br /&gt;
|align=left| &lt;br /&gt;
*2h écrite &lt;br /&gt;
*20 min. orale&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E3&lt;br /&gt;
|align=left| Mathématiques pour l’informatique (partie algo)&lt;br /&gt;
|align=center| U2 &lt;br /&gt;
|align=center| 3&lt;br /&gt;
|align=left| &lt;br /&gt;
*30min. écrite&lt;br /&gt;
*30min. pratique&lt;br /&gt;
*20min. orale&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E4&lt;br /&gt;
|align=left| Culture économique, managériale et juridique pour l’informatique&lt;br /&gt;
|align=center| U3 &lt;br /&gt;
|align=center| 3&lt;br /&gt;
|align=middle| &lt;br /&gt;
4h écrite&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E5&lt;br /&gt;
|align=left| Support et mise à disposition des services informatiques&lt;br /&gt;
|align=center| U4 &lt;br /&gt;
|align=center| 4&lt;br /&gt;
|align=middle| &lt;br /&gt;
40min. orale&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| [[ep_e6 | E6]]&lt;br /&gt;
|align=left| &lt;br /&gt;
SISR &amp;amp;rarr; Administration des systèmes et réseaux&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
SLAM &amp;amp;rarr; Conception et développement d’applications&lt;br /&gt;
|align=center| U5 &lt;br /&gt;
|align=center| 4&lt;br /&gt;
|align=left| &lt;br /&gt;
*30min. préparation&lt;br /&gt;
*20min. exposé&lt;br /&gt;
*1h réalisation&lt;br /&gt;
*20min. questions&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E7&lt;br /&gt;
|align=left| Cybersécurité des services informatiques&lt;br /&gt;
|align=center| U6 &lt;br /&gt;
|align=center| 4&lt;br /&gt;
|align=middle| 4h papier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Épreuves facultatives ==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! épreuves !! Intitulé !! unités !! forme&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| UF1&lt;br /&gt;
|align=left| Langue vivante 2&lt;br /&gt;
|align=center| UF12 &lt;br /&gt;
|align=left| &lt;br /&gt;
*20min. préparation&lt;br /&gt;
*20min. orale&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| UF2&lt;br /&gt;
|align=left| Mathématiques approfondies&lt;br /&gt;
|align=center| UF2 &lt;br /&gt;
|align=middle| 2h écrite&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| UF23&lt;br /&gt;
|align=left| Parcours de certification complémentaire&lt;br /&gt;
|align=center| UF3 &lt;br /&gt;
|align=middle| 20min. orale&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Base_de_donn%C3%A9es&amp;diff=143</id>
		<title>Base de données</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Base_de_donn%C3%A9es&amp;diff=143"/>
		<updated>2026-02-27T20:36:07Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#003545;&amp;quot;&amp;gt;Installation et Configuration MariaDB avec Galera Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f4f8; border:1px solid #a8d5e2; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#003545;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète d&#039;un cluster de bases de données MariaDB avec Galera. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de mettre en place une infrastructure de haute disponibilité avec réplication multi-maître et synchronisation bidirectionnelle automatique. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
L&#039;architecture inclut deux serveurs de bases de données ainsi qu&#039;un arbitre Galera pour garantir la cohérence du cluster et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Architecture du Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Configuration de l&#039;architecture haute disponibilité avec réplication multi-maître&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Schéma de l&#039;infrastructure&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Voici le schéma de notre structure qui permettra de faire de la &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt; et de la &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;synchronisation bidirectionnelle&amp;lt;/span&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB1 → MariaDB + Galera&lt;br /&gt;
DB2 → MariaDB + Galera&lt;br /&gt;
ARB → Galera Arbitrator&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette architecture garantit la continuité de service même en cas de défaillance d&#039;un serveur de base de données.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;1 — Installation MariaDB et Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Installation des composants MariaDB et Galera sur les serveurs de bases de données&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Installation du dépôt officiel MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur les &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, il faut impérativement installer le &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;dépôt officiel MariaDB&amp;lt;/span&amp;gt; afin d&#039;obtenir les versions les plus récentes et compatibles avec Galera.&lt;br /&gt;
&lt;br /&gt;
Exécuter la commande suivante sur db1 et db2 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande télécharge et configure automatiquement le dépôt MariaDB officiel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Installation des packages MariaDB et Galera&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Une fois le dépôt configuré, vous pouvez installer &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;MariaDB&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Galera&amp;lt;/span&amp;gt; sans problème.&lt;br /&gt;
&lt;br /&gt;
Installation des composants nécessaires sur les deux serveurs :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install -y MariaDB-server MariaDB-client MariaDB-backup galera-4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande installe le serveur MariaDB, le client, l&#039;outil de sauvegarde et le module Galera 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;2 — Configuration du Cluster Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Configuration de la réplication multi-maître avec Galera Cluster&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Arrêt du service MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt; (la première machine), arrêter le service MariaDB avant la configuration du cluster :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette étape est nécessaire pour configurer Galera sans conflit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Configuration Galera sur db1&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Nous allons configurer &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Galera&amp;lt;/span&amp;gt; qui se trouve dans le fichier &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;/etc/my.cnf.d/galera.cnf&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/my.cnf.d/galera.cnf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, insérer la configuration suivante : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[galera]&lt;br /&gt;
wsrep_on=ON&lt;br /&gt;
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so&lt;br /&gt;
&lt;br /&gt;
wsrep_cluster_name=&amp;quot;galera_cluster&amp;quot;&lt;br /&gt;
wsrep_cluster_address=&amp;quot;gcomm://IP_DB1,IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_node_name=&amp;quot;db1&amp;quot;&lt;br /&gt;
wsrep_node_address=&amp;quot;IP_DB1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_sst_method=rsync&lt;br /&gt;
&lt;br /&gt;
binlog_format=ROW&lt;br /&gt;
default_storage_engine=InnoDB&lt;br /&gt;
innodb_autoinc_lock_mode=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette configuration active &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep&amp;lt;/span&amp;gt; (Write Set Replication), définit l&#039;adresse du cluster et configure le nœud db1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Configuration Galera sur db2&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le second serveur &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, éditer le même fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/my.cnf.d/galera.cnf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, insérer la configuration suivante : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[galera]&lt;br /&gt;
wsrep_on=ON&lt;br /&gt;
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so&lt;br /&gt;
&lt;br /&gt;
wsrep_cluster_name=&amp;quot;galera_cluster&amp;quot;&lt;br /&gt;
wsrep_cluster_address=&amp;quot;gcomm://IP_DB1,IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_node_name=&amp;quot;db2&amp;quot;&lt;br /&gt;
wsrep_node_address=&amp;quot;IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_sst_method=rsync&lt;br /&gt;
&lt;br /&gt;
binlog_format=ROW&lt;br /&gt;
default_storage_engine=InnoDB&lt;br /&gt;
innodb_autoinc_lock_mode=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuration est identique à db1, seuls les paramètres &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep_node_name&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep_node_address&amp;lt;/span&amp;gt; changent pour identifier le second nœud.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;3 — Configuration du Pare-feu&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Ouverture des ports nécessaires à la communication du cluster Galera&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Ouverture des ports Galera&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il ne faut pas oublier d&#039;ouvrir tous les &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;ports suivants&amp;lt;/span&amp;gt; pour que les services puissent communiquer entre eux correctement.&lt;br /&gt;
&lt;br /&gt;
Pour les &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, éditer le fichier iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis insérer les règles suivantes au milieu du fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 -A INPUT -p tcp --dport 3306 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4567 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp --dport 4567 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4568 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4444 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explication des ports :&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;3306&amp;lt;/span&amp;gt; : Port MySQL/MariaDB standard pour les connexions clients&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4567&amp;lt;/span&amp;gt; : Port de réplication Galera (TCP et UDP)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4568&amp;lt;/span&amp;gt; : Port IST (Incremental State Transfer)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4444&amp;lt;/span&amp;gt; : Port SST (State Snapshot Transfer)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Application des règles&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier de recharger et démarrer iptables pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
systemctl start iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que les règles ont bien été ajoutées :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep -E &amp;quot;3306|4567|4568|4444&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0e6655;&amp;quot;&amp;gt;4 — Initialisation du Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#d5f4e6; border:1px solid #7dcea0; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0e6655;&amp;quot;&amp;gt;Démarrage et initialisation du cluster Galera multi-maître&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Activation du service MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur les &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, activer le service MariaDB au démarrage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande créé un lien symbolique pour le démarrage automatique du service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Création du cluster sur db1&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt; (le nœud principal), initialiser le nouveau cluster Galera :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
galera_new_cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande crée le cluster pour la &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;synchronisation&amp;lt;/span&amp;gt; et la &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt;. Le premier nœud devient le point de référence initial du cluster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Démarrage de db2&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Uniquement sur &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt; (le second nœud), démarrer le service MariaDB :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le serveur db2 va automatiquement rejoindre le cluster existant et se synchroniser avec db1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Vérification du cluster&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que la création du cluster a bien fonctionné en affichant la taille du cluster :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;SHOW STATUS LIKE &#039;wsrep_cluster_size&#039;;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| Variable_name      | Value |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| wsrep_cluster_size | 2     |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; en résultat, confirmant que les deux nœuds sont bien connectés au cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;5 — Installation de l&#039;Arbitre Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Configuration d&#039;un arbitre pour maintenir le quorum du cluster&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Principe de l&#039;arbitre&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
L&#039;&amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;arbitre Galera&amp;lt;/span&amp;gt; (garbd) est un composant léger qui participe au vote du cluster sans stocker de données. Il permet de maintenir le &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;quorum&amp;lt;/span&amp;gt; en cas de panne d&#039;un nœud et d&#039;éviter les situations de &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;split-brain&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Installation du dépôt MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur une &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;nouvelle machine dédiée&amp;lt;/span&amp;gt; à l&#039;arbitre, installer le dépôt MariaDB :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Installation de Galera Arbitrator&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer le package &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;galera-4&amp;lt;/span&amp;gt; qui contient tout le nécessaire pour l&#039;arbitre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install galera-4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Vérification de l&#039;installation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;installation s&#039;est bien déroulée en affichant la version :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
garbd --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Galera Arbitrator (garbd) 26.x.x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir quelque chose comme &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Galera Arbitrator (garbd) 26.x.x&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Démarrage de l&#039;arbitre&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Exécuter ce bloc de commande directement dans le terminal pour démarrer l&#039;arbitre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
garbd \&lt;br /&gt;
--group=galera_cluster \&lt;br /&gt;
--address=&amp;quot;gcomm://192.168.40.250,192.168.40.252&amp;quot; \&lt;br /&gt;
--option=&amp;quot;gmcast.listen_addr=tcp://0.0.0.0:4567&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explication des paramètres :&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--group&amp;lt;/span&amp;gt; : Nom du cluster Galera (doit correspondre à wsrep_cluster_name)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--address&amp;lt;/span&amp;gt; : Adresses IP des nœuds du cluster&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--option&amp;lt;/span&amp;gt; : Port d&#039;écoute de l&#039;arbitre&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Votre arbitre restera allumé en permanence. Ne l&#039;éteignez jamais : il ne consomme presque rien en ressources et garantit le bon fonctionnement du cluster.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;6 — Tests et Vérification&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#154360;&amp;quot;&amp;gt;Vérification du bon fonctionnement du cluster et de la réplication&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Vérification de l&#039;état du cluster&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;arbitre a bien rejoint le cluster en affichant la taille totale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;SHOW STATUS LIKE &#039;wsrep_cluster_size&#039;;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| Variable_name      | Value |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| wsrep_cluster_size | 3     |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez maintenant voir &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; (db1 + db2 + arbitre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Test de la réplication multi-maître&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, créer une base de données de test :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;CREATE DATABASE test_replication;&amp;quot;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));&amp;quot;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; INSERT INTO users VALUES (1, &#039;JanMerie&#039;), (2, &#039;Leanan&#039;);&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, vérifier que les données ont été répliquées automatiquement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; SELECT * FROM users;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+----+---------+&lt;br /&gt;
| id |   name  |&lt;br /&gt;
+----+---------+&lt;br /&gt;
|  1 | JanMerie|&lt;br /&gt;
|  2 | Leanan  |&lt;br /&gt;
+----+---------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Test de la réplication bidirectionnelle&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, insérer de nouvelles données :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; INSERT INTO users VALUES (3, &#039;Gorfon&#039;);&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, vérifier que les données ajoutées sur db2 sont bien présentes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; SELECT * FROM users;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+----+-----------+&lt;br /&gt;
| id | name      |&lt;br /&gt;
+----+-----------+&lt;br /&gt;
|  1 | JanMerie  |&lt;br /&gt;
|  2 | Leanan    |&lt;br /&gt;
|  3 | Gorfon    |&lt;br /&gt;
+----+-----------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#154360;&amp;quot;&amp;gt;Votre cluster MariaDB avec Galera est maintenant opérationnel : &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;réplication multi-maître&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;synchronisation bidirectionnelle&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;arbitrage&amp;lt;/span&amp;gt; fonctionnent correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=142</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=142"/>
		<updated>2026-02-27T20:35:41Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-tools-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-filesystem-2.4.57-5.el9.noarch&lt;br /&gt;
mod_ssl-2.4.57-5.el9.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l&#039;écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=4))&lt;br /&gt;
LISTEN 0      511          0.0.0.0:443        0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=6))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports 80 (HTTP) et 443 (HTTPS) doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de chiffrer les échanges entre client et serveur, de garantir l&#039;intégrité des données et d&#039;authentifier le serveur.&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d&#039;un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour activer HTTPS, il est nécessaire de générer un certificat SSL/TLS.  &lt;br /&gt;
Dans un environnement de test, un certificat auto-signé suffit.&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL valide pour 365 jours :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant indiquer à Apache l&#039;emplacement du certificat et de la clé privée.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Apache pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification du fonctionnement HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès sécurisé au serveur web via HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre -k permet d&#039;ignorer l&#039;avertissement lié au certificat auto-signé.&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si la configuration est correcte, vous devez voir le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Load Balancing&amp;lt;/span&amp;gt; permet de répartir les requêtes clients sur plusieurs serveurs web, d&#039;améliorer les performances globales, de réduire la charge sur chaque serveur et d&#039;augmenter la disponibilité du service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; agit comme point d&#039;entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                ┌─────────────────────────────────────────────────────────────┐&lt;br /&gt;
                │                     ARCHITECTURE HAPROXY                    │&lt;br /&gt;
                └─────────────────────────────────────────────────────────────┘&lt;br /&gt;
                &lt;br /&gt;
                                         ┌──────────┐&lt;br /&gt;
                                         │  Client  │&lt;br /&gt;
                                         └─────┬────┘&lt;br /&gt;
                                               │&lt;br /&gt;
                                               │ Requêtes HTTP/HTTPS&lt;br /&gt;
                                               │&lt;br /&gt;
                                               ▼&lt;br /&gt;
                                        ┌──────────────┐&lt;br /&gt;
                                        │   HAProxy    │&lt;br /&gt;
                                        │ Load Balancer│&lt;br /&gt;
                                        │  (Port 80)   │&lt;br /&gt;
                                        └──────┬───────┘&lt;br /&gt;
                                               │&lt;br /&gt;
                                ┌──────────────┴──────────────┐&lt;br /&gt;
                                │                             │&lt;br /&gt;
                                │ Round Robin                 │&lt;br /&gt;
                                │                             │&lt;br /&gt;
                                ▼                             ▼&lt;br /&gt;
                        ┌───────────────┐             ┌───────────────┐&lt;br /&gt;
                        │ Serveur Web 1 │             │ Serveur Web 2 │&lt;br /&gt;
                        │    Apache     │             │    Apache     │&lt;br /&gt;
                        │  (Port 8080)  │             │  (Port 8080)  │&lt;br /&gt;
                        └───────────────┘             └───────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; puisse prendre le contrôle du &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 80&amp;lt;/span&amp;gt;, les serveurs Apache doivent être configurés pour écouter sur un autre port.  &lt;br /&gt;
Nous allons les faire écouter sur le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 8080&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache sur chaque serveur web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et modifier les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
*Avant:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Après:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la configuration ne contient pas d&#039;erreur de syntaxe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VirtualHost configuration:&lt;br /&gt;
*:8080                 web (/etc/httpd/conf/httpd.conf:42)&lt;br /&gt;
ServerRoot: &amp;quot;/etc/httpd&amp;quot;&lt;br /&gt;
Main DocumentRoot: &amp;quot;/var/www/html&amp;quot;&lt;br /&gt;
Main ErrorLog: &amp;quot;/etc/httpd/logs/error_log&amp;quot;&lt;br /&gt;
Syntax OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache en mode gracieux (sans couper les connexions en cours) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse communiquer avec les serveurs Apache, il est nécessaire d&#039;autoriser le trafic sur le port 8080.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements au pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HAProxy doit être installé sur le serveur qui jouera le rôle de répartiteur de charge.&lt;br /&gt;
&lt;br /&gt;
Installation du package HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de HAProxy définit comment les requêtes seront distribuées entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration principal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration utilisant l&#039;algorithme &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt; pour la répartition de charge :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;roundrobin&amp;lt;/span&amp;gt; distribue les requêtes alternativement entre les serveurs, assurant une répartition équilibrée de la charge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● haproxy.service - HAProxy Load Balancer&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:00:00 CET; 5s ago&lt;br /&gt;
 Main PID: 1234 (haproxy)&lt;br /&gt;
   Status: &amp;quot;Ready.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le système de répartition de charge fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès via l&#039;adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives pour observer le mécanisme de distribution.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web selon l&#039;algorithme &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt;.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; permet d&#039;assurer la continuité du service (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Haute Disponibilité&amp;lt;/span&amp;gt;), de basculer automatiquement vers un serveur secondaire en cas de panne, d&#039;utiliser une &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; partagée entre plusieurs serveurs (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;VIP&amp;lt;/span&amp;gt;) et de superviser l&#039;état du service HAProxy.&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
Un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;MASTER&#039;&#039;&#039;&amp;lt;/span&amp;gt; (actif), un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;BACKUP&#039;&#039;&#039;&amp;lt;/span&amp;gt; (passif). Si le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; tombe, le &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; récupère automatiquement l&#039;IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived doit être installé sur les deux serveurs qui assureront la haute disponibilité (MASTER et BACKUP).&lt;br /&gt;
&lt;br /&gt;
Installation du package Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; sera le serveur actif qui portera l&#039;&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; en temps normal.&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer le service Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; reste en veille et ne prendra le relais qu&#039;en cas de défaillance du serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;adresse IP virtuelle est bien active sur le serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER, afficher les adresses IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.252/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP physique du serveur et l&#039;adresse IP virtuelle 192.168.10.250 doivent apparaître sur l&#039;interface réseau.&lt;br /&gt;
&lt;br /&gt;
Test du mécanisme de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou stopper le service Keepalived&lt;br /&gt;
2. Sur le serveur BACKUP, exécuter la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:57 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.251/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;synchronisation&amp;lt;/span&amp;gt; permet de maintenir les mêmes fichiers sur plusieurs serveurs, d&#039;assurer la cohérence des données et de faciliter la haute disponibilité.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Lsyncd&amp;lt;/span&amp;gt; est un outil de synchronisation temps réel basé sur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;inotify&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;rsync&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Installation du package lsyncd :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour permettre la synchronisation automatique sans saisie de mot de passe, il est nécessaire de configurer l&#039;authentification par &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Générer les &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt; sur chaque serveur et les échanger.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 1, générer la clé et la copier vers le serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 2, générer la clé et la copier vers le serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de lsyncd définit les répertoires à synchroniser et les serveurs cibles.&lt;br /&gt;
&lt;br /&gt;
Créer le répertoire de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer le fichier de configuration pour synchroniser le répertoire /var/www/html/ :&lt;br /&gt;
&lt;br /&gt;
*Remarque: adapter l&#039;adresse IP cible en fonction du serveur où vous créez la configuration.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de service systemd pour adapter les permissions et le chemin de configuration.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants : &lt;br /&gt;
*User=rootpour donner les droits nécessaires &lt;br /&gt;
*ExecStartpour indiquer le bon chemin vers le fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
Configuration finale :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger la configuration systemd pour prendre en compte les modifications :&lt;br /&gt;
&lt;br /&gt;
Sur les deux serveurs, exécuter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service au démarrage sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Important: démarrer le service uniquement sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;).  &lt;br /&gt;
Le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;) activera automatiquement le service lors d&#039;une bascule.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; gère automatiquement le démarrage et l&#039;arrêt de &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; lors des basculements, il faut créer des &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;scripts de notification&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Créer deux scripts bash dans le répertoire /etc/keepalived/ sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;(`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;(`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre les scripts exécutables :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification de l&#039;état de synchronisation.&lt;br /&gt;
&lt;br /&gt;
Ce script permet à Keepalived de surveiller l&#039;état de lsyncd.&lt;br /&gt;
&lt;br /&gt;
Créer le fichier /usr/local/bin/check_lsyncd_sync.sh :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre le script exécutable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /usr/local/bin/check_lsyncd_sync.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration de Keepalived pour intégrer les scripts de notification et de vérification :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplacer le contenu par la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Keepalived pour appliquer les changements :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; est actif uniquement sur le serveur maître.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;), vérifier l&#039;état du service :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:05:00 CET; 10s ago&lt;br /&gt;
 Main PID: 5678 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;), vérifier que le service est bien arrêté :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:05:00 CET; 2min ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester le mécanisme de synchronisation automatique en temps réel.&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la modification a été automatiquement synchronisée sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu doit être identique sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test du basculement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Simuler une panne en éteignant le serveur maître, puis vérifier que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; démarre automatiquement sur l&#039;esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:10:00 CET; 5s ago&lt;br /&gt;
 Main PID: 5890 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur qui est maintenant devenu maître (ancien esclave) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer l&#039;ancien serveur maître et vérifier que la synchronisation s&#039;effectue dans le bon sens :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu modifié sur l&#039;ancien esclave doit être synchronisé vers le serveur qui redémarre.&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut du service lsyncd sur l&#039;ancien serveur maître (qui redevient maître) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:12:00 CET; 5s ago&lt;br /&gt;
 Main PID: 6012 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur qui est redevenu esclave (BACKUP) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:12:00 CET; 10s ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Votre infrastructure est maintenant complète : serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Apache&amp;lt;/span&amp;gt; avec &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HTTPS&amp;lt;/span&amp;gt;, répartition de charge (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt;), haute disponibilité (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt;) et synchronisation automatique des fichiers (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt;) sont opérationnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Iptables&amp;diff=141</id>
		<title>Iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Iptables&amp;diff=141"/>
		<updated>2026-02-27T20:35:02Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;color:#196f3d;&amp;quot;&amp;gt;Iptables&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3f9f1; border:1px solid #cfe5c9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#196f3d;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit la mise en place complète d&#039;un firewall iptables. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle couvre l&#039;installation du service, ainsi que les deux méthodes de configuration des règles de filtrage réseau.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;1 — Installation d&#039;Iptables&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#196f3d;&amp;quot;&amp;gt;Installation et démarrage du service iptables&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer le service iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf -y install iptables-services&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable iptables&lt;br /&gt;
systemctl start iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;2 — Configuration d&#039;Iptables&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#196f3d;&amp;quot;&amp;gt;Deux méthodes pour ajouter des règles dans iptables&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Méthode 1 — Édition directe du fichier de configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger iptables pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fef9e7; border:1px solid #f9e79f; padding:10px; border-radius:8px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
⚠️ &amp;lt;b&amp;gt;Attention&amp;lt;/b&amp;gt; : Ne jamais utiliser &amp;lt;code&amp;gt;systemctl restart iptables&amp;lt;/code&amp;gt; — cela réinitialise toutes les règles en cours.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Méthode 2 — Commande en terminal&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Saisir directement la règle dans le terminal. Exemple pour autoriser le port 80 (HTTP) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sauvegarder les règles pour les rendre persistantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables-save&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3f9f1; border:1px solid #cfe5c9; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Votre firewall iptables est maintenant fonctionnel. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pensez à toujours sauvegarder vos règles avec &amp;lt;b&amp;gt;iptables-save&amp;lt;/b&amp;gt; après chaque modification en ligne de commande. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Privilégiez &amp;lt;b&amp;gt;systemctl reload&amp;lt;/b&amp;gt; à &amp;lt;b&amp;gt;systemctl restart&amp;lt;/b&amp;gt; pour éviter toute interruption du filtrage réseau.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Pfsense&amp;diff=140</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Pfsense&amp;diff=140"/>
		<updated>2026-02-27T20:34:40Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1565c0;&amp;quot;&amp;gt;Installation et Configuration pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e3f2fd; border:1px solid #90caf9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#1565c0;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète d&#039;un firewall pfSense. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de mettre en place une solution de sécurité réseau professionnelle avec gestion multi-zones (WAN, LAN, DMZ, PRI). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la configuration du DHCP Relay, du NAT et des règles de pare-feu pour sécuriser et gérer le trafic réseau.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;1 — Installation de pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Création de la machine virtuelle et téléchargement de l&#039;ISO&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Téléchargement de l&#039;ISO pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Télécharger l&#039;image ISO de pfSense depuis le dépôt officiel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://repo.ialab.dsu.edu/pfsense/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Création de la VM pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer une nouvelle machine virtuelle avec l&#039;ISO pfSense téléchargé.&lt;br /&gt;
&lt;br /&gt;
Spécifications recommandées :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt; : 2 Go minimum&lt;br /&gt;
* &amp;lt;b&amp;gt;CPU&amp;lt;/b&amp;gt; : 2 cœurs minimum&lt;br /&gt;
* &amp;lt;b&amp;gt;Disque&amp;lt;/b&amp;gt; : 20 Go minimum&lt;br /&gt;
* &amp;lt;b&amp;gt;Interfaces réseau&amp;lt;/b&amp;gt; : 4 Network Devices (configuration détaillée ci-dessous)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Configuration des interfaces réseau (Hardware)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans la section &amp;lt;b&amp;gt;Hardware&amp;lt;/b&amp;gt; de votre hyperviseur, créer 4 Network Devices :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 1 (net0) - WAN :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbr0&lt;br /&gt;
Model : Intel E1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 2 (net1) - LAN :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrlan&lt;br /&gt;
Model : VirtIO (paravirtualized)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 3 (net2) - DMZ :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrdmz&lt;br /&gt;
Model : VirtIO (paravirtualized)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 4 (net3) - PRI :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrpri&lt;br /&gt;
Model : VirtIO (paravirtualized)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la configuration terminée, démarrer la VM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;2 — Configuration des Interfaces pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Attribution et configuration des interfaces réseau dans pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Assignation des interfaces&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Au démarrage de pfSense, vous accédez à la console en ligne de commande.&lt;br /&gt;
&lt;br /&gt;
Appuyer sur &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; pour accéder à &amp;lt;b&amp;gt;&amp;quot;Assign Interfaces&amp;quot;&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Instructions d&#039;assignation :&lt;br /&gt;
&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;première interface&amp;lt;/b&amp;gt; au &amp;lt;b&amp;gt;WAN&amp;lt;/b&amp;gt;&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;seconde interface&amp;lt;/b&amp;gt; au &amp;lt;b&amp;gt;LAN&amp;lt;/b&amp;gt;&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;troisième interface&amp;lt;/b&amp;gt; à &amp;lt;b&amp;gt;OPT1&amp;lt;/b&amp;gt; (qui deviendra DMZ)&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;quatrième interface&amp;lt;/b&amp;gt; à &amp;lt;b&amp;gt;OPT2&amp;lt;/b&amp;gt; (qui deviendra PRI)&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; L&#039;ordre d&#039;assignation doit correspondre exactement à l&#039;ordre de configuration dans la section Hardware.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Configuration des adresses IP&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Appuyer sur &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; pour accéder à &amp;lt;b&amp;gt;&amp;quot;Set Interfaces IP Address&amp;quot;&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sélectionner chaque interface une par une et effectuer les opérations suivantes :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Refuser&amp;lt;/b&amp;gt; l&#039;assignation d&#039;adresse IPv4 par DHCP&lt;br /&gt;
* &amp;lt;b&amp;gt;Entrer&amp;lt;/b&amp;gt; une adresse IPv4 statique&lt;br /&gt;
* &amp;lt;b&amp;gt;Entrer&amp;lt;/b&amp;gt; le masque de sous-réseau&lt;br /&gt;
* &amp;lt;b&amp;gt;Refuser&amp;lt;/b&amp;gt; l&#039;assignation d&#039;adresse IPv6 par DHCP&lt;br /&gt;
* &amp;lt;b&amp;gt;Ne rien entrer&amp;lt;/b&amp;gt; pour l&#039;IPv6&lt;br /&gt;
* &amp;lt;b&amp;gt;Refuser&amp;lt;/b&amp;gt; le retour sur HTTP&lt;br /&gt;
* &amp;lt;b&amp;gt;Appuyer sur Entrée&amp;lt;/b&amp;gt; pour valider&lt;br /&gt;
&lt;br /&gt;
Répéter cette procédure pour chaque interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Résultat attendu de la configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après configuration, la console pfSense doit afficher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────────────────────────────────────────────┐&lt;br /&gt;
│  WAN (wan)  → em0     → v4: 192.168.20.200/24       │&lt;br /&gt;
│  LAN (lan)  → vtnet0  → v4: 192.168.30.254/24       │&lt;br /&gt;
│  DMZ (opt1) → vtnet1  → v4: 192.168.10.254/24       │&lt;br /&gt;
│  PRI (opt2) → vtnet2  → v4: 192.168.40.254/24       │&lt;br /&gt;
└─────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schéma de l&#039;architecture réseau :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                        Internet&lt;br /&gt;
                           │&lt;br /&gt;
                           ▼&lt;br /&gt;
                    ┌──────────────┐&lt;br /&gt;
                    │   pfSense    │&lt;br /&gt;
                    │  Firewall    │&lt;br /&gt;
                    └──────┬───────┘&lt;br /&gt;
                           │&lt;br /&gt;
        ┌──────────────────┼──────────────────┐&lt;br /&gt;
        │                  │                  │&lt;br /&gt;
        ▼                  ▼                  ▼&lt;br /&gt;
    ┌───────┐         ┌────────┐        ┌────────┐&lt;br /&gt;
    │  LAN  │         │  DMZ   │        │  PRI   │&lt;br /&gt;
    │ .30.x │         │ .10.x  │        │ .40.x  │&lt;br /&gt;
    └───────┘         └────────┘        └────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;3 — Configuration du Client Windows&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Mise en place d&#039;une VM client pour accéder à l&#039;interface web de pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Création de la VM Windows&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer une machine virtuelle Windows (ou Linux avec interface graphique) pour accéder à l&#039;interface web de pfSense.&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrlan&lt;br /&gt;
Model : Intel E1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer la VM Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Configuration réseau sous Windows&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir la fenêtre de configuration des cartes réseau :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ncpa.cpl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sélectionner la carte réseau présente et configurer manuellement l&#039;adresse IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Adresse IP            : 192.168.30.100&lt;br /&gt;
Masque de sous-réseau : 255.255.255.0&lt;br /&gt;
Passerelle par défaut : 192.168.30.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Accès à l&#039;interface web pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir un navigateur web et saisir l&#039;adresse suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://192.168.30.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identifiants de connexion par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Nom d&#039;utilisateur : admin&lt;br /&gt;
Mot de passe      : pfsense&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez accéder à l&#039;interface d&#039;administration web de pfSense.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b5e20;&amp;quot;&amp;gt;4 — Configuration Avancée de pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1b5e20;&amp;quot;&amp;gt;Configuration de la passerelle WAN, du DHCP Relay, du NAT et des règles de pare-feu&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration de la passerelle WAN&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans l&#039;interface web de pfSense, configurer la passerelle de l&#039;interface WAN pour permettre la connexion à Internet.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Routing → Gateways&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration de la gateway WAN :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Gateway IP : 192.168.20.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sauvegarder et appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration du DHCP Relay&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le DHCP Relay permet de transférer les requêtes DHCP vers un serveur DHCP central.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Services → DHCP Relay&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Activer&amp;lt;/b&amp;gt; le DHCP Relay&lt;br /&gt;
* &amp;lt;b&amp;gt;Sélectionner&amp;lt;/b&amp;gt; toutes les interfaces où le DHCP Relay sera utilisé&lt;br /&gt;
* Cliquer sur &amp;lt;b&amp;gt;&amp;quot;Add upstream server&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;Entrer l&#039;adresse IP&amp;lt;/b&amp;gt; de votre serveur DHCP&lt;br /&gt;
&lt;br /&gt;
Sauvegarder et appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Schéma du DHCP Relay :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────┐       Requête DHCP         ┌──────────────┐&lt;br /&gt;
│   Client    │ ─────────────────────────→ │   pfSense    │&lt;br /&gt;
│ (LAN/DMZ)   │                            │ DHCP Relay   │&lt;br /&gt;
└─────────────┘                            └──────┬───────┘&lt;br /&gt;
                                                  │&lt;br /&gt;
                                    Transfert     │&lt;br /&gt;
                                                  ▼&lt;br /&gt;
                                           ┌──────────────┐&lt;br /&gt;
                                           │ Serveur DHCP │&lt;br /&gt;
                                           │   Central    │&lt;br /&gt;
                                           └──────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration du NAT (Network Address Translation)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le NAT permet aux machines du réseau interne d&#039;accéder à Internet en masquant leurs adresses IP privées.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → NAT → Outbound&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration :&lt;br /&gt;
&lt;br /&gt;
* Laisser le mode en &amp;lt;b&amp;gt;&amp;quot;Automatic outbound NAT&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
* Sauvegarder et appliquer les changements&lt;br /&gt;
&lt;br /&gt;
Des règles NAT seront automatiquement créées pour chaque interface interne.&lt;br /&gt;
&lt;br /&gt;
Schéma du NAT :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────────┐                   ┌─────────────────┐&lt;br /&gt;
│  Réseau Interne │                   │    Internet     │&lt;br /&gt;
│  192.168.30.x   │  ───────NAT────→  │  IP Publique    │&lt;br /&gt;
│  192.168.10.x   │                   │                 │&lt;br /&gt;
│  192.168.40.x   │                   │                 │&lt;br /&gt;
└─────────────────┘                   └─────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration des règles de pare-feu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Les règles de pare-feu permettent de contrôler le trafic réseau entre les différentes zones.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → Rules&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de règle pour autoriser le ping (ICMP) :&lt;br /&gt;
&lt;br /&gt;
Configuration d&#039;une règle ICMP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Action        : Pass&lt;br /&gt;
Interface     : LAN / DMZ / PRI (selon besoin)&lt;br /&gt;
Protocol      : ICMP&lt;br /&gt;
ICMP Type     : Echo Request&lt;br /&gt;
Source        : LAN net / DMZ net / PRI net&lt;br /&gt;
Destination   : Any&lt;br /&gt;
Description   : Autoriser ping depuis [interface]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Les règles de pare-feu doivent être configurées interface par interface (LAN, DMZ, PRI).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Schéma des règles de pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────────────────────────────────────────────┐&lt;br /&gt;
│                   pfSense Firewall                  │&lt;br /&gt;
├─────────────────────────────────────────────────────┤&lt;br /&gt;
│                                                     │&lt;br /&gt;
│  LAN Rules    : ✓ Ping  ✓ HTTP  ✓ HTTPS            │&lt;br /&gt;
│  DMZ Rules    : ✓ Ping  ✓ HTTP  ✓ HTTPS            │&lt;br /&gt;
│  PRI Rules    : ✓ Ping  ✗ Accès limité             │&lt;br /&gt;
│  WAN Rules    : ✗ Bloqué par défaut                │&lt;br /&gt;
│                                                     │&lt;br /&gt;
└─────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sauvegarder et appliquer les changements après chaque création de règle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Vérification et Tests&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3e5f5; border:1px solid #ce93d8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Vérification du bon fonctionnement de pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#6a1b9a;&amp;quot;&amp;gt;Test de connectivité&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Depuis une machine cliente (LAN, DMZ ou PRI), vérifier :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Connectivité locale&amp;lt;/b&amp;gt; : Ping vers la passerelle pfSense&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 192.168.30.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Connectivité Internet&amp;lt;/b&amp;gt; : Ping vers un serveur externe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 8.8.8.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Résolution DNS&amp;lt;/b&amp;gt; : Ping vers un nom de domaine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping google.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#6a1b9a;&amp;quot;&amp;gt;Vérification des services&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que les services suivants fonctionnent correctement :&lt;br /&gt;
&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Interface web&amp;lt;/b&amp;gt; accessible depuis le réseau LAN&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;DHCP Relay&amp;lt;/b&amp;gt; attribue correctement les adresses IP&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;NAT&amp;lt;/b&amp;gt; permet l&#039;accès à Internet&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Règles de pare-feu&amp;lt;/b&amp;gt; autorisent/bloquent le trafic selon la configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3e5f5; border:1px solid #ce93d8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Cette configuration pfSense remplace efficacement un firewall iptables traditionnel en offrant une interface graphique intuitive et des fonctionnalités avancées de sécurité réseau. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Le système est maintenant opérationnel avec une architecture multi-zones sécurisée (WAN, LAN, DMZ, PRI). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
N&#039;oubliez pas de sauvegarder régulièrement votre configuration pfSense via &amp;lt;b&amp;gt;Diagnostics → Backup &amp;amp; Restore&amp;lt;/b&amp;gt;.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=DNS&amp;diff=139</id>
		<title>DNS</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=DNS&amp;diff=139"/>
		<updated>2026-02-27T20:34:03Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /**DNS/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Installation et Configuration DNS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#00695c;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète d&#039;un serveur DNS avec BIND. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle couvre la configuration de named.conf, la création des zones DNS et l&#039;ouverture des ports nécessaires via iptables. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la configuration des machines clientes pour utiliser le serveur DNS du domaine.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;1 — Installation de BIND&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Installation et démarrage du service BIND (named)&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Installation du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer les paquets BIND et les utilitaires associés :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install bind bind-utils -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable named&lt;br /&gt;
systemctl start named&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;2 — Configuration de named.conf&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Modification du fichier de configuration principal de BIND&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Ouverture du fichier de configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier de configuration de BIND :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/named.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Ajout de l&#039;ACL&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ajouter les lignes suivantes &amp;lt;b&amp;gt;avant&amp;lt;/b&amp;gt; la section &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
acl authorized {&lt;br /&gt;
        192.168.0.0/16;&lt;br /&gt;
        127.0.0.0/8;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette ACL définit les réseaux autorisés à interroger le serveur DNS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Modification des options&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Remplacer les lignes suivantes dans la section &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Avant :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
listen-on port 53 { localhost; };&lt;br /&gt;
listen-on-v6 port 53 { ::1; };&lt;br /&gt;
allow-query     { 127.0.0.1; };&lt;br /&gt;
dnssec-validation yes;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Après :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
listen-on port 53 { localnets; };&lt;br /&gt;
listen-on-v6 port 53 { none; };&lt;br /&gt;
allow-query     { authorized; };&lt;br /&gt;
dnssec-validation no;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Déclaration de la zone DNS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ajouter à la fin du fichier, &amp;lt;b&amp;gt;juste avant&amp;lt;/b&amp;gt; les lignes &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;, la déclaration de votre zone :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zone &amp;quot;bts.fr&amp;quot; IN {&lt;br /&gt;
        type master;&lt;br /&gt;
        file &amp;quot;bts.fr&amp;quot;;&lt;br /&gt;
        allow-update { none; };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Le nom du fichier dans &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt; doit correspondre exactement au nom du fichier de zone que vous allez créer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;3 — Création du fichier de zone&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Création et remplissage du fichier de zone DNS dans /var/named/&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Création du fichier de zone&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans le dossier &amp;lt;code&amp;gt;/var/named/&amp;lt;/code&amp;gt;, créer un fichier portant le même nom que déclaré dans &amp;lt;code&amp;gt;named.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/named/bts.fr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Contenu du fichier de zone&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Insérer le contenu suivant dans le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL 86400&lt;br /&gt;
bts.fr.      IN      SOA     dns.bts.fr.  root.bts.fr. (&lt;br /&gt;
                    0                   ; serial&lt;br /&gt;
                    21600               ; refresh after 6 hours&lt;br /&gt;
                    3600                ; retry after 1 hour&lt;br /&gt;
                    604800              ; expires after 1 week&lt;br /&gt;
                    86400 )             ; minimum TTL of 1 day&lt;br /&gt;
                IN      NS              dns&lt;br /&gt;
                IN      A       192.168.40.249&lt;br /&gt;
; MGMT&lt;br /&gt;
backup          IN      A       192.168.20.249&lt;br /&gt;
; PRI&lt;br /&gt;
dns             IN      A       192.168.40.249&lt;br /&gt;
db1             IN      A       192.168.40.252&lt;br /&gt;
db2             IN      A       192.168.40.250&lt;br /&gt;
dhcp1           IN      A       192.168.40.253&lt;br /&gt;
dhcp2           IN      A       192.168.40.251&lt;br /&gt;
arb             IN      A       192.168.40.240&lt;br /&gt;
; DMZ&lt;br /&gt;
web1            IN      A       192.168.10.252&lt;br /&gt;
web2            IN      A       192.168.10.251&lt;br /&gt;
web             IN      A       192.168.10.250&lt;br /&gt;
; LAN&lt;br /&gt;
supervision     IN      A       192.168.30.253&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Adaptez les adresses IP, les noms de machines et le nom de zone selon votre infrastructure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service après modification :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart named&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;4 — Ouverture des ports et configuration des clients&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Autorisation du port 53 via iptables et configuration DNS sur les machines clientes&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Ouverture du port 53 (TCP et UDP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;b&amp;gt;toutes les machines appartenant au domaine&amp;lt;/b&amp;gt;, ouvrir le port 53 en TCP et en UDP dans iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger iptables pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Configuration DNS sur les machines clientes&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur toutes vos machines, renseigner :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Le nom de domaine&amp;lt;/b&amp;gt; : &amp;lt;code&amp;gt;bts.fr&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;L&#039;adresse du serveur DNS&amp;lt;/b&amp;gt; : adresse IP du serveur DNS&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Sur le serveur DNS lui-même, utiliser &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; comme adresse DNS et non son IP publique.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Vérification et Tests&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Vérification du bon fonctionnement du serveur DNS&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Test de résolution DNS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que la résolution DNS fonctionne correctement depuis une machine cliente :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Résolution d&#039;un hôte du domaine&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nslookup dns.bts.fr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Résolution d&#039;un nom de domaine externe&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nslookup google.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Vérification de la syntaxe de named.conf&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
named-checkconf /etc/named.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Vérification de la syntaxe du fichier de zone&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
named-checkzone bts.fr /var/named/bts.fr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Vérification des services&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que les éléments suivants fonctionnent correctement :&lt;br /&gt;
&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Service named&amp;lt;/b&amp;gt; actif et en cours d&#039;exécution&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Port 53 TCP/UDP&amp;lt;/b&amp;gt; ouvert sur toutes les machines du domaine&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Résolution interne&amp;lt;/b&amp;gt; des hôtes du domaine &amp;lt;code&amp;gt;bts.fr&amp;lt;/code&amp;gt;&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Résolution externe&amp;lt;/b&amp;gt; vers Internet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00251a;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Votre serveur DNS est maintenant fonctionnel. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pensez à incrémenter le champ &amp;lt;b&amp;gt;serial&amp;lt;/b&amp;gt; dans le fichier de zone à chaque modification pour forcer la synchronisation avec les éventuels serveurs secondaires. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Utilisez &amp;lt;b&amp;gt;named-checkconf&amp;lt;/b&amp;gt; et &amp;lt;b&amp;gt;named-checkzone&amp;lt;/b&amp;gt; pour valider vos fichiers de configuration avant de redémarrer le service.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=DNS&amp;diff=138</id>
		<title>DNS</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=DNS&amp;diff=138"/>
		<updated>2026-02-27T20:31:23Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /*DNS*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00695c;&amp;quot;&amp;gt;Installation et Configuration DNS&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#00695c;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète d&#039;un serveur DNS avec BIND. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle couvre la configuration de named.conf, la création des zones DNS et l&#039;ouverture des ports nécessaires via iptables. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la configuration des machines clientes pour utiliser le serveur DNS du domaine.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Partie 1 — Installation de BIND&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Installation et démarrage du service BIND (named)&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Installation du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer les paquets BIND et les utilitaires associés :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install bind bind-utils -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable named&lt;br /&gt;
systemctl start named&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Partie 2 — Configuration de named.conf&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Modification du fichier de configuration principal de BIND&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Ouverture du fichier de configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier de configuration de BIND :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/named.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Ajout de l&#039;ACL&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ajouter les lignes suivantes &amp;lt;b&amp;gt;avant&amp;lt;/b&amp;gt; la section &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
acl authorized {&lt;br /&gt;
        192.168.0.0/16;&lt;br /&gt;
        127.0.0.0/8;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette ACL définit les réseaux autorisés à interroger le serveur DNS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Modification des options&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Remplacer les lignes suivantes dans la section &amp;lt;code&amp;gt;options&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Avant :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
listen-on port 53 { localhost; };&lt;br /&gt;
listen-on-v6 port 53 { ::1; };&lt;br /&gt;
allow-query     { 127.0.0.1; };&lt;br /&gt;
dnssec-validation yes;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Après :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
listen-on port 53 { localnets; };&lt;br /&gt;
listen-on-v6 port 53 { none; };&lt;br /&gt;
allow-query     { authorized; };&lt;br /&gt;
dnssec-validation no;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Déclaration de la zone DNS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ajouter à la fin du fichier, &amp;lt;b&amp;gt;juste avant&amp;lt;/b&amp;gt; les lignes &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;, la déclaration de votre zone :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zone &amp;quot;bts.fr&amp;quot; IN {&lt;br /&gt;
        type master;&lt;br /&gt;
        file &amp;quot;bts.fr&amp;quot;;&lt;br /&gt;
        allow-update { none; };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Le nom du fichier dans &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt; doit correspondre exactement au nom du fichier de zone que vous allez créer.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Partie 3 — Création du fichier de zone&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Création et remplissage du fichier de zone DNS dans /var/named/&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Création du fichier de zone&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans le dossier &amp;lt;code&amp;gt;/var/named/&amp;lt;/code&amp;gt;, créer un fichier portant le même nom que déclaré dans &amp;lt;code&amp;gt;named.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/named/bts.fr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Contenu du fichier de zone&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Insérer le contenu suivant dans le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$TTL 86400&lt;br /&gt;
bts.fr.      IN      SOA     dns.bts.fr.  root.bts.fr. (&lt;br /&gt;
                    0                   ; serial&lt;br /&gt;
                    21600               ; refresh after 6 hours&lt;br /&gt;
                    3600                ; retry after 1 hour&lt;br /&gt;
                    604800              ; expires after 1 week&lt;br /&gt;
                    86400 )             ; minimum TTL of 1 day&lt;br /&gt;
                IN      NS              dns&lt;br /&gt;
                IN      A       192.168.40.249&lt;br /&gt;
; MGMT&lt;br /&gt;
backup          IN      A       192.168.20.249&lt;br /&gt;
; PRI&lt;br /&gt;
dns             IN      A       192.168.40.249&lt;br /&gt;
db1             IN      A       192.168.40.252&lt;br /&gt;
db2             IN      A       192.168.40.250&lt;br /&gt;
dhcp1           IN      A       192.168.40.253&lt;br /&gt;
dhcp2           IN      A       192.168.40.251&lt;br /&gt;
arb             IN      A       192.168.40.240&lt;br /&gt;
; DMZ&lt;br /&gt;
web1            IN      A       192.168.10.252&lt;br /&gt;
web2            IN      A       192.168.10.251&lt;br /&gt;
web             IN      A       192.168.10.250&lt;br /&gt;
; LAN&lt;br /&gt;
supervision     IN      A       192.168.30.253&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Adaptez les adresses IP, les noms de machines et le nom de zone selon votre infrastructure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service après modification :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart named&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Partie 4 — Ouverture des ports et configuration des clients&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Autorisation du port 53 via iptables et configuration DNS sur les machines clientes&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Ouverture du port 53 (TCP et UDP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;b&amp;gt;toutes les machines appartenant au domaine&amp;lt;/b&amp;gt;, ouvrir le port 53 en TCP et en UDP dans iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT&lt;br /&gt;
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger iptables pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Configuration DNS sur les machines clientes&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur toutes vos machines, renseigner :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Le nom de domaine&amp;lt;/b&amp;gt; : &amp;lt;code&amp;gt;bts.fr&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;L&#039;adresse du serveur DNS&amp;lt;/b&amp;gt; : adresse IP du serveur DNS&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; Sur le serveur DNS lui-même, utiliser &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; comme adresse DNS et non son IP publique.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Vérification et Tests&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#004d40;&amp;quot;&amp;gt;Vérification du bon fonctionnement du serveur DNS&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Test de résolution DNS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que la résolution DNS fonctionne correctement depuis une machine cliente :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Résolution d&#039;un hôte du domaine&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nslookup dns.bts.fr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Résolution d&#039;un nom de domaine externe&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nslookup google.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Vérification de la syntaxe de named.conf&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
named-checkconf /etc/named.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Vérification de la syntaxe du fichier de zone&amp;lt;/b&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
named-checkzone bts.fr /var/named/bts.fr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#00897b;&amp;quot;&amp;gt;Vérification des services&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que les éléments suivants fonctionnent correctement :&lt;br /&gt;
&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Service named&amp;lt;/b&amp;gt; actif et en cours d&#039;exécution&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Port 53 TCP/UDP&amp;lt;/b&amp;gt; ouvert sur toutes les machines du domaine&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Résolution interne&amp;lt;/b&amp;gt; des hôtes du domaine &amp;lt;code&amp;gt;bts.fr&amp;lt;/code&amp;gt;&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Résolution externe&amp;lt;/b&amp;gt; vers Internet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00251a;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e0f2f1; border:1px solid #80cbc4; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Votre serveur DNS est maintenant fonctionnel. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pensez à incrémenter le champ &amp;lt;b&amp;gt;serial&amp;lt;/b&amp;gt; dans le fichier de zone à chaque modification pour forcer la synchronisation avec les éventuels serveurs secondaires. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Utilisez &amp;lt;b&amp;gt;named-checkconf&amp;lt;/b&amp;gt; et &amp;lt;b&amp;gt;named-checkzone&amp;lt;/b&amp;gt; pour valider vos fichiers de configuration avant de redémarrer le service.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Iptables&amp;diff=137</id>
		<title>Iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Iptables&amp;diff=137"/>
		<updated>2026-02-27T20:27:40Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /*Firewalling Iptables*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;color:#196f3d;&amp;quot;&amp;gt;Iptables&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3f9f1; border:1px solid #cfe5c9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#196f3d;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit la mise en place complète d&#039;un firewall iptables. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle couvre l&#039;installation du service, ainsi que les deux méthodes de configuration des règles de filtrage réseau.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 1 — Installation d&#039;Iptables&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#196f3d;&amp;quot;&amp;gt;Installation et démarrage du service iptables&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer le service iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf -y install iptables-services&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable iptables&lt;br /&gt;
systemctl start iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 2 — Configuration d&#039;Iptables&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#196f3d;&amp;quot;&amp;gt;Deux méthodes pour ajouter des règles dans iptables&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Méthode 1 — Édition directe du fichier de configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger iptables pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fef9e7; border:1px solid #f9e79f; padding:10px; border-radius:8px;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
⚠️ &amp;lt;b&amp;gt;Attention&amp;lt;/b&amp;gt; : Ne jamais utiliser &amp;lt;code&amp;gt;systemctl restart iptables&amp;lt;/code&amp;gt; — cela réinitialise toutes les règles en cours.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Méthode 2 — Commande en terminal&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Saisir directement la règle dans le terminal. Exemple pour autoriser le port 80 (HTTP) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sauvegarder les règles pour les rendre persistantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables-save&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#145a32;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3f9f1; border:1px solid #cfe5c9; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Votre firewall iptables est maintenant fonctionnel. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Pensez à toujours sauvegarder vos règles avec &amp;lt;b&amp;gt;iptables-save&amp;lt;/b&amp;gt; après chaque modification en ligne de commande. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Privilégiez &amp;lt;b&amp;gt;systemctl reload&amp;lt;/b&amp;gt; à &amp;lt;b&amp;gt;systemctl restart&amp;lt;/b&amp;gt; pour éviter toute interruption du filtrage réseau.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Pfsense&amp;diff=136</id>
		<title>Pfsense</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Pfsense&amp;diff=136"/>
		<updated>2026-02-23T16:59:02Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /*Pfsense*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1565c0;&amp;quot;&amp;gt;Installation et Configuration pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e3f2fd; border:1px solid #90caf9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#1565c0;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète d&#039;un firewall pfSense. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de mettre en place une solution de sécurité réseau professionnelle avec gestion multi-zones (WAN, LAN, DMZ, PRI). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la configuration du DHCP Relay, du NAT et des règles de pare-feu pour sécuriser et gérer le trafic réseau.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Partie 1 — Installation de pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Création de la machine virtuelle et téléchargement de l&#039;ISO&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Téléchargement de l&#039;ISO pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Télécharger l&#039;image ISO de pfSense depuis le dépôt officiel :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://repo.ialab.dsu.edu/pfsense/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Création de la VM pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer une nouvelle machine virtuelle avec l&#039;ISO pfSense téléchargé.&lt;br /&gt;
&lt;br /&gt;
Spécifications recommandées :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;RAM&amp;lt;/b&amp;gt; : 2 Go minimum&lt;br /&gt;
* &amp;lt;b&amp;gt;CPU&amp;lt;/b&amp;gt; : 2 cœurs minimum&lt;br /&gt;
* &amp;lt;b&amp;gt;Disque&amp;lt;/b&amp;gt; : 20 Go minimum&lt;br /&gt;
* &amp;lt;b&amp;gt;Interfaces réseau&amp;lt;/b&amp;gt; : 4 Network Devices (configuration détaillée ci-dessous)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Configuration des interfaces réseau (Hardware)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans la section &amp;lt;b&amp;gt;Hardware&amp;lt;/b&amp;gt; de votre hyperviseur, créer 4 Network Devices :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 1 (net0) - WAN :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbr0&lt;br /&gt;
Model : Intel E1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 2 (net1) - LAN :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrlan&lt;br /&gt;
Model : VirtIO (paravirtualized)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 3 (net2) - DMZ :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrdmz&lt;br /&gt;
Model : VirtIO (paravirtualized)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Interface 4 (net3) - PRI :&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrpri&lt;br /&gt;
Model : VirtIO (paravirtualized)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la configuration terminée, démarrer la VM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Partie 2 — Configuration des Interfaces pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Attribution et configuration des interfaces réseau dans pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Assignation des interfaces&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Au démarrage de pfSense, vous accédez à la console en ligne de commande.&lt;br /&gt;
&lt;br /&gt;
Appuyer sur &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt; pour accéder à &amp;lt;b&amp;gt;&amp;quot;Assign Interfaces&amp;quot;&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Instructions d&#039;assignation :&lt;br /&gt;
&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;première interface&amp;lt;/b&amp;gt; au &amp;lt;b&amp;gt;WAN&amp;lt;/b&amp;gt;&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;seconde interface&amp;lt;/b&amp;gt; au &amp;lt;b&amp;gt;LAN&amp;lt;/b&amp;gt;&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;troisième interface&amp;lt;/b&amp;gt; à &amp;lt;b&amp;gt;OPT1&amp;lt;/b&amp;gt; (qui deviendra DMZ)&lt;br /&gt;
* Assigner la &amp;lt;b&amp;gt;quatrième interface&amp;lt;/b&amp;gt; à &amp;lt;b&amp;gt;OPT2&amp;lt;/b&amp;gt; (qui deviendra PRI)&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ ATTENTION :&amp;lt;/b&amp;gt; L&#039;ordre d&#039;assignation doit correspondre exactement à l&#039;ordre de configuration dans la section Hardware.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Configuration des adresses IP&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Appuyer sur &amp;lt;b&amp;gt;2&amp;lt;/b&amp;gt; pour accéder à &amp;lt;b&amp;gt;&amp;quot;Set Interfaces IP Address&amp;quot;&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sélectionner chaque interface une par une et effectuer les opérations suivantes :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Refuser&amp;lt;/b&amp;gt; l&#039;assignation d&#039;adresse IPv4 par DHCP&lt;br /&gt;
* &amp;lt;b&amp;gt;Entrer&amp;lt;/b&amp;gt; une adresse IPv4 statique&lt;br /&gt;
* &amp;lt;b&amp;gt;Entrer&amp;lt;/b&amp;gt; le masque de sous-réseau&lt;br /&gt;
* &amp;lt;b&amp;gt;Refuser&amp;lt;/b&amp;gt; l&#039;assignation d&#039;adresse IPv6 par DHCP&lt;br /&gt;
* &amp;lt;b&amp;gt;Ne rien entrer&amp;lt;/b&amp;gt; pour l&#039;IPv6&lt;br /&gt;
* &amp;lt;b&amp;gt;Refuser&amp;lt;/b&amp;gt; le retour sur HTTP&lt;br /&gt;
* &amp;lt;b&amp;gt;Appuyer sur Entrée&amp;lt;/b&amp;gt; pour valider&lt;br /&gt;
&lt;br /&gt;
Répéter cette procédure pour chaque interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Résultat attendu de la configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après configuration, la console pfSense doit afficher :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────────────────────────────────────────────┐&lt;br /&gt;
│  WAN (wan)  → em0     → v4: 192.168.20.200/24       │&lt;br /&gt;
│  LAN (lan)  → vtnet0  → v4: 192.168.30.254/24       │&lt;br /&gt;
│  DMZ (opt1) → vtnet1  → v4: 192.168.10.254/24       │&lt;br /&gt;
│  PRI (opt2) → vtnet2  → v4: 192.168.40.254/24       │&lt;br /&gt;
└─────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schéma de l&#039;architecture réseau :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                        Internet&lt;br /&gt;
                           │&lt;br /&gt;
                           ▼&lt;br /&gt;
                    ┌──────────────┐&lt;br /&gt;
                    │   pfSense    │&lt;br /&gt;
                    │  Firewall    │&lt;br /&gt;
                    └──────┬───────┘&lt;br /&gt;
                           │&lt;br /&gt;
        ┌──────────────────┼──────────────────┐&lt;br /&gt;
        │                  │                  │&lt;br /&gt;
        ▼                  ▼                  ▼&lt;br /&gt;
    ┌───────┐         ┌────────┐        ┌────────┐&lt;br /&gt;
    │  LAN  │         │  DMZ   │        │  PRI   │&lt;br /&gt;
    │ .30.x │         │ .10.x  │        │ .40.x  │&lt;br /&gt;
    └───────┘         └────────┘        └────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Partie 3 — Configuration du Client Windows&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8eaf6; border:1px solid #9fa8da; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0d47a1;&amp;quot;&amp;gt;Mise en place d&#039;une VM client pour accéder à l&#039;interface web de pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Création de la VM Windows&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer une machine virtuelle Windows (ou Linux avec interface graphique) pour accéder à l&#039;interface web de pfSense.&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bridge : vmbrlan&lt;br /&gt;
Model : Intel E1000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer la VM Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Configuration réseau sous Windows&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir la fenêtre de configuration des cartes réseau :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ncpa.cpl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sélectionner la carte réseau présente et configurer manuellement l&#039;adresse IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Adresse IP            : 192.168.30.100&lt;br /&gt;
Masque de sous-réseau : 255.255.255.0&lt;br /&gt;
Passerelle par défaut : 192.168.30.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1976d2;&amp;quot;&amp;gt;Accès à l&#039;interface web pfSense&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ouvrir un navigateur web et saisir l&#039;adresse suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://192.168.30.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Identifiants de connexion par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Nom d&#039;utilisateur : admin&lt;br /&gt;
Mot de passe      : pfsense&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez accéder à l&#039;interface d&#039;administration web de pfSense.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1b5e20;&amp;quot;&amp;gt;Partie 4 — Configuration Avancée de pfSense&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #a5d6a7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1b5e20;&amp;quot;&amp;gt;Configuration de la passerelle WAN, du DHCP Relay, du NAT et des règles de pare-feu&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration de la passerelle WAN&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Dans l&#039;interface web de pfSense, configurer la passerelle de l&#039;interface WAN pour permettre la connexion à Internet.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;System → Routing → Gateways&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration de la gateway WAN :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Gateway IP : 192.168.20.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sauvegarder et appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration du DHCP Relay&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le DHCP Relay permet de transférer les requêtes DHCP vers un serveur DHCP central.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Services → DHCP Relay&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Activer&amp;lt;/b&amp;gt; le DHCP Relay&lt;br /&gt;
* &amp;lt;b&amp;gt;Sélectionner&amp;lt;/b&amp;gt; toutes les interfaces où le DHCP Relay sera utilisé&lt;br /&gt;
* Cliquer sur &amp;lt;b&amp;gt;&amp;quot;Add upstream server&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;Entrer l&#039;adresse IP&amp;lt;/b&amp;gt; de votre serveur DHCP&lt;br /&gt;
&lt;br /&gt;
Sauvegarder et appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Schéma du DHCP Relay :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────┐       Requête DHCP         ┌──────────────┐&lt;br /&gt;
│   Client    │ ─────────────────────────→ │   pfSense    │&lt;br /&gt;
│ (LAN/DMZ)   │                            │ DHCP Relay   │&lt;br /&gt;
└─────────────┘                            └──────┬───────┘&lt;br /&gt;
                                                  │&lt;br /&gt;
                                    Transfert     │&lt;br /&gt;
                                                  ▼&lt;br /&gt;
                                           ┌──────────────┐&lt;br /&gt;
                                           │ Serveur DHCP │&lt;br /&gt;
                                           │   Central    │&lt;br /&gt;
                                           └──────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration du NAT (Network Address Translation)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le NAT permet aux machines du réseau interne d&#039;accéder à Internet en masquant leurs adresses IP privées.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → NAT → Outbound&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration :&lt;br /&gt;
&lt;br /&gt;
* Laisser le mode en &amp;lt;b&amp;gt;&amp;quot;Automatic outbound NAT&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
* Sauvegarder et appliquer les changements&lt;br /&gt;
&lt;br /&gt;
Des règles NAT seront automatiquement créées pour chaque interface interne.&lt;br /&gt;
&lt;br /&gt;
Schéma du NAT :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────────┐                   ┌─────────────────┐&lt;br /&gt;
│  Réseau Interne │                   │    Internet     │&lt;br /&gt;
│  192.168.30.x   │  ───────NAT────→  │  IP Publique    │&lt;br /&gt;
│  192.168.10.x   │                   │                 │&lt;br /&gt;
│  192.168.40.x   │                   │                 │&lt;br /&gt;
└─────────────────┘                   └─────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e7d32;&amp;quot;&amp;gt;Configuration des règles de pare-feu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Les règles de pare-feu permettent de contrôler le trafic réseau entre les différentes zones.&lt;br /&gt;
&lt;br /&gt;
Navigation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Firewall → Rules&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de règle pour autoriser le ping (ICMP) :&lt;br /&gt;
&lt;br /&gt;
Configuration d&#039;une règle ICMP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Action        : Pass&lt;br /&gt;
Interface     : LAN / DMZ / PRI (selon besoin)&lt;br /&gt;
Protocol      : ICMP&lt;br /&gt;
ICMP Type     : Echo Request&lt;br /&gt;
Source        : LAN net / DMZ net / PRI net&lt;br /&gt;
Destination   : Any&lt;br /&gt;
Description   : Autoriser ping depuis [interface]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff3e0; border:1px solid #ffb74d; padding:10px; border-radius:8px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#e65100;&amp;quot;&amp;gt;⚠ IMPORTANT :&amp;lt;/b&amp;gt; Les règles de pare-feu doivent être configurées interface par interface (LAN, DMZ, PRI).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Schéma des règles de pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────────────────────────────────────────────┐&lt;br /&gt;
│                   pfSense Firewall                  │&lt;br /&gt;
├─────────────────────────────────────────────────────┤&lt;br /&gt;
│                                                     │&lt;br /&gt;
│  LAN Rules    : ✓ Ping  ✓ HTTP  ✓ HTTPS            │&lt;br /&gt;
│  DMZ Rules    : ✓ Ping  ✓ HTTP  ✓ HTTPS            │&lt;br /&gt;
│  PRI Rules    : ✓ Ping  ✗ Accès limité             │&lt;br /&gt;
│  WAN Rules    : ✗ Bloqué par défaut                │&lt;br /&gt;
│                                                     │&lt;br /&gt;
└─────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sauvegarder et appliquer les changements après chaque création de règle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Vérification et Tests&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3e5f5; border:1px solid #ce93d8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Vérification du bon fonctionnement de pfSense&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#6a1b9a;&amp;quot;&amp;gt;Test de connectivité&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Depuis une machine cliente (LAN, DMZ ou PRI), vérifier :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Connectivité locale&amp;lt;/b&amp;gt; : Ping vers la passerelle pfSense&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 192.168.30.254&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Connectivité Internet&amp;lt;/b&amp;gt; : Ping vers un serveur externe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping 8.8.8.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Résolution DNS&amp;lt;/b&amp;gt; : Ping vers un nom de domaine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ping google.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#6a1b9a;&amp;quot;&amp;gt;Vérification des services&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que les services suivants fonctionnent correctement :&lt;br /&gt;
&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Interface web&amp;lt;/b&amp;gt; accessible depuis le réseau LAN&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;DHCP Relay&amp;lt;/b&amp;gt; attribue correctement les adresses IP&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;NAT&amp;lt;/b&amp;gt; permet l&#039;accès à Internet&lt;br /&gt;
* ✓ &amp;lt;b&amp;gt;Règles de pare-feu&amp;lt;/b&amp;gt; autorisent/bloquent le trafic selon la configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#4a148c;&amp;quot;&amp;gt;Remarques Finales&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3e5f5; border:1px solid #ce93d8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Cette configuration pfSense remplace efficacement un firewall iptables traditionnel en offrant une interface graphique intuitive et des fonctionnalités avancées de sécurité réseau. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Le système est maintenant opérationnel avec une architecture multi-zones sécurisée (WAN, LAN, DMZ, PRI). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
N&#039;oubliez pas de sauvegarder régulièrement votre configuration pfSense via &amp;lt;b&amp;gt;Diagnostics → Backup &amp;amp; Restore&amp;lt;/b&amp;gt;.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=135</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Accueil&amp;diff=135"/>
		<updated>2026-02-23T16:58:37Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Salle machine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Salle machine =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! L&#039;architecture !! Les services&lt;br /&gt;
|- valign=top&lt;br /&gt;
| align=left |&lt;br /&gt;
* Les zones :&lt;br /&gt;
** [[MGMT]]&lt;br /&gt;
** [[VM]]&lt;br /&gt;
** [[LAN]]&lt;br /&gt;
** [[MyDIL]]&lt;br /&gt;
** [[WAN]]&lt;br /&gt;
* Les serveurs : [[Serveurs]]&lt;br /&gt;
* Les switchs : [[Switchs]]&lt;br /&gt;
| align=left |&lt;br /&gt;
* Firewalling&lt;br /&gt;
** [[Iptables]]&lt;br /&gt;
** [[Pfsense]]&lt;br /&gt;
* [[DHCP]]&lt;br /&gt;
* [[DNS]]&lt;br /&gt;
* [[Proxy SSH]]&lt;br /&gt;
* [[Apache]]&lt;br /&gt;
* [[Reverse proxy HTTP/S|Reverse proxy HTTP/S]]&lt;br /&gt;
* [[Base de données]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= BTS SIO =&lt;br /&gt;
== Épreuves obligatoires ==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! épreuves !! Intitulé !! unités !! coeff !! forme&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E1 &lt;br /&gt;
|align=left| Culture générale et expression&lt;br /&gt;
|align=center| U1 &lt;br /&gt;
|align=center| 2&lt;br /&gt;
|align=center| 4h écrite&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E2&lt;br /&gt;
|align=left| Expression et communication en langue anglaise&lt;br /&gt;
|align=center| U2 &lt;br /&gt;
|align=center| 2&lt;br /&gt;
|align=left| &lt;br /&gt;
*2h écrite &lt;br /&gt;
*20 min. orale&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E3&lt;br /&gt;
|align=left| Mathématiques pour l’informatique (partie algo)&lt;br /&gt;
|align=center| U2 &lt;br /&gt;
|align=center| 3&lt;br /&gt;
|align=left| &lt;br /&gt;
*30min. écrite&lt;br /&gt;
*30min. pratique&lt;br /&gt;
*20min. orale&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E4&lt;br /&gt;
|align=left| Culture économique, managériale et juridique pour l’informatique&lt;br /&gt;
|align=center| U3 &lt;br /&gt;
|align=center| 3&lt;br /&gt;
|align=middle| &lt;br /&gt;
4h écrite&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E5&lt;br /&gt;
|align=left| Support et mise à disposition des services informatiques&lt;br /&gt;
|align=center| U4 &lt;br /&gt;
|align=center| 4&lt;br /&gt;
|align=middle| &lt;br /&gt;
40min. orale&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| [[ep_e6 | E6]]&lt;br /&gt;
|align=left| &lt;br /&gt;
SISR &amp;amp;rarr; Administration des systèmes et réseaux&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
SLAM &amp;amp;rarr; Conception et développement d’applications&lt;br /&gt;
|align=center| U5 &lt;br /&gt;
|align=center| 4&lt;br /&gt;
|align=left| &lt;br /&gt;
*30min. préparation&lt;br /&gt;
*20min. exposé&lt;br /&gt;
*1h réalisation&lt;br /&gt;
*20min. questions&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| E7&lt;br /&gt;
|align=left| Cybersécurité des services informatiques&lt;br /&gt;
|align=center| U6 &lt;br /&gt;
|align=center| 4&lt;br /&gt;
|align=middle| 4h papier&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Épreuves facultatives ==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! épreuves !! Intitulé !! unités !! forme&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| UF1&lt;br /&gt;
|align=left| Langue vivante 2&lt;br /&gt;
|align=center| UF12 &lt;br /&gt;
|align=left| &lt;br /&gt;
*20min. préparation&lt;br /&gt;
*20min. orale&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| UF2&lt;br /&gt;
|align=left| Mathématiques approfondies&lt;br /&gt;
|align=center| UF2 &lt;br /&gt;
|align=middle| 2h écrite&lt;br /&gt;
|-valign=middle&lt;br /&gt;
|align=center| UF23&lt;br /&gt;
|align=left| Parcours de certification complémentaire&lt;br /&gt;
|align=center| UF3 &lt;br /&gt;
|align=middle| 20min. orale&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=134</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=134"/>
		<updated>2026-02-23T16:41:36Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Ouverture du port 80 sur le Load Balancer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-tools-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-filesystem-2.4.57-5.el9.noarch&lt;br /&gt;
mod_ssl-2.4.57-5.el9.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l&#039;écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=4))&lt;br /&gt;
LISTEN 0      511          0.0.0.0:443        0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=6))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports 80 (HTTP) et 443 (HTTPS) doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de chiffrer les échanges entre client et serveur, de garantir l&#039;intégrité des données et d&#039;authentifier le serveur.&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d&#039;un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour activer HTTPS, il est nécessaire de générer un certificat SSL/TLS.  &lt;br /&gt;
Dans un environnement de test, un certificat auto-signé suffit.&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL valide pour 365 jours :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant indiquer à Apache l&#039;emplacement du certificat et de la clé privée.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Apache pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification du fonctionnement HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès sécurisé au serveur web via HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre -k permet d&#039;ignorer l&#039;avertissement lié au certificat auto-signé.&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si la configuration est correcte, vous devez voir le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Load Balancing&amp;lt;/span&amp;gt; permet de répartir les requêtes clients sur plusieurs serveurs web, d&#039;améliorer les performances globales, de réduire la charge sur chaque serveur et d&#039;augmenter la disponibilité du service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; agit comme point d&#039;entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                ┌─────────────────────────────────────────────────────────────┐&lt;br /&gt;
                │                     ARCHITECTURE HAPROXY                    │&lt;br /&gt;
                └─────────────────────────────────────────────────────────────┘&lt;br /&gt;
                &lt;br /&gt;
                                         ┌──────────┐&lt;br /&gt;
                                         │  Client  │&lt;br /&gt;
                                         └─────┬────┘&lt;br /&gt;
                                               │&lt;br /&gt;
                                               │ Requêtes HTTP/HTTPS&lt;br /&gt;
                                               │&lt;br /&gt;
                                               ▼&lt;br /&gt;
                                        ┌──────────────┐&lt;br /&gt;
                                        │   HAProxy    │&lt;br /&gt;
                                        │ Load Balancer│&lt;br /&gt;
                                        │  (Port 80)   │&lt;br /&gt;
                                        └──────┬───────┘&lt;br /&gt;
                                               │&lt;br /&gt;
                                ┌──────────────┴──────────────┐&lt;br /&gt;
                                │                             │&lt;br /&gt;
                                │ Round Robin                 │&lt;br /&gt;
                                │                             │&lt;br /&gt;
                                ▼                             ▼&lt;br /&gt;
                        ┌───────────────┐             ┌───────────────┐&lt;br /&gt;
                        │ Serveur Web 1 │             │ Serveur Web 2 │&lt;br /&gt;
                        │    Apache     │             │    Apache     │&lt;br /&gt;
                        │  (Port 8080)  │             │  (Port 8080)  │&lt;br /&gt;
                        └───────────────┘             └───────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; puisse prendre le contrôle du &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 80&amp;lt;/span&amp;gt;, les serveurs Apache doivent être configurés pour écouter sur un autre port.  &lt;br /&gt;
Nous allons les faire écouter sur le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 8080&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache sur chaque serveur web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et modifier les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
*Avant:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Après:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la configuration ne contient pas d&#039;erreur de syntaxe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VirtualHost configuration:&lt;br /&gt;
*:8080                 web (/etc/httpd/conf/httpd.conf:42)&lt;br /&gt;
ServerRoot: &amp;quot;/etc/httpd&amp;quot;&lt;br /&gt;
Main DocumentRoot: &amp;quot;/var/www/html&amp;quot;&lt;br /&gt;
Main ErrorLog: &amp;quot;/etc/httpd/logs/error_log&amp;quot;&lt;br /&gt;
Syntax OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache en mode gracieux (sans couper les connexions en cours) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse communiquer avec les serveurs Apache, il est nécessaire d&#039;autoriser le trafic sur le port 8080.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements au pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HAProxy doit être installé sur le serveur qui jouera le rôle de répartiteur de charge.&lt;br /&gt;
&lt;br /&gt;
Installation du package HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de HAProxy définit comment les requêtes seront distribuées entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration principal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration utilisant l&#039;algorithme &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt; pour la répartition de charge :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;roundrobin&amp;lt;/span&amp;gt; distribue les requêtes alternativement entre les serveurs, assurant une répartition équilibrée de la charge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● haproxy.service - HAProxy Load Balancer&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:00:00 CET; 5s ago&lt;br /&gt;
 Main PID: 1234 (haproxy)&lt;br /&gt;
   Status: &amp;quot;Ready.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le système de répartition de charge fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès via l&#039;adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives pour observer le mécanisme de distribution.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web selon l&#039;algorithme &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt;.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; permet d&#039;assurer la continuité du service (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Haute Disponibilité&amp;lt;/span&amp;gt;), de basculer automatiquement vers un serveur secondaire en cas de panne, d&#039;utiliser une &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; partagée entre plusieurs serveurs (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;VIP&amp;lt;/span&amp;gt;) et de superviser l&#039;état du service HAProxy.&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
Un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;MASTER&#039;&#039;&#039;&amp;lt;/span&amp;gt; (actif), un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;BACKUP&#039;&#039;&#039;&amp;lt;/span&amp;gt; (passif). Si le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; tombe, le &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; récupère automatiquement l&#039;IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived doit être installé sur les deux serveurs qui assureront la haute disponibilité (MASTER et BACKUP).&lt;br /&gt;
&lt;br /&gt;
Installation du package Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; sera le serveur actif qui portera l&#039;&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; en temps normal.&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer le service Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; reste en veille et ne prendra le relais qu&#039;en cas de défaillance du serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;adresse IP virtuelle est bien active sur le serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER, afficher les adresses IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.252/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP physique du serveur et l&#039;adresse IP virtuelle 192.168.10.250 doivent apparaître sur l&#039;interface réseau.&lt;br /&gt;
&lt;br /&gt;
Test du mécanisme de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou stopper le service Keepalived&lt;br /&gt;
2. Sur le serveur BACKUP, exécuter la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:57 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.251/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;synchronisation&amp;lt;/span&amp;gt; permet de maintenir les mêmes fichiers sur plusieurs serveurs, d&#039;assurer la cohérence des données et de faciliter la haute disponibilité.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Lsyncd&amp;lt;/span&amp;gt; est un outil de synchronisation temps réel basé sur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;inotify&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;rsync&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Installation du package lsyncd :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour permettre la synchronisation automatique sans saisie de mot de passe, il est nécessaire de configurer l&#039;authentification par &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Générer les &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt; sur chaque serveur et les échanger.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 1, générer la clé et la copier vers le serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 2, générer la clé et la copier vers le serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de lsyncd définit les répertoires à synchroniser et les serveurs cibles.&lt;br /&gt;
&lt;br /&gt;
Créer le répertoire de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer le fichier de configuration pour synchroniser le répertoire /var/www/html/ :&lt;br /&gt;
&lt;br /&gt;
*Remarque: adapter l&#039;adresse IP cible en fonction du serveur où vous créez la configuration.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de service systemd pour adapter les permissions et le chemin de configuration.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants : &lt;br /&gt;
*User=rootpour donner les droits nécessaires &lt;br /&gt;
*ExecStartpour indiquer le bon chemin vers le fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
Configuration finale :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger la configuration systemd pour prendre en compte les modifications :&lt;br /&gt;
&lt;br /&gt;
Sur les deux serveurs, exécuter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service au démarrage sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Important: démarrer le service uniquement sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;).  &lt;br /&gt;
Le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;) activera automatiquement le service lors d&#039;une bascule.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; gère automatiquement le démarrage et l&#039;arrêt de &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; lors des basculements, il faut créer des &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;scripts de notification&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Créer deux scripts bash dans le répertoire /etc/keepalived/ sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;(`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;(`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre les scripts exécutables :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification de l&#039;état de synchronisation.&lt;br /&gt;
&lt;br /&gt;
Ce script permet à Keepalived de surveiller l&#039;état de lsyncd.&lt;br /&gt;
&lt;br /&gt;
Créer le fichier /usr/local/bin/check_lsyncd_sync.sh :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre le script exécutable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /usr/local/bin/check_lsyncd_sync.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration de Keepalived pour intégrer les scripts de notification et de vérification :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplacer le contenu par la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Keepalived pour appliquer les changements :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; est actif uniquement sur le serveur maître.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;), vérifier l&#039;état du service :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:05:00 CET; 10s ago&lt;br /&gt;
 Main PID: 5678 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;), vérifier que le service est bien arrêté :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:05:00 CET; 2min ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester le mécanisme de synchronisation automatique en temps réel.&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la modification a été automatiquement synchronisée sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu doit être identique sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test du basculement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Simuler une panne en éteignant le serveur maître, puis vérifier que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; démarre automatiquement sur l&#039;esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:10:00 CET; 5s ago&lt;br /&gt;
 Main PID: 5890 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur qui est maintenant devenu maître (ancien esclave) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer l&#039;ancien serveur maître et vérifier que la synchronisation s&#039;effectue dans le bon sens :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu modifié sur l&#039;ancien esclave doit être synchronisé vers le serveur qui redémarre.&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut du service lsyncd sur l&#039;ancien serveur maître (qui redevient maître) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:12:00 CET; 5s ago&lt;br /&gt;
 Main PID: 6012 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur qui est redevenu esclave (BACKUP) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:12:00 CET; 10s ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Votre infrastructure est maintenant complète : serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Apache&amp;lt;/span&amp;gt; avec &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HTTPS&amp;lt;/span&amp;gt;, répartition de charge (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt;), haute disponibilité (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt;) et synchronisation automatique des fichiers (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt;) sont opérationnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=133</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=133"/>
		<updated>2026-02-22T16:52:15Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Principe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-tools-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-filesystem-2.4.57-5.el9.noarch&lt;br /&gt;
mod_ssl-2.4.57-5.el9.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l&#039;écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=4))&lt;br /&gt;
LISTEN 0      511          0.0.0.0:443        0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=6))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports 80 (HTTP) et 443 (HTTPS) doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de chiffrer les échanges entre client et serveur, de garantir l&#039;intégrité des données et d&#039;authentifier le serveur.&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d&#039;un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour activer HTTPS, il est nécessaire de générer un certificat SSL/TLS.  &lt;br /&gt;
Dans un environnement de test, un certificat auto-signé suffit.&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL valide pour 365 jours :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant indiquer à Apache l&#039;emplacement du certificat et de la clé privée.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Apache pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification du fonctionnement HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès sécurisé au serveur web via HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre -k permet d&#039;ignorer l&#039;avertissement lié au certificat auto-signé.&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si la configuration est correcte, vous devez voir le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Load Balancing&amp;lt;/span&amp;gt; permet de répartir les requêtes clients sur plusieurs serveurs web, d&#039;améliorer les performances globales, de réduire la charge sur chaque serveur et d&#039;augmenter la disponibilité du service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; agit comme point d&#039;entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                ┌─────────────────────────────────────────────────────────────┐&lt;br /&gt;
                │                     ARCHITECTURE HAPROXY                    │&lt;br /&gt;
                └─────────────────────────────────────────────────────────────┘&lt;br /&gt;
                &lt;br /&gt;
                                         ┌──────────┐&lt;br /&gt;
                                         │  Client  │&lt;br /&gt;
                                         └─────┬────┘&lt;br /&gt;
                                               │&lt;br /&gt;
                                               │ Requêtes HTTP/HTTPS&lt;br /&gt;
                                               │&lt;br /&gt;
                                               ▼&lt;br /&gt;
                                        ┌──────────────┐&lt;br /&gt;
                                        │   HAProxy    │&lt;br /&gt;
                                        │ Load Balancer│&lt;br /&gt;
                                        │  (Port 80)   │&lt;br /&gt;
                                        └──────┬───────┘&lt;br /&gt;
                                               │&lt;br /&gt;
                                ┌──────────────┴──────────────┐&lt;br /&gt;
                                │                             │&lt;br /&gt;
                                │ Round Robin                 │&lt;br /&gt;
                                │                             │&lt;br /&gt;
                                ▼                             ▼&lt;br /&gt;
                        ┌───────────────┐             ┌───────────────┐&lt;br /&gt;
                        │ Serveur Web 1 │             │ Serveur Web 2 │&lt;br /&gt;
                        │    Apache     │             │    Apache     │&lt;br /&gt;
                        │  (Port 8080)  │             │  (Port 8080)  │&lt;br /&gt;
                        └───────────────┘             └───────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; puisse prendre le contrôle du &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 80&amp;lt;/span&amp;gt;, les serveurs Apache doivent être configurés pour écouter sur un autre port.  &lt;br /&gt;
Nous allons les faire écouter sur le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 8080&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache sur chaque serveur web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et modifier les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
*Avant:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Après:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la configuration ne contient pas d&#039;erreur de syntaxe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VirtualHost configuration:&lt;br /&gt;
*:8080                 web (/etc/httpd/conf/httpd.conf:42)&lt;br /&gt;
ServerRoot: &amp;quot;/etc/httpd&amp;quot;&lt;br /&gt;
Main DocumentRoot: &amp;quot;/var/www/html&amp;quot;&lt;br /&gt;
Main ErrorLog: &amp;quot;/etc/httpd/logs/error_log&amp;quot;&lt;br /&gt;
Syntax OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache en mode gracieux (sans couper les connexions en cours) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse communiquer avec les serveurs Apache, il est nécessaire d&#039;autoriser le trafic sur le port 8080.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements au pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HAProxy doit être installé sur le serveur qui jouera le rôle de répartiteur de charge.&lt;br /&gt;
&lt;br /&gt;
Installation du package HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de HAProxy définit comment les requêtes seront distribuées entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration principal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration utilisant l&#039;algorithme &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt; pour la répartition de charge :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;roundrobin&amp;lt;/span&amp;gt; distribue les requêtes alternativement entre les serveurs, assurant une répartition équilibrée de la charge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● haproxy.service - HAProxy Load Balancer&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:00:00 CET; 5s ago&lt;br /&gt;
 Main PID: 1234 (haproxy)&lt;br /&gt;
   Status: &amp;quot;Ready.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que les clients puissent accéder au service via HAProxy, le port 80 doit être ouvert sur le serveur Load Balancer.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration du pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la règle d&#039;autorisation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le système de répartition de charge fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès via l&#039;adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives pour observer le mécanisme de distribution.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web selon l&#039;algorithme &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt;.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; permet d&#039;assurer la continuité du service (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Haute Disponibilité&amp;lt;/span&amp;gt;), de basculer automatiquement vers un serveur secondaire en cas de panne, d&#039;utiliser une &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; partagée entre plusieurs serveurs (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;VIP&amp;lt;/span&amp;gt;) et de superviser l&#039;état du service HAProxy.&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
Un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;MASTER&#039;&#039;&#039;&amp;lt;/span&amp;gt; (actif), un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;BACKUP&#039;&#039;&#039;&amp;lt;/span&amp;gt; (passif). Si le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; tombe, le &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; récupère automatiquement l&#039;IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived doit être installé sur les deux serveurs qui assureront la haute disponibilité (MASTER et BACKUP).&lt;br /&gt;
&lt;br /&gt;
Installation du package Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; sera le serveur actif qui portera l&#039;&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; en temps normal.&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer le service Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; reste en veille et ne prendra le relais qu&#039;en cas de défaillance du serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;adresse IP virtuelle est bien active sur le serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER, afficher les adresses IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.252/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP physique du serveur et l&#039;adresse IP virtuelle 192.168.10.250 doivent apparaître sur l&#039;interface réseau.&lt;br /&gt;
&lt;br /&gt;
Test du mécanisme de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou stopper le service Keepalived&lt;br /&gt;
2. Sur le serveur BACKUP, exécuter la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:57 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.251/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;synchronisation&amp;lt;/span&amp;gt; permet de maintenir les mêmes fichiers sur plusieurs serveurs, d&#039;assurer la cohérence des données et de faciliter la haute disponibilité.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Lsyncd&amp;lt;/span&amp;gt; est un outil de synchronisation temps réel basé sur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;inotify&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;rsync&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Installation du package lsyncd :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour permettre la synchronisation automatique sans saisie de mot de passe, il est nécessaire de configurer l&#039;authentification par &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Générer les &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt; sur chaque serveur et les échanger.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 1, générer la clé et la copier vers le serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 2, générer la clé et la copier vers le serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de lsyncd définit les répertoires à synchroniser et les serveurs cibles.&lt;br /&gt;
&lt;br /&gt;
Créer le répertoire de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer le fichier de configuration pour synchroniser le répertoire /var/www/html/ :&lt;br /&gt;
&lt;br /&gt;
*Remarque: adapter l&#039;adresse IP cible en fonction du serveur où vous créez la configuration.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de service systemd pour adapter les permissions et le chemin de configuration.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants : &lt;br /&gt;
*User=rootpour donner les droits nécessaires &lt;br /&gt;
*ExecStartpour indiquer le bon chemin vers le fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
Configuration finale :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger la configuration systemd pour prendre en compte les modifications :&lt;br /&gt;
&lt;br /&gt;
Sur les deux serveurs, exécuter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service au démarrage sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Important: démarrer le service uniquement sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;).  &lt;br /&gt;
Le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;) activera automatiquement le service lors d&#039;une bascule.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; gère automatiquement le démarrage et l&#039;arrêt de &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; lors des basculements, il faut créer des &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;scripts de notification&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Créer deux scripts bash dans le répertoire /etc/keepalived/ sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;(`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;(`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre les scripts exécutables :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification de l&#039;état de synchronisation.&lt;br /&gt;
&lt;br /&gt;
Ce script permet à Keepalived de surveiller l&#039;état de lsyncd.&lt;br /&gt;
&lt;br /&gt;
Créer le fichier /usr/local/bin/check_lsyncd_sync.sh :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre le script exécutable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /usr/local/bin/check_lsyncd_sync.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration de Keepalived pour intégrer les scripts de notification et de vérification :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplacer le contenu par la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Keepalived pour appliquer les changements :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; est actif uniquement sur le serveur maître.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;), vérifier l&#039;état du service :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:05:00 CET; 10s ago&lt;br /&gt;
 Main PID: 5678 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;), vérifier que le service est bien arrêté :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:05:00 CET; 2min ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester le mécanisme de synchronisation automatique en temps réel.&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la modification a été automatiquement synchronisée sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu doit être identique sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test du basculement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Simuler une panne en éteignant le serveur maître, puis vérifier que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; démarre automatiquement sur l&#039;esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:10:00 CET; 5s ago&lt;br /&gt;
 Main PID: 5890 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur qui est maintenant devenu maître (ancien esclave) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer l&#039;ancien serveur maître et vérifier que la synchronisation s&#039;effectue dans le bon sens :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu modifié sur l&#039;ancien esclave doit être synchronisé vers le serveur qui redémarre.&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut du service lsyncd sur l&#039;ancien serveur maître (qui redevient maître) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:12:00 CET; 5s ago&lt;br /&gt;
 Main PID: 6012 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur qui est redevenu esclave (BACKUP) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:12:00 CET; 10s ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Votre infrastructure est maintenant complète : serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Apache&amp;lt;/span&amp;gt; avec &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HTTPS&amp;lt;/span&amp;gt;, répartition de charge (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt;), haute disponibilité (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt;) et synchronisation automatique des fichiers (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt;) sont opérationnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=132</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=132"/>
		<updated>2026-02-22T16:52:02Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Principe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-tools-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-filesystem-2.4.57-5.el9.noarch&lt;br /&gt;
mod_ssl-2.4.57-5.el9.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l&#039;écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=4))&lt;br /&gt;
LISTEN 0      511          0.0.0.0:443        0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=6))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports 80 (HTTP) et 443 (HTTPS) doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de chiffrer les échanges entre client et serveur, de garantir l&#039;intégrité des données et d&#039;authentifier le serveur.&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d&#039;un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour activer HTTPS, il est nécessaire de générer un certificat SSL/TLS.  &lt;br /&gt;
Dans un environnement de test, un certificat auto-signé suffit.&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL valide pour 365 jours :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant indiquer à Apache l&#039;emplacement du certificat et de la clé privée.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Apache pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification du fonctionnement HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès sécurisé au serveur web via HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre -k permet d&#039;ignorer l&#039;avertissement lié au certificat auto-signé.&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si la configuration est correcte, vous devez voir le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Load Balancing&amp;lt;/span&amp;gt; permet de répartir les requêtes clients sur plusieurs serveurs web, d&#039;améliorer les performances globales, de réduire la charge sur chaque serveur et d&#039;augmenter la disponibilité du service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; agit comme point d&#039;entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                ┌─────────────────────────────────────────────────────────────┐&lt;br /&gt;
                │                     ARCHITECTURE HAPROXY                     │&lt;br /&gt;
                └─────────────────────────────────────────────────────────────┘&lt;br /&gt;
                &lt;br /&gt;
                                         ┌──────────┐&lt;br /&gt;
                                         │  Client  │&lt;br /&gt;
                                         └─────┬────┘&lt;br /&gt;
                                               │&lt;br /&gt;
                                               │ Requêtes HTTP/HTTPS&lt;br /&gt;
                                               │&lt;br /&gt;
                                               ▼&lt;br /&gt;
                                        ┌──────────────┐&lt;br /&gt;
                                        │   HAProxy    │&lt;br /&gt;
                                        │ Load Balancer│&lt;br /&gt;
                                        │  (Port 80)   │&lt;br /&gt;
                                        └──────┬───────┘&lt;br /&gt;
                                               │&lt;br /&gt;
                                ┌──────────────┴──────────────┐&lt;br /&gt;
                                │                             │&lt;br /&gt;
                                │ Round Robin                 │&lt;br /&gt;
                                │                             │&lt;br /&gt;
                                ▼                             ▼&lt;br /&gt;
                        ┌───────────────┐             ┌───────────────┐&lt;br /&gt;
                        │ Serveur Web 1 │             │ Serveur Web 2 │&lt;br /&gt;
                        │    Apache     │             │    Apache     │&lt;br /&gt;
                        │  (Port 8080)  │             │  (Port 8080)  │&lt;br /&gt;
                        └───────────────┘             └───────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; puisse prendre le contrôle du &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 80&amp;lt;/span&amp;gt;, les serveurs Apache doivent être configurés pour écouter sur un autre port.  &lt;br /&gt;
Nous allons les faire écouter sur le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 8080&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache sur chaque serveur web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et modifier les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
*Avant:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Après:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la configuration ne contient pas d&#039;erreur de syntaxe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VirtualHost configuration:&lt;br /&gt;
*:8080                 web (/etc/httpd/conf/httpd.conf:42)&lt;br /&gt;
ServerRoot: &amp;quot;/etc/httpd&amp;quot;&lt;br /&gt;
Main DocumentRoot: &amp;quot;/var/www/html&amp;quot;&lt;br /&gt;
Main ErrorLog: &amp;quot;/etc/httpd/logs/error_log&amp;quot;&lt;br /&gt;
Syntax OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache en mode gracieux (sans couper les connexions en cours) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse communiquer avec les serveurs Apache, il est nécessaire d&#039;autoriser le trafic sur le port 8080.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements au pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HAProxy doit être installé sur le serveur qui jouera le rôle de répartiteur de charge.&lt;br /&gt;
&lt;br /&gt;
Installation du package HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de HAProxy définit comment les requêtes seront distribuées entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration principal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration utilisant l&#039;algorithme &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt; pour la répartition de charge :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;roundrobin&amp;lt;/span&amp;gt; distribue les requêtes alternativement entre les serveurs, assurant une répartition équilibrée de la charge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● haproxy.service - HAProxy Load Balancer&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:00:00 CET; 5s ago&lt;br /&gt;
 Main PID: 1234 (haproxy)&lt;br /&gt;
   Status: &amp;quot;Ready.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que les clients puissent accéder au service via HAProxy, le port 80 doit être ouvert sur le serveur Load Balancer.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration du pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la règle d&#039;autorisation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le système de répartition de charge fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès via l&#039;adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives pour observer le mécanisme de distribution.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web selon l&#039;algorithme &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt;.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; permet d&#039;assurer la continuité du service (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Haute Disponibilité&amp;lt;/span&amp;gt;), de basculer automatiquement vers un serveur secondaire en cas de panne, d&#039;utiliser une &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; partagée entre plusieurs serveurs (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;VIP&amp;lt;/span&amp;gt;) et de superviser l&#039;état du service HAProxy.&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
Un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;MASTER&#039;&#039;&#039;&amp;lt;/span&amp;gt; (actif), un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;BACKUP&#039;&#039;&#039;&amp;lt;/span&amp;gt; (passif). Si le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; tombe, le &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; récupère automatiquement l&#039;IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived doit être installé sur les deux serveurs qui assureront la haute disponibilité (MASTER et BACKUP).&lt;br /&gt;
&lt;br /&gt;
Installation du package Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; sera le serveur actif qui portera l&#039;&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; en temps normal.&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer le service Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; reste en veille et ne prendra le relais qu&#039;en cas de défaillance du serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;adresse IP virtuelle est bien active sur le serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER, afficher les adresses IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.252/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP physique du serveur et l&#039;adresse IP virtuelle 192.168.10.250 doivent apparaître sur l&#039;interface réseau.&lt;br /&gt;
&lt;br /&gt;
Test du mécanisme de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou stopper le service Keepalived&lt;br /&gt;
2. Sur le serveur BACKUP, exécuter la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:57 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.251/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;synchronisation&amp;lt;/span&amp;gt; permet de maintenir les mêmes fichiers sur plusieurs serveurs, d&#039;assurer la cohérence des données et de faciliter la haute disponibilité.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Lsyncd&amp;lt;/span&amp;gt; est un outil de synchronisation temps réel basé sur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;inotify&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;rsync&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Installation du package lsyncd :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour permettre la synchronisation automatique sans saisie de mot de passe, il est nécessaire de configurer l&#039;authentification par &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Générer les &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt; sur chaque serveur et les échanger.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 1, générer la clé et la copier vers le serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 2, générer la clé et la copier vers le serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de lsyncd définit les répertoires à synchroniser et les serveurs cibles.&lt;br /&gt;
&lt;br /&gt;
Créer le répertoire de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer le fichier de configuration pour synchroniser le répertoire /var/www/html/ :&lt;br /&gt;
&lt;br /&gt;
*Remarque: adapter l&#039;adresse IP cible en fonction du serveur où vous créez la configuration.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de service systemd pour adapter les permissions et le chemin de configuration.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants : &lt;br /&gt;
*User=rootpour donner les droits nécessaires &lt;br /&gt;
*ExecStartpour indiquer le bon chemin vers le fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
Configuration finale :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger la configuration systemd pour prendre en compte les modifications :&lt;br /&gt;
&lt;br /&gt;
Sur les deux serveurs, exécuter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service au démarrage sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Important: démarrer le service uniquement sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;).  &lt;br /&gt;
Le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;) activera automatiquement le service lors d&#039;une bascule.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; gère automatiquement le démarrage et l&#039;arrêt de &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; lors des basculements, il faut créer des &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;scripts de notification&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Créer deux scripts bash dans le répertoire /etc/keepalived/ sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;(`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;(`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre les scripts exécutables :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification de l&#039;état de synchronisation.&lt;br /&gt;
&lt;br /&gt;
Ce script permet à Keepalived de surveiller l&#039;état de lsyncd.&lt;br /&gt;
&lt;br /&gt;
Créer le fichier /usr/local/bin/check_lsyncd_sync.sh :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre le script exécutable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /usr/local/bin/check_lsyncd_sync.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration de Keepalived pour intégrer les scripts de notification et de vérification :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplacer le contenu par la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Keepalived pour appliquer les changements :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; est actif uniquement sur le serveur maître.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;), vérifier l&#039;état du service :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:05:00 CET; 10s ago&lt;br /&gt;
 Main PID: 5678 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;), vérifier que le service est bien arrêté :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:05:00 CET; 2min ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester le mécanisme de synchronisation automatique en temps réel.&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la modification a été automatiquement synchronisée sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu doit être identique sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test du basculement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Simuler une panne en éteignant le serveur maître, puis vérifier que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; démarre automatiquement sur l&#039;esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:10:00 CET; 5s ago&lt;br /&gt;
 Main PID: 5890 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur qui est maintenant devenu maître (ancien esclave) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer l&#039;ancien serveur maître et vérifier que la synchronisation s&#039;effectue dans le bon sens :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu modifié sur l&#039;ancien esclave doit être synchronisé vers le serveur qui redémarre.&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut du service lsyncd sur l&#039;ancien serveur maître (qui redevient maître) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:12:00 CET; 5s ago&lt;br /&gt;
 Main PID: 6012 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur qui est redevenu esclave (BACKUP) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:12:00 CET; 10s ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Votre infrastructure est maintenant complète : serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Apache&amp;lt;/span&amp;gt; avec &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HTTPS&amp;lt;/span&amp;gt;, répartition de charge (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt;), haute disponibilité (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt;) et synchronisation automatique des fichiers (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt;) sont opérationnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=131</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=131"/>
		<updated>2026-02-22T16:50:40Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Principe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-tools-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-filesystem-2.4.57-5.el9.noarch&lt;br /&gt;
mod_ssl-2.4.57-5.el9.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l&#039;écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=4))&lt;br /&gt;
LISTEN 0      511          0.0.0.0:443        0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=6))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports 80 (HTTP) et 443 (HTTPS) doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de chiffrer les échanges entre client et serveur, de garantir l&#039;intégrité des données et d&#039;authentifier le serveur.&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d&#039;un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour activer HTTPS, il est nécessaire de générer un certificat SSL/TLS.  &lt;br /&gt;
Dans un environnement de test, un certificat auto-signé suffit.&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL valide pour 365 jours :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant indiquer à Apache l&#039;emplacement du certificat et de la clé privée.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Apache pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification du fonctionnement HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès sécurisé au serveur web via HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre -k permet d&#039;ignorer l&#039;avertissement lié au certificat auto-signé.&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si la configuration est correcte, vous devez voir le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Load Balancing&amp;lt;/span&amp;gt; permet de répartir les requêtes clients sur plusieurs serveurs web, d&#039;améliorer les performances globales, de réduire la charge sur chaque serveur et d&#039;augmenter la disponibilité du service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; agit comme point d&#039;entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
┌─────────────────────────────────────────────────────────────┐&lt;br /&gt;
│                     ARCHITECTURE HAPROXY                     │&lt;br /&gt;
└─────────────────────────────────────────────────────────────┘&lt;br /&gt;
&lt;br /&gt;
                         ┌──────────┐&lt;br /&gt;
                         │  Client  │&lt;br /&gt;
                         └─────┬────┘&lt;br /&gt;
                               │&lt;br /&gt;
                               │ Requêtes HTTP/HTTPS&lt;br /&gt;
                               │&lt;br /&gt;
                               ▼&lt;br /&gt;
                        ┌──────────────┐&lt;br /&gt;
                        │   HAProxy    │&lt;br /&gt;
                        │ Load Balancer│&lt;br /&gt;
                        │  (Port 80)   │&lt;br /&gt;
                        └──────┬───────┘&lt;br /&gt;
                               │&lt;br /&gt;
                ┌──────────────┴──────────────┐&lt;br /&gt;
                │                             │&lt;br /&gt;
                │ Round Robin                 │&lt;br /&gt;
                │                             │&lt;br /&gt;
                ▼                             ▼&lt;br /&gt;
        ┌───────────────┐             ┌───────────────┐&lt;br /&gt;
        │ Serveur Web 1 │             │ Serveur Web 2 │&lt;br /&gt;
        │    Apache     │             │    Apache     │&lt;br /&gt;
        │  (Port 8080)  │             │  (Port 8080)  │&lt;br /&gt;
        └───────────────┘             └───────────────┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; puisse prendre le contrôle du &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 80&amp;lt;/span&amp;gt;, les serveurs Apache doivent être configurés pour écouter sur un autre port.  &lt;br /&gt;
Nous allons les faire écouter sur le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 8080&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache sur chaque serveur web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et modifier les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
*Avant:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Après:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la configuration ne contient pas d&#039;erreur de syntaxe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VirtualHost configuration:&lt;br /&gt;
*:8080                 web (/etc/httpd/conf/httpd.conf:42)&lt;br /&gt;
ServerRoot: &amp;quot;/etc/httpd&amp;quot;&lt;br /&gt;
Main DocumentRoot: &amp;quot;/var/www/html&amp;quot;&lt;br /&gt;
Main ErrorLog: &amp;quot;/etc/httpd/logs/error_log&amp;quot;&lt;br /&gt;
Syntax OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache en mode gracieux (sans couper les connexions en cours) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse communiquer avec les serveurs Apache, il est nécessaire d&#039;autoriser le trafic sur le port 8080.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements au pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HAProxy doit être installé sur le serveur qui jouera le rôle de répartiteur de charge.&lt;br /&gt;
&lt;br /&gt;
Installation du package HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de HAProxy définit comment les requêtes seront distribuées entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration principal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration utilisant l&#039;algorithme &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt; pour la répartition de charge :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;roundrobin&amp;lt;/span&amp;gt; distribue les requêtes alternativement entre les serveurs, assurant une répartition équilibrée de la charge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● haproxy.service - HAProxy Load Balancer&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:00:00 CET; 5s ago&lt;br /&gt;
 Main PID: 1234 (haproxy)&lt;br /&gt;
   Status: &amp;quot;Ready.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que les clients puissent accéder au service via HAProxy, le port 80 doit être ouvert sur le serveur Load Balancer.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration du pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la règle d&#039;autorisation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le système de répartition de charge fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès via l&#039;adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives pour observer le mécanisme de distribution.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web selon l&#039;algorithme &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt;.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; permet d&#039;assurer la continuité du service (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Haute Disponibilité&amp;lt;/span&amp;gt;), de basculer automatiquement vers un serveur secondaire en cas de panne, d&#039;utiliser une &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; partagée entre plusieurs serveurs (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;VIP&amp;lt;/span&amp;gt;) et de superviser l&#039;état du service HAProxy.&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
Un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;MASTER&#039;&#039;&#039;&amp;lt;/span&amp;gt; (actif), un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;BACKUP&#039;&#039;&#039;&amp;lt;/span&amp;gt; (passif). Si le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; tombe, le &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; récupère automatiquement l&#039;IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived doit être installé sur les deux serveurs qui assureront la haute disponibilité (MASTER et BACKUP).&lt;br /&gt;
&lt;br /&gt;
Installation du package Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; sera le serveur actif qui portera l&#039;&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; en temps normal.&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer le service Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; reste en veille et ne prendra le relais qu&#039;en cas de défaillance du serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;adresse IP virtuelle est bien active sur le serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER, afficher les adresses IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.252/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP physique du serveur et l&#039;adresse IP virtuelle 192.168.10.250 doivent apparaître sur l&#039;interface réseau.&lt;br /&gt;
&lt;br /&gt;
Test du mécanisme de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou stopper le service Keepalived&lt;br /&gt;
2. Sur le serveur BACKUP, exécuter la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:57 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.251/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;synchronisation&amp;lt;/span&amp;gt; permet de maintenir les mêmes fichiers sur plusieurs serveurs, d&#039;assurer la cohérence des données et de faciliter la haute disponibilité.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Lsyncd&amp;lt;/span&amp;gt; est un outil de synchronisation temps réel basé sur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;inotify&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;rsync&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Installation du package lsyncd :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour permettre la synchronisation automatique sans saisie de mot de passe, il est nécessaire de configurer l&#039;authentification par &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Générer les &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt; sur chaque serveur et les échanger.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 1, générer la clé et la copier vers le serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 2, générer la clé et la copier vers le serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de lsyncd définit les répertoires à synchroniser et les serveurs cibles.&lt;br /&gt;
&lt;br /&gt;
Créer le répertoire de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer le fichier de configuration pour synchroniser le répertoire /var/www/html/ :&lt;br /&gt;
&lt;br /&gt;
*Remarque: adapter l&#039;adresse IP cible en fonction du serveur où vous créez la configuration.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de service systemd pour adapter les permissions et le chemin de configuration.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants : &lt;br /&gt;
*User=rootpour donner les droits nécessaires &lt;br /&gt;
*ExecStartpour indiquer le bon chemin vers le fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
Configuration finale :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger la configuration systemd pour prendre en compte les modifications :&lt;br /&gt;
&lt;br /&gt;
Sur les deux serveurs, exécuter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service au démarrage sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Important: démarrer le service uniquement sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;).  &lt;br /&gt;
Le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;) activera automatiquement le service lors d&#039;une bascule.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; gère automatiquement le démarrage et l&#039;arrêt de &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; lors des basculements, il faut créer des &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;scripts de notification&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Créer deux scripts bash dans le répertoire /etc/keepalived/ sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;(`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;(`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre les scripts exécutables :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification de l&#039;état de synchronisation.&lt;br /&gt;
&lt;br /&gt;
Ce script permet à Keepalived de surveiller l&#039;état de lsyncd.&lt;br /&gt;
&lt;br /&gt;
Créer le fichier /usr/local/bin/check_lsyncd_sync.sh :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre le script exécutable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /usr/local/bin/check_lsyncd_sync.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration de Keepalived pour intégrer les scripts de notification et de vérification :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplacer le contenu par la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Keepalived pour appliquer les changements :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; est actif uniquement sur le serveur maître.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;), vérifier l&#039;état du service :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:05:00 CET; 10s ago&lt;br /&gt;
 Main PID: 5678 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;), vérifier que le service est bien arrêté :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:05:00 CET; 2min ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester le mécanisme de synchronisation automatique en temps réel.&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la modification a été automatiquement synchronisée sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu doit être identique sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test du basculement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Simuler une panne en éteignant le serveur maître, puis vérifier que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; démarre automatiquement sur l&#039;esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:10:00 CET; 5s ago&lt;br /&gt;
 Main PID: 5890 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur qui est maintenant devenu maître (ancien esclave) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer l&#039;ancien serveur maître et vérifier que la synchronisation s&#039;effectue dans le bon sens :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu modifié sur l&#039;ancien esclave doit être synchronisé vers le serveur qui redémarre.&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut du service lsyncd sur l&#039;ancien serveur maître (qui redevient maître) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:12:00 CET; 5s ago&lt;br /&gt;
 Main PID: 6012 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur qui est redevenu esclave (BACKUP) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:12:00 CET; 10s ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Votre infrastructure est maintenant complète : serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Apache&amp;lt;/span&amp;gt; avec &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HTTPS&amp;lt;/span&amp;gt;, répartition de charge (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt;), haute disponibilité (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt;) et synchronisation automatique des fichiers (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt;) sont opérationnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=130</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=130"/>
		<updated>2026-02-22T16:49:58Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Principe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-tools-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-filesystem-2.4.57-5.el9.noarch&lt;br /&gt;
mod_ssl-2.4.57-5.el9.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l&#039;écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=4))&lt;br /&gt;
LISTEN 0      511          0.0.0.0:443        0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=6))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports 80 (HTTP) et 443 (HTTPS) doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de chiffrer les échanges entre client et serveur, de garantir l&#039;intégrité des données et d&#039;authentifier le serveur.&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d&#039;un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour activer HTTPS, il est nécessaire de générer un certificat SSL/TLS.  &lt;br /&gt;
Dans un environnement de test, un certificat auto-signé suffit.&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL valide pour 365 jours :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant indiquer à Apache l&#039;emplacement du certificat et de la clé privée.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Apache pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification du fonctionnement HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès sécurisé au serveur web via HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre -k permet d&#039;ignorer l&#039;avertissement lié au certificat auto-signé.&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si la configuration est correcte, vous devez voir le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Load Balancing&amp;lt;/span&amp;gt; permet de répartir les requêtes clients sur plusieurs serveurs web, d&#039;améliorer les performances globales, de réduire la charge sur chaque serveur et d&#039;augmenter la disponibilité du service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; agit comme point d&#039;entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
┌─────────────────────────────────────────────────────────────┐&lt;br /&gt;
│                     ARCHITECTURE HAPROXY                     │&lt;br /&gt;
└─────────────────────────────────────────────────────────────┘&lt;br /&gt;
&lt;br /&gt;
                         ┌──────────┐&lt;br /&gt;
                         │  Client  │&lt;br /&gt;
                         └─────┬────┘&lt;br /&gt;
                               │&lt;br /&gt;
                               │ Requêtes HTTP/HTTPS&lt;br /&gt;
                               │&lt;br /&gt;
                               ▼&lt;br /&gt;
                        ┌──────────────┐&lt;br /&gt;
                        │   HAProxy    │&lt;br /&gt;
                        │ Load Balancer│&lt;br /&gt;
                        │  (Port 80)   │&lt;br /&gt;
                        └──────┬───────┘&lt;br /&gt;
                               │&lt;br /&gt;
                ┌──────────────┴──────────────┐&lt;br /&gt;
                │                             │&lt;br /&gt;
                │ Round Robin                 │&lt;br /&gt;
                │                             │&lt;br /&gt;
                ▼                             ▼&lt;br /&gt;
        ┌───────────────┐             ┌───────────────┐&lt;br /&gt;
        │ Serveur Web 1 │             │ Serveur Web 2 │&lt;br /&gt;
        │    Apache     │             │    Apache     │&lt;br /&gt;
        │  (Port 8080)  │             │  (Port 8080)  │&lt;br /&gt;
        └───────────────┘             └───────────────┘&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; puisse prendre le contrôle du &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 80&amp;lt;/span&amp;gt;, les serveurs Apache doivent être configurés pour écouter sur un autre port.  &lt;br /&gt;
Nous allons les faire écouter sur le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 8080&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache sur chaque serveur web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et modifier les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
*Avant:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Après:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la configuration ne contient pas d&#039;erreur de syntaxe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VirtualHost configuration:&lt;br /&gt;
*:8080                 web (/etc/httpd/conf/httpd.conf:42)&lt;br /&gt;
ServerRoot: &amp;quot;/etc/httpd&amp;quot;&lt;br /&gt;
Main DocumentRoot: &amp;quot;/var/www/html&amp;quot;&lt;br /&gt;
Main ErrorLog: &amp;quot;/etc/httpd/logs/error_log&amp;quot;&lt;br /&gt;
Syntax OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache en mode gracieux (sans couper les connexions en cours) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse communiquer avec les serveurs Apache, il est nécessaire d&#039;autoriser le trafic sur le port 8080.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements au pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HAProxy doit être installé sur le serveur qui jouera le rôle de répartiteur de charge.&lt;br /&gt;
&lt;br /&gt;
Installation du package HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de HAProxy définit comment les requêtes seront distribuées entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration principal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration utilisant l&#039;algorithme &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt; pour la répartition de charge :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;roundrobin&amp;lt;/span&amp;gt; distribue les requêtes alternativement entre les serveurs, assurant une répartition équilibrée de la charge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● haproxy.service - HAProxy Load Balancer&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:00:00 CET; 5s ago&lt;br /&gt;
 Main PID: 1234 (haproxy)&lt;br /&gt;
   Status: &amp;quot;Ready.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que les clients puissent accéder au service via HAProxy, le port 80 doit être ouvert sur le serveur Load Balancer.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration du pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la règle d&#039;autorisation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le système de répartition de charge fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès via l&#039;adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives pour observer le mécanisme de distribution.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web selon l&#039;algorithme &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt;.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; permet d&#039;assurer la continuité du service (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Haute Disponibilité&amp;lt;/span&amp;gt;), de basculer automatiquement vers un serveur secondaire en cas de panne, d&#039;utiliser une &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; partagée entre plusieurs serveurs (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;VIP&amp;lt;/span&amp;gt;) et de superviser l&#039;état du service HAProxy.&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
Un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;MASTER&#039;&#039;&#039;&amp;lt;/span&amp;gt; (actif), un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;BACKUP&#039;&#039;&#039;&amp;lt;/span&amp;gt; (passif). Si le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; tombe, le &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; récupère automatiquement l&#039;IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived doit être installé sur les deux serveurs qui assureront la haute disponibilité (MASTER et BACKUP).&lt;br /&gt;
&lt;br /&gt;
Installation du package Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; sera le serveur actif qui portera l&#039;&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; en temps normal.&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer le service Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; reste en veille et ne prendra le relais qu&#039;en cas de défaillance du serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;adresse IP virtuelle est bien active sur le serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER, afficher les adresses IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.252/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP physique du serveur et l&#039;adresse IP virtuelle 192.168.10.250 doivent apparaître sur l&#039;interface réseau.&lt;br /&gt;
&lt;br /&gt;
Test du mécanisme de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou stopper le service Keepalived&lt;br /&gt;
2. Sur le serveur BACKUP, exécuter la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:57 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.251/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;synchronisation&amp;lt;/span&amp;gt; permet de maintenir les mêmes fichiers sur plusieurs serveurs, d&#039;assurer la cohérence des données et de faciliter la haute disponibilité.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Lsyncd&amp;lt;/span&amp;gt; est un outil de synchronisation temps réel basé sur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;inotify&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;rsync&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Installation du package lsyncd :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour permettre la synchronisation automatique sans saisie de mot de passe, il est nécessaire de configurer l&#039;authentification par &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Générer les &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt; sur chaque serveur et les échanger.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 1, générer la clé et la copier vers le serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 2, générer la clé et la copier vers le serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de lsyncd définit les répertoires à synchroniser et les serveurs cibles.&lt;br /&gt;
&lt;br /&gt;
Créer le répertoire de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer le fichier de configuration pour synchroniser le répertoire /var/www/html/ :&lt;br /&gt;
&lt;br /&gt;
*Remarque: adapter l&#039;adresse IP cible en fonction du serveur où vous créez la configuration.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de service systemd pour adapter les permissions et le chemin de configuration.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants : &lt;br /&gt;
*User=rootpour donner les droits nécessaires &lt;br /&gt;
*ExecStartpour indiquer le bon chemin vers le fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
Configuration finale :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger la configuration systemd pour prendre en compte les modifications :&lt;br /&gt;
&lt;br /&gt;
Sur les deux serveurs, exécuter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service au démarrage sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Important: démarrer le service uniquement sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;).  &lt;br /&gt;
Le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;) activera automatiquement le service lors d&#039;une bascule.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; gère automatiquement le démarrage et l&#039;arrêt de &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; lors des basculements, il faut créer des &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;scripts de notification&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Créer deux scripts bash dans le répertoire /etc/keepalived/ sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;(`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;(`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre les scripts exécutables :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification de l&#039;état de synchronisation.&lt;br /&gt;
&lt;br /&gt;
Ce script permet à Keepalived de surveiller l&#039;état de lsyncd.&lt;br /&gt;
&lt;br /&gt;
Créer le fichier /usr/local/bin/check_lsyncd_sync.sh :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre le script exécutable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /usr/local/bin/check_lsyncd_sync.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration de Keepalived pour intégrer les scripts de notification et de vérification :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplacer le contenu par la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Keepalived pour appliquer les changements :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; est actif uniquement sur le serveur maître.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;), vérifier l&#039;état du service :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:05:00 CET; 10s ago&lt;br /&gt;
 Main PID: 5678 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;), vérifier que le service est bien arrêté :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:05:00 CET; 2min ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester le mécanisme de synchronisation automatique en temps réel.&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la modification a été automatiquement synchronisée sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu doit être identique sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test du basculement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Simuler une panne en éteignant le serveur maître, puis vérifier que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; démarre automatiquement sur l&#039;esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:10:00 CET; 5s ago&lt;br /&gt;
 Main PID: 5890 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur qui est maintenant devenu maître (ancien esclave) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer l&#039;ancien serveur maître et vérifier que la synchronisation s&#039;effectue dans le bon sens :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu modifié sur l&#039;ancien esclave doit être synchronisé vers le serveur qui redémarre.&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut du service lsyncd sur l&#039;ancien serveur maître (qui redevient maître) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:12:00 CET; 5s ago&lt;br /&gt;
 Main PID: 6012 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur qui est redevenu esclave (BACKUP) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:12:00 CET; 10s ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Votre infrastructure est maintenant complète : serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Apache&amp;lt;/span&amp;gt; avec &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HTTPS&amp;lt;/span&amp;gt;, répartition de charge (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt;), haute disponibilité (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt;) et synchronisation automatique des fichiers (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt;) sont opérationnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Base_de_donn%C3%A9es&amp;diff=129</id>
		<title>Base de données</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Base_de_donn%C3%A9es&amp;diff=129"/>
		<updated>2026-02-22T16:47:36Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Test de la réplication bidirectionnelle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#003545;&amp;quot;&amp;gt;Installation et Configuration MariaDB avec Galera Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f4f8; border:1px solid #a8d5e2; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#003545;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète d&#039;un cluster de bases de données MariaDB avec Galera. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de mettre en place une infrastructure de haute disponibilité avec réplication multi-maître et synchronisation bidirectionnelle automatique. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
L&#039;architecture inclut deux serveurs de bases de données ainsi qu&#039;un arbitre Galera pour garantir la cohérence du cluster et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Architecture du Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Configuration de l&#039;architecture haute disponibilité avec réplication multi-maître&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Schéma de l&#039;infrastructure&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Voici le schéma de notre structure qui permettra de faire de la &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt; et de la &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;synchronisation bidirectionnelle&amp;lt;/span&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB1 → MariaDB + Galera&lt;br /&gt;
DB2 → MariaDB + Galera&lt;br /&gt;
ARB → Galera Arbitrator&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette architecture garantit la continuité de service même en cas de défaillance d&#039;un serveur de base de données.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Partie 1 — Installation MariaDB et Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Installation des composants MariaDB et Galera sur les serveurs de bases de données&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Installation du dépôt officiel MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur les &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, il faut impérativement installer le &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;dépôt officiel MariaDB&amp;lt;/span&amp;gt; afin d&#039;obtenir les versions les plus récentes et compatibles avec Galera.&lt;br /&gt;
&lt;br /&gt;
Exécuter la commande suivante sur db1 et db2 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande télécharge et configure automatiquement le dépôt MariaDB officiel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Installation des packages MariaDB et Galera&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Une fois le dépôt configuré, vous pouvez installer &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;MariaDB&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Galera&amp;lt;/span&amp;gt; sans problème.&lt;br /&gt;
&lt;br /&gt;
Installation des composants nécessaires sur les deux serveurs :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install -y MariaDB-server MariaDB-client MariaDB-backup galera-4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande installe le serveur MariaDB, le client, l&#039;outil de sauvegarde et le module Galera 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Partie 2 — Configuration du Cluster Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Configuration de la réplication multi-maître avec Galera Cluster&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Arrêt du service MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt; (la première machine), arrêter le service MariaDB avant la configuration du cluster :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette étape est nécessaire pour configurer Galera sans conflit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Configuration Galera sur db1&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Nous allons configurer &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Galera&amp;lt;/span&amp;gt; qui se trouve dans le fichier &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;/etc/my.cnf.d/galera.cnf&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/my.cnf.d/galera.cnf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, insérer la configuration suivante : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[galera]&lt;br /&gt;
wsrep_on=ON&lt;br /&gt;
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so&lt;br /&gt;
&lt;br /&gt;
wsrep_cluster_name=&amp;quot;galera_cluster&amp;quot;&lt;br /&gt;
wsrep_cluster_address=&amp;quot;gcomm://IP_DB1,IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_node_name=&amp;quot;db1&amp;quot;&lt;br /&gt;
wsrep_node_address=&amp;quot;IP_DB1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_sst_method=rsync&lt;br /&gt;
&lt;br /&gt;
binlog_format=ROW&lt;br /&gt;
default_storage_engine=InnoDB&lt;br /&gt;
innodb_autoinc_lock_mode=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette configuration active &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep&amp;lt;/span&amp;gt; (Write Set Replication), définit l&#039;adresse du cluster et configure le nœud db1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Configuration Galera sur db2&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le second serveur &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, éditer le même fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/my.cnf.d/galera.cnf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, insérer la configuration suivante : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[galera]&lt;br /&gt;
wsrep_on=ON&lt;br /&gt;
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so&lt;br /&gt;
&lt;br /&gt;
wsrep_cluster_name=&amp;quot;galera_cluster&amp;quot;&lt;br /&gt;
wsrep_cluster_address=&amp;quot;gcomm://IP_DB1,IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_node_name=&amp;quot;db2&amp;quot;&lt;br /&gt;
wsrep_node_address=&amp;quot;IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_sst_method=rsync&lt;br /&gt;
&lt;br /&gt;
binlog_format=ROW&lt;br /&gt;
default_storage_engine=InnoDB&lt;br /&gt;
innodb_autoinc_lock_mode=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuration est identique à db1, seuls les paramètres &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep_node_name&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep_node_address&amp;lt;/span&amp;gt; changent pour identifier le second nœud.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Partie 3 — Configuration du Pare-feu&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Ouverture des ports nécessaires à la communication du cluster Galera&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Ouverture des ports Galera&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il ne faut pas oublier d&#039;ouvrir tous les &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;ports suivants&amp;lt;/span&amp;gt; pour que les services puissent communiquer entre eux correctement.&lt;br /&gt;
&lt;br /&gt;
Pour les &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, éditer le fichier iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis insérer les règles suivantes au milieu du fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 -A INPUT -p tcp --dport 3306 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4567 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp --dport 4567 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4568 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4444 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explication des ports :&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;3306&amp;lt;/span&amp;gt; : Port MySQL/MariaDB standard pour les connexions clients&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4567&amp;lt;/span&amp;gt; : Port de réplication Galera (TCP et UDP)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4568&amp;lt;/span&amp;gt; : Port IST (Incremental State Transfer)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4444&amp;lt;/span&amp;gt; : Port SST (State Snapshot Transfer)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Application des règles&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier de recharger et démarrer iptables pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
systemctl start iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que les règles ont bien été ajoutées :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep -E &amp;quot;3306|4567|4568|4444&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0e6655;&amp;quot;&amp;gt;Partie 4 — Initialisation du Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#d5f4e6; border:1px solid #7dcea0; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0e6655;&amp;quot;&amp;gt;Démarrage et initialisation du cluster Galera multi-maître&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Activation du service MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur les &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, activer le service MariaDB au démarrage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande créé un lien symbolique pour le démarrage automatique du service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Création du cluster sur db1&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt; (le nœud principal), initialiser le nouveau cluster Galera :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
galera_new_cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande crée le cluster pour la &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;synchronisation&amp;lt;/span&amp;gt; et la &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt;. Le premier nœud devient le point de référence initial du cluster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Démarrage de db2&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Uniquement sur &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt; (le second nœud), démarrer le service MariaDB :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le serveur db2 va automatiquement rejoindre le cluster existant et se synchroniser avec db1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Vérification du cluster&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que la création du cluster a bien fonctionné en affichant la taille du cluster :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;SHOW STATUS LIKE &#039;wsrep_cluster_size&#039;;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| Variable_name      | Value |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| wsrep_cluster_size | 2     |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; en résultat, confirmant que les deux nœuds sont bien connectés au cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Partie 5 — Installation de l&#039;Arbitre Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Configuration d&#039;un arbitre pour maintenir le quorum du cluster&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Principe de l&#039;arbitre&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
L&#039;&amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;arbitre Galera&amp;lt;/span&amp;gt; (garbd) est un composant léger qui participe au vote du cluster sans stocker de données. Il permet de maintenir le &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;quorum&amp;lt;/span&amp;gt; en cas de panne d&#039;un nœud et d&#039;éviter les situations de &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;split-brain&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Installation du dépôt MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur une &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;nouvelle machine dédiée&amp;lt;/span&amp;gt; à l&#039;arbitre, installer le dépôt MariaDB :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Installation de Galera Arbitrator&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer le package &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;galera-4&amp;lt;/span&amp;gt; qui contient tout le nécessaire pour l&#039;arbitre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install galera-4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Vérification de l&#039;installation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;installation s&#039;est bien déroulée en affichant la version :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
garbd --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Galera Arbitrator (garbd) 26.x.x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir quelque chose comme &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Galera Arbitrator (garbd) 26.x.x&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Démarrage de l&#039;arbitre&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Exécuter ce bloc de commande directement dans le terminal pour démarrer l&#039;arbitre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
garbd \&lt;br /&gt;
--group=galera_cluster \&lt;br /&gt;
--address=&amp;quot;gcomm://192.168.40.250,192.168.40.252&amp;quot; \&lt;br /&gt;
--option=&amp;quot;gmcast.listen_addr=tcp://0.0.0.0:4567&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explication des paramètres :&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--group&amp;lt;/span&amp;gt; : Nom du cluster Galera (doit correspondre à wsrep_cluster_name)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--address&amp;lt;/span&amp;gt; : Adresses IP des nœuds du cluster&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--option&amp;lt;/span&amp;gt; : Port d&#039;écoute de l&#039;arbitre&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Votre arbitre restera allumé en permanence. Ne l&#039;éteignez jamais : il ne consomme presque rien en ressources et garantit le bon fonctionnement du cluster.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;Partie 6 — Tests et Vérification&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#154360;&amp;quot;&amp;gt;Vérification du bon fonctionnement du cluster et de la réplication&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Vérification de l&#039;état du cluster&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;arbitre a bien rejoint le cluster en affichant la taille totale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;SHOW STATUS LIKE &#039;wsrep_cluster_size&#039;;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| Variable_name      | Value |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| wsrep_cluster_size | 3     |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez maintenant voir &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; (db1 + db2 + arbitre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Test de la réplication multi-maître&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, créer une base de données de test :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;CREATE DATABASE test_replication;&amp;quot;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));&amp;quot;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; INSERT INTO users VALUES (1, &#039;JanMerie&#039;), (2, &#039;Leanan&#039;);&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, vérifier que les données ont été répliquées automatiquement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; SELECT * FROM users;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+----+---------+&lt;br /&gt;
| id |   name  |&lt;br /&gt;
+----+---------+&lt;br /&gt;
|  1 | JanMerie|&lt;br /&gt;
|  2 | Leanan  |&lt;br /&gt;
+----+---------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Test de la réplication bidirectionnelle&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, insérer de nouvelles données :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; INSERT INTO users VALUES (3, &#039;Gorfon&#039;);&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, vérifier que les données ajoutées sur db2 sont bien présentes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; SELECT * FROM users;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+----+-----------+&lt;br /&gt;
| id | name      |&lt;br /&gt;
+----+-----------+&lt;br /&gt;
|  1 | JanMerie  |&lt;br /&gt;
|  2 | Leanan    |&lt;br /&gt;
|  3 | Gorfon    |&lt;br /&gt;
+----+-----------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#154360;&amp;quot;&amp;gt;Votre cluster MariaDB avec Galera est maintenant opérationnel : &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;réplication multi-maître&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;synchronisation bidirectionnelle&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;arbitrage&amp;lt;/span&amp;gt; fonctionnent correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Base_de_donn%C3%A9es&amp;diff=128</id>
		<title>Base de données</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Base_de_donn%C3%A9es&amp;diff=128"/>
		<updated>2026-02-22T16:46:43Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Test de la réplication multi-maître */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#003545;&amp;quot;&amp;gt;Installation et Configuration MariaDB avec Galera Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f4f8; border:1px solid #a8d5e2; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#003545;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète d&#039;un cluster de bases de données MariaDB avec Galera. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de mettre en place une infrastructure de haute disponibilité avec réplication multi-maître et synchronisation bidirectionnelle automatique. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
L&#039;architecture inclut deux serveurs de bases de données ainsi qu&#039;un arbitre Galera pour garantir la cohérence du cluster et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Architecture du Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Configuration de l&#039;architecture haute disponibilité avec réplication multi-maître&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Schéma de l&#039;infrastructure&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Voici le schéma de notre structure qui permettra de faire de la &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt; et de la &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;synchronisation bidirectionnelle&amp;lt;/span&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB1 → MariaDB + Galera&lt;br /&gt;
DB2 → MariaDB + Galera&lt;br /&gt;
ARB → Galera Arbitrator&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette architecture garantit la continuité de service même en cas de défaillance d&#039;un serveur de base de données.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Partie 1 — Installation MariaDB et Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Installation des composants MariaDB et Galera sur les serveurs de bases de données&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Installation du dépôt officiel MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur les &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, il faut impérativement installer le &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;dépôt officiel MariaDB&amp;lt;/span&amp;gt; afin d&#039;obtenir les versions les plus récentes et compatibles avec Galera.&lt;br /&gt;
&lt;br /&gt;
Exécuter la commande suivante sur db1 et db2 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande télécharge et configure automatiquement le dépôt MariaDB officiel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Installation des packages MariaDB et Galera&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Une fois le dépôt configuré, vous pouvez installer &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;MariaDB&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Galera&amp;lt;/span&amp;gt; sans problème.&lt;br /&gt;
&lt;br /&gt;
Installation des composants nécessaires sur les deux serveurs :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install -y MariaDB-server MariaDB-client MariaDB-backup galera-4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande installe le serveur MariaDB, le client, l&#039;outil de sauvegarde et le module Galera 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Partie 2 — Configuration du Cluster Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Configuration de la réplication multi-maître avec Galera Cluster&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Arrêt du service MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt; (la première machine), arrêter le service MariaDB avant la configuration du cluster :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette étape est nécessaire pour configurer Galera sans conflit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Configuration Galera sur db1&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Nous allons configurer &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Galera&amp;lt;/span&amp;gt; qui se trouve dans le fichier &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;/etc/my.cnf.d/galera.cnf&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/my.cnf.d/galera.cnf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, insérer la configuration suivante : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[galera]&lt;br /&gt;
wsrep_on=ON&lt;br /&gt;
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so&lt;br /&gt;
&lt;br /&gt;
wsrep_cluster_name=&amp;quot;galera_cluster&amp;quot;&lt;br /&gt;
wsrep_cluster_address=&amp;quot;gcomm://IP_DB1,IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_node_name=&amp;quot;db1&amp;quot;&lt;br /&gt;
wsrep_node_address=&amp;quot;IP_DB1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_sst_method=rsync&lt;br /&gt;
&lt;br /&gt;
binlog_format=ROW&lt;br /&gt;
default_storage_engine=InnoDB&lt;br /&gt;
innodb_autoinc_lock_mode=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette configuration active &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep&amp;lt;/span&amp;gt; (Write Set Replication), définit l&#039;adresse du cluster et configure le nœud db1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Configuration Galera sur db2&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le second serveur &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, éditer le même fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/my.cnf.d/galera.cnf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, insérer la configuration suivante : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[galera]&lt;br /&gt;
wsrep_on=ON&lt;br /&gt;
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so&lt;br /&gt;
&lt;br /&gt;
wsrep_cluster_name=&amp;quot;galera_cluster&amp;quot;&lt;br /&gt;
wsrep_cluster_address=&amp;quot;gcomm://IP_DB1,IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_node_name=&amp;quot;db2&amp;quot;&lt;br /&gt;
wsrep_node_address=&amp;quot;IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_sst_method=rsync&lt;br /&gt;
&lt;br /&gt;
binlog_format=ROW&lt;br /&gt;
default_storage_engine=InnoDB&lt;br /&gt;
innodb_autoinc_lock_mode=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuration est identique à db1, seuls les paramètres &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep_node_name&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep_node_address&amp;lt;/span&amp;gt; changent pour identifier le second nœud.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Partie 3 — Configuration du Pare-feu&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Ouverture des ports nécessaires à la communication du cluster Galera&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Ouverture des ports Galera&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il ne faut pas oublier d&#039;ouvrir tous les &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;ports suivants&amp;lt;/span&amp;gt; pour que les services puissent communiquer entre eux correctement.&lt;br /&gt;
&lt;br /&gt;
Pour les &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, éditer le fichier iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis insérer les règles suivantes au milieu du fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 -A INPUT -p tcp --dport 3306 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4567 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp --dport 4567 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4568 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4444 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explication des ports :&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;3306&amp;lt;/span&amp;gt; : Port MySQL/MariaDB standard pour les connexions clients&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4567&amp;lt;/span&amp;gt; : Port de réplication Galera (TCP et UDP)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4568&amp;lt;/span&amp;gt; : Port IST (Incremental State Transfer)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4444&amp;lt;/span&amp;gt; : Port SST (State Snapshot Transfer)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Application des règles&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier de recharger et démarrer iptables pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
systemctl start iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que les règles ont bien été ajoutées :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep -E &amp;quot;3306|4567|4568|4444&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0e6655;&amp;quot;&amp;gt;Partie 4 — Initialisation du Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#d5f4e6; border:1px solid #7dcea0; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0e6655;&amp;quot;&amp;gt;Démarrage et initialisation du cluster Galera multi-maître&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Activation du service MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur les &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, activer le service MariaDB au démarrage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande créé un lien symbolique pour le démarrage automatique du service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Création du cluster sur db1&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt; (le nœud principal), initialiser le nouveau cluster Galera :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
galera_new_cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande crée le cluster pour la &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;synchronisation&amp;lt;/span&amp;gt; et la &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt;. Le premier nœud devient le point de référence initial du cluster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Démarrage de db2&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Uniquement sur &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt; (le second nœud), démarrer le service MariaDB :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le serveur db2 va automatiquement rejoindre le cluster existant et se synchroniser avec db1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Vérification du cluster&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que la création du cluster a bien fonctionné en affichant la taille du cluster :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;SHOW STATUS LIKE &#039;wsrep_cluster_size&#039;;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| Variable_name      | Value |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| wsrep_cluster_size | 2     |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; en résultat, confirmant que les deux nœuds sont bien connectés au cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Partie 5 — Installation de l&#039;Arbitre Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Configuration d&#039;un arbitre pour maintenir le quorum du cluster&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Principe de l&#039;arbitre&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
L&#039;&amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;arbitre Galera&amp;lt;/span&amp;gt; (garbd) est un composant léger qui participe au vote du cluster sans stocker de données. Il permet de maintenir le &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;quorum&amp;lt;/span&amp;gt; en cas de panne d&#039;un nœud et d&#039;éviter les situations de &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;split-brain&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Installation du dépôt MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur une &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;nouvelle machine dédiée&amp;lt;/span&amp;gt; à l&#039;arbitre, installer le dépôt MariaDB :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Installation de Galera Arbitrator&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer le package &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;galera-4&amp;lt;/span&amp;gt; qui contient tout le nécessaire pour l&#039;arbitre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install galera-4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Vérification de l&#039;installation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;installation s&#039;est bien déroulée en affichant la version :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
garbd --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Galera Arbitrator (garbd) 26.x.x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir quelque chose comme &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Galera Arbitrator (garbd) 26.x.x&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Démarrage de l&#039;arbitre&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Exécuter ce bloc de commande directement dans le terminal pour démarrer l&#039;arbitre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
garbd \&lt;br /&gt;
--group=galera_cluster \&lt;br /&gt;
--address=&amp;quot;gcomm://192.168.40.250,192.168.40.252&amp;quot; \&lt;br /&gt;
--option=&amp;quot;gmcast.listen_addr=tcp://0.0.0.0:4567&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explication des paramètres :&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--group&amp;lt;/span&amp;gt; : Nom du cluster Galera (doit correspondre à wsrep_cluster_name)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--address&amp;lt;/span&amp;gt; : Adresses IP des nœuds du cluster&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--option&amp;lt;/span&amp;gt; : Port d&#039;écoute de l&#039;arbitre&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Votre arbitre restera allumé en permanence. Ne l&#039;éteignez jamais : il ne consomme presque rien en ressources et garantit le bon fonctionnement du cluster.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;Partie 6 — Tests et Vérification&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#154360;&amp;quot;&amp;gt;Vérification du bon fonctionnement du cluster et de la réplication&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Vérification de l&#039;état du cluster&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;arbitre a bien rejoint le cluster en affichant la taille totale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;SHOW STATUS LIKE &#039;wsrep_cluster_size&#039;;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| Variable_name      | Value |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| wsrep_cluster_size | 3     |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez maintenant voir &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; (db1 + db2 + arbitre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Test de la réplication multi-maître&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, créer une base de données de test :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;CREATE DATABASE test_replication;&amp;quot;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));&amp;quot;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; INSERT INTO users VALUES (1, &#039;JanMerie&#039;), (2, &#039;Leanan&#039;);&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, vérifier que les données ont été répliquées automatiquement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; SELECT * FROM users;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+----+---------+&lt;br /&gt;
| id |   name  |&lt;br /&gt;
+----+---------+&lt;br /&gt;
|  1 | JanMerie|&lt;br /&gt;
|  2 | Leanan  |&lt;br /&gt;
+----+---------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Test de la réplication bidirectionnelle&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, insérer de nouvelles données :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; INSERT INTO users VALUES (3, &#039;Charlie&#039;);&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, vérifier que les données ajoutées sur db2 sont bien présentes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; SELECT * FROM users;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+----+---------+&lt;br /&gt;
| id | name    |&lt;br /&gt;
+----+---------+&lt;br /&gt;
|  1 | Alice   |&lt;br /&gt;
|  2 | Bob     |&lt;br /&gt;
|  3 | Charlie |&lt;br /&gt;
+----+---------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#154360;&amp;quot;&amp;gt;Votre cluster MariaDB avec Galera est maintenant opérationnel : &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;réplication multi-maître&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;synchronisation bidirectionnelle&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;arbitrage&amp;lt;/span&amp;gt; fonctionnent correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Base_de_donn%C3%A9es&amp;diff=127</id>
		<title>Base de données</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Base_de_donn%C3%A9es&amp;diff=127"/>
		<updated>2026-02-22T16:42:24Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : Page créée avec « &amp;lt;br&amp;gt; = &amp;lt;span style=&amp;quot;color:#003545;&amp;quot;&amp;gt;Installation et Configuration MariaDB avec Galera Cluster&amp;lt;/span&amp;gt; =  {| style=&amp;quot;width:100%; background:#e8f4f8; border:1px solid #a8d5e2; padding:15px; border-radius:10px; overflow:hidden;&amp;quot; | &amp;lt;span style=&amp;quot;font-size:115%; color:#003545;&amp;quot;&amp;gt; Cette section décrit l&amp;#039;installation et la configuration complète d&amp;#039;un cluster de bases de données MariaDB avec Galera. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; Elle permet de mettre en place une infrastructure de haute dispo... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#003545;&amp;quot;&amp;gt;Installation et Configuration MariaDB avec Galera Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f4f8; border:1px solid #a8d5e2; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#003545;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l&#039;installation et la configuration complète d&#039;un cluster de bases de données MariaDB avec Galera. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de mettre en place une infrastructure de haute disponibilité avec réplication multi-maître et synchronisation bidirectionnelle automatique. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
L&#039;architecture inclut deux serveurs de bases de données ainsi qu&#039;un arbitre Galera pour garantir la cohérence du cluster et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Architecture du Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Configuration de l&#039;architecture haute disponibilité avec réplication multi-maître&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Schéma de l&#039;infrastructure&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Voici le schéma de notre structure qui permettra de faire de la &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt; et de la &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;synchronisation bidirectionnelle&amp;lt;/span&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DB1 → MariaDB + Galera&lt;br /&gt;
DB2 → MariaDB + Galera&lt;br /&gt;
ARB → Galera Arbitrator&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette architecture garantit la continuité de service même en cas de défaillance d&#039;un serveur de base de données.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Partie 1 — Installation MariaDB et Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#00618a;&amp;quot;&amp;gt;Installation des composants MariaDB et Galera sur les serveurs de bases de données&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Installation du dépôt officiel MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur les &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, il faut impérativement installer le &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;dépôt officiel MariaDB&amp;lt;/span&amp;gt; afin d&#039;obtenir les versions les plus récentes et compatibles avec Galera.&lt;br /&gt;
&lt;br /&gt;
Exécuter la commande suivante sur db1 et db2 :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande télécharge et configure automatiquement le dépôt MariaDB officiel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Installation des packages MariaDB et Galera&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Une fois le dépôt configuré, vous pouvez installer &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;MariaDB&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#1a7a8a;&amp;quot;&amp;gt;Galera&amp;lt;/span&amp;gt; sans problème.&lt;br /&gt;
&lt;br /&gt;
Installation des composants nécessaires sur les deux serveurs :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install -y MariaDB-server MariaDB-client MariaDB-backup galera-4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande installe le serveur MariaDB, le client, l&#039;outil de sauvegarde et le module Galera 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Partie 2 — Configuration du Cluster Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Configuration de la réplication multi-maître avec Galera Cluster&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Arrêt du service MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt; (la première machine), arrêter le service MariaDB avant la configuration du cluster :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette étape est nécessaire pour configurer Galera sans conflit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Configuration Galera sur db1&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Nous allons configurer &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Galera&amp;lt;/span&amp;gt; qui se trouve dans le fichier &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;/etc/my.cnf.d/galera.cnf&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/my.cnf.d/galera.cnf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, insérer la configuration suivante : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[galera]&lt;br /&gt;
wsrep_on=ON&lt;br /&gt;
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so&lt;br /&gt;
&lt;br /&gt;
wsrep_cluster_name=&amp;quot;galera_cluster&amp;quot;&lt;br /&gt;
wsrep_cluster_address=&amp;quot;gcomm://IP_DB1,IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_node_name=&amp;quot;db1&amp;quot;&lt;br /&gt;
wsrep_node_address=&amp;quot;IP_DB1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_sst_method=rsync&lt;br /&gt;
&lt;br /&gt;
binlog_format=ROW&lt;br /&gt;
default_storage_engine=InnoDB&lt;br /&gt;
innodb_autoinc_lock_mode=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette configuration active &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep&amp;lt;/span&amp;gt; (Write Set Replication), définit l&#039;adresse du cluster et configure le nœud db1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Configuration Galera sur db2&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le second serveur &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, éditer le même fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/my.cnf.d/galera.cnf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, insérer la configuration suivante : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[galera]&lt;br /&gt;
wsrep_on=ON&lt;br /&gt;
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so&lt;br /&gt;
&lt;br /&gt;
wsrep_cluster_name=&amp;quot;galera_cluster&amp;quot;&lt;br /&gt;
wsrep_cluster_address=&amp;quot;gcomm://IP_DB1,IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_node_name=&amp;quot;db2&amp;quot;&lt;br /&gt;
wsrep_node_address=&amp;quot;IP_DB2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
wsrep_sst_method=rsync&lt;br /&gt;
&lt;br /&gt;
binlog_format=ROW&lt;br /&gt;
default_storage_engine=InnoDB&lt;br /&gt;
innodb_autoinc_lock_mode=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La configuration est identique à db1, seuls les paramètres &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep_node_name&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;wsrep_node_address&amp;lt;/span&amp;gt; changent pour identifier le second nœud.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Partie 3 — Configuration du Pare-feu&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f8f5; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#117a65;&amp;quot;&amp;gt;Ouverture des ports nécessaires à la communication du cluster Galera&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Ouverture des ports Galera&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il ne faut pas oublier d&#039;ouvrir tous les &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;ports suivants&amp;lt;/span&amp;gt; pour que les services puissent communiquer entre eux correctement.&lt;br /&gt;
&lt;br /&gt;
Pour les &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, éditer le fichier iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis insérer les règles suivantes au milieu du fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 -A INPUT -p tcp --dport 3306 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4567 -j ACCEPT&lt;br /&gt;
 -A INPUT -p udp --dport 4567 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4568 -j ACCEPT&lt;br /&gt;
 -A INPUT -p tcp --dport 4444 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explication des ports :&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;3306&amp;lt;/span&amp;gt; : Port MySQL/MariaDB standard pour les connexions clients&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4567&amp;lt;/span&amp;gt; : Port de réplication Galera (TCP et UDP)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4568&amp;lt;/span&amp;gt; : Port IST (Incremental State Transfer)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;4444&amp;lt;/span&amp;gt; : Port SST (State Snapshot Transfer)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#16a085;&amp;quot;&amp;gt;Application des règles&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier de recharger et démarrer iptables pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
systemctl start iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que les règles ont bien été ajoutées :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep -E &amp;quot;3306|4567|4568|4444&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#0e6655;&amp;quot;&amp;gt;Partie 4 — Initialisation du Cluster&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#d5f4e6; border:1px solid #7dcea0; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#0e6655;&amp;quot;&amp;gt;Démarrage et initialisation du cluster Galera multi-maître&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Activation du service MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur les &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;deux serveurs db1 et db2&amp;lt;/span&amp;gt;, activer le service MariaDB au démarrage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande créé un lien symbolique pour le démarrage automatique du service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Création du cluster sur db1&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt; (le nœud principal), initialiser le nouveau cluster Galera :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
galera_new_cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande crée le cluster pour la &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;synchronisation&amp;lt;/span&amp;gt; et la &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt;. Le premier nœud devient le point de référence initial du cluster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Démarrage de db2&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Uniquement sur &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt; (le second nœud), démarrer le service MariaDB :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start mariadb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le serveur db2 va automatiquement rejoindre le cluster existant et se synchroniser avec db1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;Vérification du cluster&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que la création du cluster a bien fonctionné en affichant la taille du cluster :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;SHOW STATUS LIKE &#039;wsrep_cluster_size&#039;;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| Variable_name      | Value |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| wsrep_cluster_size | 2     |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir &amp;lt;span style=&amp;quot;color:#138d75;&amp;quot;&amp;gt;2&amp;lt;/span&amp;gt; en résultat, confirmant que les deux nœuds sont bien connectés au cluster.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Partie 5 — Installation de l&#039;Arbitre Galera&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Configuration d&#039;un arbitre pour maintenir le quorum du cluster&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Principe de l&#039;arbitre&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
L&#039;&amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;arbitre Galera&amp;lt;/span&amp;gt; (garbd) est un composant léger qui participe au vote du cluster sans stocker de données. Il permet de maintenir le &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;quorum&amp;lt;/span&amp;gt; en cas de panne d&#039;un nœud et d&#039;éviter les situations de &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;split-brain&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Installation du dépôt MariaDB&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur une &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;nouvelle machine dédiée&amp;lt;/span&amp;gt; à l&#039;arbitre, installer le dépôt MariaDB :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Installation de Galera Arbitrator&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer le package &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;galera-4&amp;lt;/span&amp;gt; qui contient tout le nécessaire pour l&#039;arbitre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install galera-4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Vérification de l&#039;installation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;installation s&#039;est bien déroulée en affichant la version :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
garbd --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Galera Arbitrator (garbd) 26.x.x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir quelque chose comme &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Galera Arbitrator (garbd) 26.x.x&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;Démarrage de l&#039;arbitre&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Exécuter ce bloc de commande directement dans le terminal pour démarrer l&#039;arbitre :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
garbd \&lt;br /&gt;
--group=galera_cluster \&lt;br /&gt;
--address=&amp;quot;gcomm://192.168.40.250,192.168.40.252&amp;quot; \&lt;br /&gt;
--option=&amp;quot;gmcast.listen_addr=tcp://0.0.0.0:4567&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explication des paramètres :&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--group&amp;lt;/span&amp;gt; : Nom du cluster Galera (doit correspondre à wsrep_cluster_name)&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--address&amp;lt;/span&amp;gt; : Adresses IP des nœuds du cluster&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:#8e44ad;&amp;quot;&amp;gt;--option&amp;lt;/span&amp;gt; : Port d&#039;écoute de l&#039;arbitre&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Votre arbitre restera allumé en permanence. Ne l&#039;éteignez jamais : il ne consomme presque rien en ressources et garantit le bon fonctionnement du cluster.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;Partie 6 — Tests et Vérification&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#154360;&amp;quot;&amp;gt;Vérification du bon fonctionnement du cluster et de la réplication&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Vérification de l&#039;état du cluster&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;arbitre a bien rejoint le cluster en affichant la taille totale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;SHOW STATUS LIKE &#039;wsrep_cluster_size&#039;;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| Variable_name      | Value |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
| wsrep_cluster_size | 3     |&lt;br /&gt;
+--------------------+-------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez maintenant voir &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt; (db1 + db2 + arbitre).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Test de la réplication multi-maître&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, créer une base de données de test :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;CREATE DATABASE test_replication;&amp;quot;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));&amp;quot;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; INSERT INTO users VALUES (1, &#039;Alice&#039;), (2, &#039;Bob&#039;);&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, vérifier que les données ont été répliquées automatiquement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; SELECT * FROM users;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+----+-------+&lt;br /&gt;
| id | name  |&lt;br /&gt;
+----+-------+&lt;br /&gt;
|  1 | Alice |&lt;br /&gt;
|  2 | Bob   |&lt;br /&gt;
+----+-------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Test de la réplication bidirectionnelle&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db2&amp;lt;/span&amp;gt;, insérer de nouvelles données :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; INSERT INTO users VALUES (3, &#039;Charlie&#039;);&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;db1&amp;lt;/span&amp;gt;, vérifier que les données ajoutées sur db2 sont bien présentes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u root -p -e &amp;quot;USE test_replication; SELECT * FROM users;&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+----+---------+&lt;br /&gt;
| id | name    |&lt;br /&gt;
+----+---------+&lt;br /&gt;
|  1 | Alice   |&lt;br /&gt;
|  2 | Bob     |&lt;br /&gt;
|  3 | Charlie |&lt;br /&gt;
+----+---------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eaf2f8; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#154360;&amp;quot;&amp;gt;Votre cluster MariaDB avec Galera est maintenant opérationnel : &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;haute disponibilité&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;réplication multi-maître&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;synchronisation bidirectionnelle&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#154360;&amp;quot;&amp;gt;arbitrage&amp;lt;/span&amp;gt; fonctionnent correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=126</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=126"/>
		<updated>2026-02-22T16:36:48Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-tools-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-filesystem-2.4.57-5.el9.noarch&lt;br /&gt;
mod_ssl-2.4.57-5.el9.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l&#039;écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=4))&lt;br /&gt;
LISTEN 0      511          0.0.0.0:443        0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=6))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports 80 (HTTP) et 443 (HTTPS) doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de chiffrer les échanges entre client et serveur, de garantir l&#039;intégrité des données et d&#039;authentifier le serveur.&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d&#039;un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour activer HTTPS, il est nécessaire de générer un certificat SSL/TLS.  &lt;br /&gt;
Dans un environnement de test, un certificat auto-signé suffit.&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL valide pour 365 jours :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant indiquer à Apache l&#039;emplacement du certificat et de la clé privée.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Apache pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification du fonctionnement HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès sécurisé au serveur web via HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre -k permet d&#039;ignorer l&#039;avertissement lié au certificat auto-signé.&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si la configuration est correcte, vous devez voir le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Load Balancing&amp;lt;/span&amp;gt; permet de répartir les requêtes clients sur plusieurs serveurs web, d&#039;améliorer les performances globales, de réduire la charge sur chaque serveur et d&#039;augmenter la disponibilité du service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; agit comme point d&#039;entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Architecture :&lt;br /&gt;
&lt;br /&gt;
Client → &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; → Serveur Web 1 / Serveur Web 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt; puisse prendre le contrôle du &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 80&amp;lt;/span&amp;gt;, les serveurs Apache doivent être configurés pour écouter sur un autre port.  &lt;br /&gt;
Nous allons les faire écouter sur le &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;port 8080&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache sur chaque serveur web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et modifier les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
*Avant:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Après:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la configuration ne contient pas d&#039;erreur de syntaxe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VirtualHost configuration:&lt;br /&gt;
*:8080                 web (/etc/httpd/conf/httpd.conf:42)&lt;br /&gt;
ServerRoot: &amp;quot;/etc/httpd&amp;quot;&lt;br /&gt;
Main DocumentRoot: &amp;quot;/var/www/html&amp;quot;&lt;br /&gt;
Main ErrorLog: &amp;quot;/etc/httpd/logs/error_log&amp;quot;&lt;br /&gt;
Syntax OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache en mode gracieux (sans couper les connexions en cours) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse communiquer avec les serveurs Apache, il est nécessaire d&#039;autoriser le trafic sur le port 8080.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements au pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HAProxy doit être installé sur le serveur qui jouera le rôle de répartiteur de charge.&lt;br /&gt;
&lt;br /&gt;
Installation du package HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de HAProxy définit comment les requêtes seront distribuées entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration principal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration utilisant l&#039;algorithme &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt; pour la répartition de charge :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;roundrobin&amp;lt;/span&amp;gt; distribue les requêtes alternativement entre les serveurs, assurant une répartition équilibrée de la charge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● haproxy.service - HAProxy Load Balancer&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:00:00 CET; 5s ago&lt;br /&gt;
 Main PID: 1234 (haproxy)&lt;br /&gt;
   Status: &amp;quot;Ready.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que les clients puissent accéder au service via HAProxy, le port 80 doit être ouvert sur le serveur Load Balancer.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration du pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la règle d&#039;autorisation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le système de répartition de charge fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès via l&#039;adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives pour observer le mécanisme de distribution.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web selon l&#039;algorithme &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;round robin&amp;lt;/span&amp;gt;.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; permet d&#039;assurer la continuité du service (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Haute Disponibilité&amp;lt;/span&amp;gt;), de basculer automatiquement vers un serveur secondaire en cas de panne, d&#039;utiliser une &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; partagée entre plusieurs serveurs (&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;VIP&amp;lt;/span&amp;gt;) et de superviser l&#039;état du service HAProxy.&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
Un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;MASTER&#039;&#039;&#039;&amp;lt;/span&amp;gt; (actif), un serveur est &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;&#039;&#039;&#039;BACKUP&#039;&#039;&#039;&amp;lt;/span&amp;gt; (passif). Si le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; tombe, le &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; récupère automatiquement l&#039;IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived doit être installé sur les deux serveurs qui assureront la haute disponibilité (MASTER et BACKUP).&lt;br /&gt;
&lt;br /&gt;
Installation du package Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt; sera le serveur actif qui portera l&#039;&amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;adresse IP virtuelle&amp;lt;/span&amp;gt; en temps normal.&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer le service Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt; reste en veille et ne prendra le relais qu&#039;en cas de défaillance du serveur &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;adresse IP virtuelle est bien active sur le serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER, afficher les adresses IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.252/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP physique du serveur et l&#039;adresse IP virtuelle 192.168.10.250 doivent apparaître sur l&#039;interface réseau.&lt;br /&gt;
&lt;br /&gt;
Test du mécanisme de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou stopper le service Keepalived&lt;br /&gt;
2. Sur le serveur BACKUP, exécuter la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:57 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.251/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;synchronisation&amp;lt;/span&amp;gt; permet de maintenir les mêmes fichiers sur plusieurs serveurs, d&#039;assurer la cohérence des données et de faciliter la haute disponibilité.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Lsyncd&amp;lt;/span&amp;gt; est un outil de synchronisation temps réel basé sur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;inotify&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;rsync&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Installation du package lsyncd :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour permettre la synchronisation automatique sans saisie de mot de passe, il est nécessaire de configurer l&#039;authentification par &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Générer les &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;clés SSH&amp;lt;/span&amp;gt; sur chaque serveur et les échanger.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 1, générer la clé et la copier vers le serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 2, générer la clé et la copier vers le serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de lsyncd définit les répertoires à synchroniser et les serveurs cibles.&lt;br /&gt;
&lt;br /&gt;
Créer le répertoire de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer le fichier de configuration pour synchroniser le répertoire /var/www/html/ :&lt;br /&gt;
&lt;br /&gt;
*Remarque: adapter l&#039;adresse IP cible en fonction du serveur où vous créez la configuration.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de service systemd pour adapter les permissions et le chemin de configuration.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants : &lt;br /&gt;
*User=rootpour donner les droits nécessaires &lt;br /&gt;
*ExecStartpour indiquer le bon chemin vers le fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
Configuration finale :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger la configuration systemd pour prendre en compte les modifications :&lt;br /&gt;
&lt;br /&gt;
Sur les deux serveurs, exécuter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service au démarrage sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Important: démarrer le service uniquement sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;).  &lt;br /&gt;
Le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;) activera automatiquement le service lors d&#039;une bascule.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt; gère automatiquement le démarrage et l&#039;arrêt de &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; lors des basculements, il faut créer des &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;scripts de notification&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Créer deux scripts bash dans le répertoire /etc/keepalived/ sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;(`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;(`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre les scripts exécutables :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification de l&#039;état de synchronisation.&lt;br /&gt;
&lt;br /&gt;
Ce script permet à Keepalived de surveiller l&#039;état de lsyncd.&lt;br /&gt;
&lt;br /&gt;
Créer le fichier /usr/local/bin/check_lsyncd_sync.sh :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre le script exécutable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /usr/local/bin/check_lsyncd_sync.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration de Keepalived pour intégrer les scripts de notification et de vérification :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplacer le contenu par la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Keepalived pour appliquer les changements :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; est actif uniquement sur le serveur maître.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;MASTER&amp;lt;/span&amp;gt;), vérifier l&#039;état du service :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:05:00 CET; 10s ago&lt;br /&gt;
 Main PID: 5678 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur de secours (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;BACKUP&amp;lt;/span&amp;gt;), vérifier que le service est bien arrêté :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:05:00 CET; 2min ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester le mécanisme de synchronisation automatique en temps réel.&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la modification a été automatiquement synchronisée sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu doit être identique sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test du basculement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Simuler une panne en éteignant le serveur maître, puis vérifier que &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt; démarre automatiquement sur l&#039;esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:10:00 CET; 5s ago&lt;br /&gt;
 Main PID: 5890 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur qui est maintenant devenu maître (ancien esclave) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer l&#039;ancien serveur maître et vérifier que la synchronisation s&#039;effectue dans le bon sens :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu modifié sur l&#039;ancien esclave doit être synchronisé vers le serveur qui redémarre.&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut du service lsyncd sur l&#039;ancien serveur maître (qui redevient maître) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:12:00 CET; 5s ago&lt;br /&gt;
 Main PID: 6012 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur qui est redevenu esclave (BACKUP) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:12:00 CET; 10s ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Votre infrastructure est maintenant complète : serveur &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Apache&amp;lt;/span&amp;gt; avec &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HTTPS&amp;lt;/span&amp;gt;, répartition de charge (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;HAProxy&amp;lt;/span&amp;gt;), haute disponibilité (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Keepalived&amp;lt;/span&amp;gt;) et synchronisation automatique des fichiers (&amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;lsyncd&amp;lt;/span&amp;gt;) sont opérationnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=125</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=125"/>
		<updated>2026-02-22T16:29:29Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-tools-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-filesystem-2.4.57-5.el9.noarch&lt;br /&gt;
mod_ssl-2.4.57-5.el9.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l&#039;écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=4))&lt;br /&gt;
LISTEN 0      511          0.0.0.0:443        0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=6))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports 80 (HTTP) et 443 (HTTPS) doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de chiffrer les échanges entre client et serveur, de garantir l&#039;intégrité des données et d&#039;authentifier le serveur.&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d&#039;un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour activer HTTPS, il est nécessaire de générer un certificat SSL/TLS.  &lt;br /&gt;
Dans un environnement de test, un certificat auto-signé suffit.&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL valide pour 365 jours :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant indiquer à Apache l&#039;emplacement du certificat et de la clé privée.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Apache pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification du fonctionnement HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès sécurisé au serveur web via HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre -k permet d&#039;ignorer l&#039;avertissement lié au certificat auto-signé.&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si la configuration est correcte, vous devez voir le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le Load Balancing permet de répartir les requêtes clients sur plusieurs serveurs web, d&#039;améliorer les performances globales, de réduire la charge sur chaque serveur et d&#039;augmenter la disponibilité du service.&lt;br /&gt;
&lt;br /&gt;
HAProxy agit comme point d&#039;entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Architecture :&lt;br /&gt;
&lt;br /&gt;
Client → HAProxy → Serveur Web 1 / Serveur Web 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse prendre le contrôle du port 80, les serveurs Apache doivent être configurés pour écouter sur un autre port.  &lt;br /&gt;
Nous allons les faire écouter sur le port 8080.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache sur chaque serveur web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et modifier les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
*Avant:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Après:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la configuration ne contient pas d&#039;erreur de syntaxe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VirtualHost configuration:&lt;br /&gt;
*:8080                 web (/etc/httpd/conf/httpd.conf:42)&lt;br /&gt;
ServerRoot: &amp;quot;/etc/httpd&amp;quot;&lt;br /&gt;
Main DocumentRoot: &amp;quot;/var/www/html&amp;quot;&lt;br /&gt;
Main ErrorLog: &amp;quot;/etc/httpd/logs/error_log&amp;quot;&lt;br /&gt;
Syntax OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache en mode gracieux (sans couper les connexions en cours) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse communiquer avec les serveurs Apache, il est nécessaire d&#039;autoriser le trafic sur le port 8080.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements au pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HAProxy doit être installé sur le serveur qui jouera le rôle de répartiteur de charge.&lt;br /&gt;
&lt;br /&gt;
Installation du package HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de HAProxy définit comment les requêtes seront distribuées entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration principal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration utilisant l&#039;algorithme round robin pour la répartition de charge :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode roundrobin distribue les requêtes alternativement entre les serveurs, assurant une répartition équilibrée de la charge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● haproxy.service - HAProxy Load Balancer&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:00:00 CET; 5s ago&lt;br /&gt;
 Main PID: 1234 (haproxy)&lt;br /&gt;
   Status: &amp;quot;Ready.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que les clients puissent accéder au service via HAProxy, le port 80 doit être ouvert sur le serveur Load Balancer.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration du pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la règle d&#039;autorisation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le système de répartition de charge fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès via l&#039;adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives pour observer le mécanisme de distribution.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web selon l&#039;algorithme round robin.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived permet d&#039;assurer la continuité du service (Haute Disponibilité), de basculer automatiquement vers un serveur secondaire en cas de panne, d&#039;utiliser une adresse IP virtuelle partagée entre plusieurs serveurs (VIP) et de superviser l&#039;état du service HAProxy.&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
Un serveur est &#039;&#039;&#039;MASTER&#039;&#039;&#039; (actif), un serveur est &#039;&#039;&#039;BACKUP&#039;&#039;&#039; (passif). Si le serveur MASTER tombe, le BACKUP récupère automatiquement l&#039;IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived doit être installé sur les deux serveurs qui assureront la haute disponibilité (MASTER et BACKUP).&lt;br /&gt;
&lt;br /&gt;
Installation du package Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur MASTER sera le serveur actif qui portera l&#039;adresse IP virtuelle en temps normal.&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer le service Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur BACKUP reste en veille et ne prendra le relais qu&#039;en cas de défaillance du serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;adresse IP virtuelle est bien active sur le serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER, afficher les adresses IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.252/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP physique du serveur et l&#039;adresse IP virtuelle 192.168.10.250 doivent apparaître sur l&#039;interface réseau.&lt;br /&gt;
&lt;br /&gt;
Test du mécanisme de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou stopper le service Keepalived&lt;br /&gt;
2. Sur le serveur BACKUP, exécuter la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:57 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.251/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La synchronisation permet de maintenir les mêmes fichiers sur plusieurs serveurs, d&#039;assurer la cohérence des données et de faciliter la haute disponibilité.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Lsyncd est un outil de synchronisation temps réel basé sur inotify et rsync.&lt;br /&gt;
&lt;br /&gt;
Installation du package lsyncd :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour permettre la synchronisation automatique sans saisie de mot de passe, il est nécessaire de configurer l&#039;authentification par clés SSH.&lt;br /&gt;
&lt;br /&gt;
Générer les clés SSH sur chaque serveur et les échanger.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 1, générer la clé et la copier vers le serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 2, générer la clé et la copier vers le serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de lsyncd définit les répertoires à synchroniser et les serveurs cibles.&lt;br /&gt;
&lt;br /&gt;
Créer le répertoire de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer le fichier de configuration pour synchroniser le répertoire /var/www/html/ :&lt;br /&gt;
&lt;br /&gt;
*Remarque: adapter l&#039;adresse IP cible en fonction du serveur où vous créez la configuration.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de service systemd pour adapter les permissions et le chemin de configuration.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants : &lt;br /&gt;
*User=rootpour donner les droits nécessaires &lt;br /&gt;
*ExecStartpour indiquer le bon chemin vers le fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
Configuration finale :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger la configuration systemd pour prendre en compte les modifications :&lt;br /&gt;
&lt;br /&gt;
Sur les deux serveurs, exécuter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service au démarrage sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Important: démarrer le service uniquement sur le serveur maître (MASTER).  &lt;br /&gt;
Le serveur de secours (BACKUP) activera automatiquement le service lors d&#039;une bascule.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que Keepalived gère automatiquement le démarrage et l&#039;arrêt de lsyncd lors des basculements, il faut créer des scripts de notification.&lt;br /&gt;
&lt;br /&gt;
Créer deux scripts bash dans le répertoire /etc/keepalived/ sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur MASTER(`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Script pour le serveur BACKUP(`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre les scripts exécutables :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification de l&#039;état de synchronisation.&lt;br /&gt;
&lt;br /&gt;
Ce script permet à Keepalived de surveiller l&#039;état de lsyncd.&lt;br /&gt;
&lt;br /&gt;
Créer le fichier /usr/local/bin/check_lsyncd_sync.sh :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre le script exécutable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /usr/local/bin/check_lsyncd_sync.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration de Keepalived pour intégrer les scripts de notification et de vérification :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplacer le contenu par la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Keepalived pour appliquer les changements :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service lsyncd est actif uniquement sur le serveur maître.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître (MASTER), vérifier l&#039;état du service :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:05:00 CET; 10s ago&lt;br /&gt;
 Main PID: 5678 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur de secours (BACKUP), vérifier que le service est bien arrêté :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:05:00 CET; 2min ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester le mécanisme de synchronisation automatique en temps réel.&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la modification a été automatiquement synchronisée sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu doit être identique sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test du basculement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Simuler une panne en éteignant le serveur maître, puis vérifier que lsyncd démarre automatiquement sur l&#039;esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:10:00 CET; 5s ago&lt;br /&gt;
 Main PID: 5890 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur qui est maintenant devenu maître (ancien esclave) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer l&#039;ancien serveur maître et vérifier que la synchronisation s&#039;effectue dans le bon sens :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu modifié sur l&#039;ancien esclave doit être synchronisé vers le serveur qui redémarre.&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut du service lsyncd sur l&#039;ancien serveur maître (qui redevient maître) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:12:00 CET; 5s ago&lt;br /&gt;
 Main PID: 6012 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur qui est redevenu esclave (BACKUP) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:12:00 CET; 10s ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Votre infrastructure est maintenant complète : serveur Apache avec HTTPS, répartition de charge (HAProxy), haute disponibilité (Keepalived) et synchronisation automatique des fichiers (lsyncd) sont opérationnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=124</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=124"/>
		<updated>2026-02-21T16:22:07Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-tools-2.4.57-5.el9.x86_64&lt;br /&gt;
httpd-filesystem-2.4.57-5.el9.noarch&lt;br /&gt;
mod_ssl-2.4.57-5.el9.x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;, adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network) et définir l&#039;écoute sur toutes les interfaces.&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LISTEN 0      511          0.0.0.0:80         0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=4))&lt;br /&gt;
LISTEN 0      511          0.0.0.0:443        0.0.0.0:*    users:((&amp;quot;httpd&amp;quot;,pid=1234,fd=6))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports **80 (HTTP)** et **443 (HTTPS)** doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de chiffrer les échanges entre client et serveur, de garantir l&#039;intégrité des données et d&#039;authentifier le serveur.&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d&#039;un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour activer HTTPS, il est nécessaire de générer un certificat SSL/TLS.  &lt;br /&gt;
Dans un environnement de test, un certificat auto-signé suffit.&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL valide pour 365 jours :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant indiquer à Apache l&#039;emplacement du certificat et de la clé privée.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Apache pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification du fonctionnement HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès sécurisé au serveur web via HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre **-k** permet d&#039;ignorer l&#039;avertissement lié au certificat auto-signé.&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si la configuration est correcte, vous devez voir le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le Load Balancing permet de répartir les requêtes clients sur plusieurs serveurs web, d&#039;améliorer les performances globales, de réduire la charge sur chaque serveur et d&#039;augmenter la disponibilité du service.&lt;br /&gt;
&lt;br /&gt;
HAProxy agit comme point d&#039;entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Architecture :&lt;br /&gt;
&lt;br /&gt;
Client → HAProxy → Serveur Web 1 / Serveur Web 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse prendre le contrôle du port 80, les serveurs Apache doivent être configurés pour écouter sur un autre port.  &lt;br /&gt;
Nous allons les faire écouter sur le port **8080**.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache sur chaque serveur web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et modifier les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
**Avant** :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**Après** :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la configuration ne contient pas d&#039;erreur de syntaxe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VirtualHost configuration:&lt;br /&gt;
*:8080                 web (/etc/httpd/conf/httpd.conf:42)&lt;br /&gt;
ServerRoot: &amp;quot;/etc/httpd&amp;quot;&lt;br /&gt;
Main DocumentRoot: &amp;quot;/var/www/html&amp;quot;&lt;br /&gt;
Main ErrorLog: &amp;quot;/etc/httpd/logs/error_log&amp;quot;&lt;br /&gt;
Syntax OK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache en mode gracieux (sans couper les connexions en cours) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse communiquer avec les serveurs Apache, il est nécessaire d&#039;autoriser le trafic sur le port 8080.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements au pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HAProxy doit être installé sur le serveur qui jouera le rôle de répartiteur de charge.&lt;br /&gt;
&lt;br /&gt;
Installation du package HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de HAProxy définit comment les requêtes seront distribuées entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration principal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration utilisant l&#039;algorithme **round robin** pour la répartition de charge :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode **roundrobin** distribue les requêtes alternativement entre les serveurs, assurant une répartition équilibrée de la charge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● haproxy.service - HAProxy Load Balancer&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:00:00 CET; 5s ago&lt;br /&gt;
 Main PID: 1234 (haproxy)&lt;br /&gt;
   Status: &amp;quot;Ready.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que les clients puissent accéder au service via HAProxy, le port 80 doit être ouvert sur le serveur Load Balancer.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration du pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la règle d&#039;autorisation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la règle a bien été ajoutée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL | grep 80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le système de répartition de charge fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès via l&#039;adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives pour observer le mécanisme de distribution.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web selon l&#039;algorithme round robin.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived permet d&#039;assurer la continuité du service (Haute Disponibilité), de basculer automatiquement vers un serveur secondaire en cas de panne, d&#039;utiliser une adresse IP virtuelle partagée entre plusieurs serveurs (VIP) et de superviser l&#039;état du service HAProxy.&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
Un serveur est &#039;&#039;&#039;MASTER&#039;&#039;&#039; (actif), un serveur est &#039;&#039;&#039;BACKUP&#039;&#039;&#039; (passif). Si le serveur MASTER tombe, le BACKUP récupère automatiquement l&#039;IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived doit être installé sur les deux serveurs qui assureront la haute disponibilité (MASTER et BACKUP).&lt;br /&gt;
&lt;br /&gt;
Installation du package Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur MASTER sera le serveur actif qui portera l&#039;adresse IP virtuelle en temps normal.&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer le service Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur BACKUP reste en veille et ne prendra le relais qu&#039;en cas de défaillance du serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;adresse IP virtuelle est bien active sur le serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER, afficher les adresses IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.252/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP physique du serveur et l&#039;adresse IP virtuelle **192.168.10.250** doivent apparaître sur l&#039;interface réseau.&lt;br /&gt;
&lt;br /&gt;
Test du mécanisme de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou stopper le service Keepalived&lt;br /&gt;
2. Sur le serveur BACKUP, exécuter la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000&lt;br /&gt;
    link/ether 52:54:00:12:34:57 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.10.251/24 brd 192.168.10.255 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet 192.168.10.250/32 scope global eth0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La synchronisation permet de maintenir les mêmes fichiers sur plusieurs serveurs, d&#039;assurer la cohérence des données et de faciliter la haute disponibilité.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Lsyncd est un outil de synchronisation temps réel basé sur inotify et rsync.&lt;br /&gt;
&lt;br /&gt;
Installation du package lsyncd :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour permettre la synchronisation automatique sans saisie de mot de passe, il est nécessaire de configurer l&#039;authentification par clés SSH.&lt;br /&gt;
&lt;br /&gt;
Générer les clés SSH sur chaque serveur et les échanger.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 1, générer la clé et la copier vers le serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 2, générer la clé et la copier vers le serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de lsyncd définit les répertoires à synchroniser et les serveurs cibles.&lt;br /&gt;
&lt;br /&gt;
Créer le répertoire de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer le fichier de configuration pour synchroniser le répertoire **/var/www/html/** :&lt;br /&gt;
&lt;br /&gt;
**Remarque** : adapter l&#039;adresse IP cible en fonction du serveur où vous créez la configuration.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de service systemd pour adapter les permissions et le chemin de configuration.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants : **User=root** pour donner les droits nécessaires et **ExecStart** pour indiquer le bon chemin vers le fichier de configuration.&lt;br /&gt;
&lt;br /&gt;
Configuration finale :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger la configuration systemd pour prendre en compte les modifications :&lt;br /&gt;
&lt;br /&gt;
Sur les deux serveurs, exécuter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service au démarrage sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**Important** : démarrer le service uniquement sur le serveur maître (MASTER).  &lt;br /&gt;
Le serveur de secours (BACKUP) activera automatiquement le service lors d&#039;une bascule.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que Keepalived gère automatiquement le démarrage et l&#039;arrêt de lsyncd lors des basculements, il faut créer des scripts de notification.&lt;br /&gt;
&lt;br /&gt;
Créer deux scripts bash dans le répertoire **/etc/keepalived/** sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
**Script pour le serveur MASTER** (`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**Script pour le serveur BACKUP** (`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre les scripts exécutables :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification de l&#039;état de synchronisation.&lt;br /&gt;
&lt;br /&gt;
Ce script permet à Keepalived de surveiller l&#039;état de lsyncd.&lt;br /&gt;
&lt;br /&gt;
Créer le fichier **/usr/local/bin/check_lsyncd_sync.sh** :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre le script exécutable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /usr/local/bin/check_lsyncd_sync.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration de Keepalived pour intégrer les scripts de notification et de vérification :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplacer le contenu par la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Keepalived pour appliquer les changements :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service lsyncd est actif uniquement sur le serveur maître.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître (MASTER), vérifier l&#039;état du service :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:05:00 CET; 10s ago&lt;br /&gt;
 Main PID: 5678 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur de secours (BACKUP), vérifier que le service est bien arrêté :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:05:00 CET; 2min ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester le mécanisme de synchronisation automatique en temps réel.&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la modification a été automatiquement synchronisée sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu doit être identique sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
**Test du basculement** :&lt;br /&gt;
&lt;br /&gt;
Simuler une panne en éteignant le serveur maître, puis vérifier que lsyncd démarre automatiquement sur l&#039;esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:10:00 CET; 5s ago&lt;br /&gt;
 Main PID: 5890 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur qui est maintenant devenu maître (ancien esclave) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer l&#039;ancien serveur maître et vérifier que la synchronisation s&#039;effectue dans le bon sens :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le contenu modifié sur l&#039;ancien esclave doit être synchronisé vers le serveur qui redémarre.&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut du service lsyncd sur l&#039;ancien serveur maître (qui redevient maître) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: active (running) since Sat 2026-02-21 17:12:00 CET; 5s ago&lt;br /&gt;
 Main PID: 6012 (lsyncd)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur qui est redevenu esclave (BACKUP) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu dans la console :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
● lsyncd.service - Live Syncing (Mirror) Daemon&lt;br /&gt;
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)&lt;br /&gt;
   Active: failed (Result: exit-code) since Sat 2026-02-21 17:12:00 CET; 10s ago&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Votre infrastructure est maintenant complète : serveur Apache avec HTTPS, répartition de charge (HAProxy), haute disponibilité (Keepalived) et synchronisation automatique des fichiers (lsyncd) sont opérationnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=123</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=123"/>
		<updated>2026-02-21T16:17:19Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l’écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports **80 (HTTP)** et **443 (HTTPS)** doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de :&lt;br /&gt;
&lt;br /&gt;
* Chiffrer les échanges entre client et serveur&lt;br /&gt;
* Garantir l’intégrité des données&lt;br /&gt;
* Authentifier le serveur&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d&#039;un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour activer HTTPS, il est nécessaire de générer un certificat SSL/TLS.  &lt;br /&gt;
Dans un environnement de test, un certificat auto-signé suffit.&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL valide pour 365 jours :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Il faut maintenant indiquer à Apache l&#039;emplacement du certificat et de la clé privée.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Apache pour appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification du fonctionnement HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès sécurisé au serveur web via HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le paramètre **-k** permet d&#039;ignorer l&#039;avertissement lié au certificat auto-signé.&lt;br /&gt;
&lt;br /&gt;
Si la configuration est correcte, vous devez voir le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le Load Balancing permet :&lt;br /&gt;
&lt;br /&gt;
* Répartir les requêtes clients sur plusieurs serveurs web&lt;br /&gt;
* Améliorer les performances globales&lt;br /&gt;
* Réduire la charge sur chaque serveur&lt;br /&gt;
* Augmenter la disponibilité du service&lt;br /&gt;
&lt;br /&gt;
HAProxy agit comme point d’entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Architecture :&lt;br /&gt;
&lt;br /&gt;
Client → HAProxy → Serveur Web 1 / Serveur Web 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse prendre le contrôle du port 80, les serveurs Apache doivent être configurés pour écouter sur un autre port.  &lt;br /&gt;
Nous allons les faire écouter sur le port **8080**.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache sur chaque serveur web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Localiser et modifier les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
**Avant** :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**Après** :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la configuration ne contient pas d&#039;erreur de syntaxe :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache en mode gracieux (sans couper les connexions en cours) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que HAProxy puisse communiquer avec les serveurs Apache, il est nécessaire d&#039;autoriser le trafic sur le port 8080.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements au pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HAProxy doit être installé sur le serveur qui jouera le rôle de répartiteur de charge.&lt;br /&gt;
&lt;br /&gt;
Installation du package HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de HAProxy définit comment les requêtes seront distribuées entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de configuration principal :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de configuration utilisant l&#039;algorithme **round robin** pour la répartition de charge :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode **roundrobin** distribue les requêtes alternativement entre les serveurs, assurant une répartition équilibrée de la charge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que les clients puissent accéder au service via HAProxy, le port 80 doit être ouvert sur le serveur Load Balancer.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration du pare-feu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la règle d&#039;autorisation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le système de répartition de charge fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
Tester l&#039;accès via l&#039;adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives pour observer le mécanisme de distribution.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web selon l&#039;algorithme round robin.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived permet :&lt;br /&gt;
&lt;br /&gt;
* Assurer la continuité du service (Haute Disponibilité)&lt;br /&gt;
* Basculer automatiquement vers un serveur secondaire en cas de panne&lt;br /&gt;
* Utiliser une adresse IP virtuelle partagée entre plusieurs serveurs (VIP)&lt;br /&gt;
* Superviser l’état du service HAProxy&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;MASTER&#039;&#039;&#039; (actif)&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;BACKUP&#039;&#039;&#039; (passif)&lt;br /&gt;
* Si le serveur MASTER tombe, le BACKUP récupère automatiquement l’IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived doit être installé sur les deux serveurs qui assureront la haute disponibilité (MASTER et BACKUP).&lt;br /&gt;
&lt;br /&gt;
Installation du package Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur MASTER sera le serveur actif qui portera l&#039;adresse IP virtuelle en temps normal.&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer le service Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le serveur BACKUP reste en veille et ne prendra le relais qu&#039;en cas de défaillance du serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, éditer le fichier de configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante pour le serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer et démarrer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&#039;adresse IP virtuelle est bien active sur le serveur MASTER.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER, afficher les adresses IP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu :&lt;br /&gt;
&lt;br /&gt;
* L&#039;adresse IP physique du serveur&lt;br /&gt;
* L&#039;adresse IP virtuelle **192.168.10.250** doit apparaître sur l&#039;interface réseau&lt;br /&gt;
&lt;br /&gt;
Test du mécanisme de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou stopper le service Keepalived&lt;br /&gt;
2. Sur le serveur BACKUP, exécuter la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L’adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La synchronisation permet :  &lt;br /&gt;
&lt;br /&gt;
* Maintenir les mêmes fichiers sur plusieurs serveurs  &lt;br /&gt;
* Assurer la cohérence des données  &lt;br /&gt;
* Faciliter la haute disponibilité  &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Lsyncd est un outil de synchronisation temps réel basé sur inotify et rsync.&lt;br /&gt;
&lt;br /&gt;
Installation du package lsyncd :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour permettre la synchronisation automatique sans saisie de mot de passe, il est nécessaire de configurer l&#039;authentification par clés SSH.&lt;br /&gt;
&lt;br /&gt;
Générer les clés SSH sur chaque serveur et les échanger.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 1, générer la clé et la copier vers le serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur 2, générer la clé et la copier vers le serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La configuration de lsyncd définit les répertoires à synchroniser et les serveurs cibles.&lt;br /&gt;
&lt;br /&gt;
Créer le répertoire de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer le fichier de configuration pour synchroniser le répertoire **/var/www/html/** :&lt;br /&gt;
&lt;br /&gt;
**Remarque** : adapter l&#039;adresse IP cible en fonction du serveur où vous créez la configuration.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier de service systemd pour adapter les permissions et le chemin de configuration.&lt;br /&gt;
&lt;br /&gt;
Éditer le fichier sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier les paramètres suivants :&lt;br /&gt;
&lt;br /&gt;
* **User=root** : pour donner les droits nécessaires&lt;br /&gt;
* **ExecStart** : pour indiquer le bon chemin vers le fichier de configuration&lt;br /&gt;
&lt;br /&gt;
Configuration finale :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recharger la configuration systemd pour prendre en compte les modifications :&lt;br /&gt;
&lt;br /&gt;
Sur les deux serveurs, exécuter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service au démarrage sur les deux serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**Important** : démarrer le service uniquement sur le serveur maître (MASTER).  &lt;br /&gt;
Le serveur de secours (BACKUP) activera automatiquement le service lors d&#039;une bascule.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour que Keepalived gère automatiquement le démarrage et l&#039;arrêt de lsyncd lors des basculements, il faut créer des scripts de notification.&lt;br /&gt;
&lt;br /&gt;
Créer deux scripts bash dans le répertoire **/etc/keepalived/** sur les deux serveurs.&lt;br /&gt;
&lt;br /&gt;
**Script pour le serveur MASTER** (`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**Script pour le serveur BACKUP** (`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre les scripts exécutables :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification de l&#039;état de synchronisation.&lt;br /&gt;
&lt;br /&gt;
Ce script permet à Keepalived de surveiller l&#039;état de lsyncd.&lt;br /&gt;
&lt;br /&gt;
Créer le fichier **/usr/local/bin/check_lsyncd_sync.sh** :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rendre le script exécutable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /usr/local/bin/check_lsyncd_sync.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration de Keepalived pour intégrer les scripts de notification et de vérification :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remplacer le contenu par la configuration suivante :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le service Keepalived pour appliquer les changements :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service lsyncd est actif uniquement sur le serveur maître.&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître (MASTER), vérifier l&#039;état du service :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur de secours (BACKUP), vérifier que le service est bien arrêté :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester le mécanisme de synchronisation automatique en temps réel.&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que la modification a été automatiquement synchronisée sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**Test du basculement** :&lt;br /&gt;
&lt;br /&gt;
Simuler une panne en éteignant le serveur maître, puis vérifier que lsyncd démarre automatiquement sur l&#039;esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le serveur qui est maintenant devenu maître (ancien esclave) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer l&#039;ancien serveur maître et vérifier que la synchronisation s&#039;effectue dans le bon sens :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut du service lsyncd sur l&#039;ancien serveur maître (qui redevient maître) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur qui est redevenu esclave (BACKUP) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Résultat attendu :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Votre infrastructure est maintenant complète : serveur Apache avec HTTPS, répartition de charge (HAProxy), haute disponibilité (Keepalived) et synchronisation automatique des fichiers (lsyncd) sont opérationnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=122</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=122"/>
		<updated>2026-02-21T15:34:07Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Partie 1 — Installation et Configuration Apache */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l’écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports **80 (HTTP)** et **443 (HTTPS)** doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de :&lt;br /&gt;
&lt;br /&gt;
* Chiffrer les échanges entre client et serveur&lt;br /&gt;
* Garantir l’intégrité des données&lt;br /&gt;
* Authentifier le serveur&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d’un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès sécurisé :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le Load Balancing permet :&lt;br /&gt;
&lt;br /&gt;
* Répartir les requêtes clients sur plusieurs serveurs web&lt;br /&gt;
* Améliorer les performances globales&lt;br /&gt;
* Réduire la charge sur chaque serveur&lt;br /&gt;
* Augmenter la disponibilité du service&lt;br /&gt;
&lt;br /&gt;
HAProxy agit comme point d’entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Architecture :&lt;br /&gt;
&lt;br /&gt;
Client → HAProxy → Serveur Web 1 / Serveur Web 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Les serveurs Apache doivent écouter sur le port &#039;&#039;&#039;8080&#039;&#039;&#039; afin que HAProxy utilise le port 80.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
Avant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Autoriser le trafic vers Apache sur les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Modifier iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur Load Balancer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration exemple en mode &#039;&#039;&#039;round robin&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &#039;&#039;&#039;roundrobin&#039;&#039;&#039; distribue les requêtes alternativement entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Autoriser l’accès client au serveur HAProxy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès via l’adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived permet :&lt;br /&gt;
&lt;br /&gt;
* Assurer la continuité du service (Haute Disponibilité)&lt;br /&gt;
* Basculer automatiquement vers un serveur secondaire en cas de panne&lt;br /&gt;
* Utiliser une adresse IP virtuelle partagée entre plusieurs serveurs (VIP)&lt;br /&gt;
* Superviser l’état du service HAProxy&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;MASTER&#039;&#039;&#039; (actif)&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;BACKUP&#039;&#039;&#039; (passif)&lt;br /&gt;
* Si le serveur MASTER tombe, le BACKUP récupère automatiquement l’IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer Keepalived sur les deux serveurs (MASTER et BACKUP) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, créer le même fichier avec quelques modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir :&lt;br /&gt;
&lt;br /&gt;
* L’adresse IP du serveur&lt;br /&gt;
* L’adresse IP virtuelle &#039;&#039;&#039;192.168.10.250&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Test de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou le service Keepalived &amp;lt;br&amp;gt;&lt;br /&gt;
2. Sur le serveur BACKUP exécuter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L’adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La synchronisation permet :  &lt;br /&gt;
&lt;br /&gt;
* Maintenir les mêmes fichiers sur plusieurs serveurs  &lt;br /&gt;
* Assurer la cohérence des données  &lt;br /&gt;
* Faciliter la haute disponibilité  &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Depuis les 2 serveurs, générer les clés SSH pour permettre à lsyncd de faire la synchronisation :&lt;br /&gt;
&lt;br /&gt;
Sur serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer le dossier de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer la configuration et ajouter les éléments nécessaires pour les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier également le daemon lsyncd sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier de mettre `User=root` et le chemin correct de la conf.lua dans `ExecStart` :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le daemon sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais démarrer uniquement sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer 2 nouveaux scripts bash dans `/etc/keepalived/` sur les 2 serveurs :&lt;br /&gt;
&lt;br /&gt;
Master (`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Backup (`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donner les droits d’exécution :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification : `/usr/local/bin/check_lsyncd_sync.sh`  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier `keepalived.conf` :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Keepalived :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la synchro sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éteindre le maître et vérifier l’état sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le maître et vérifier la synchronisation :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier le status du maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vous avez votre serveur Apache avec HTTPS, le loadbalancing et la synchronisation fonctionnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=121</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=121"/>
		<updated>2026-02-21T15:33:47Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Installation et Configuration Apache HTTPD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l’écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports **80 (HTTP)** et **443 (HTTPS)** doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de :&lt;br /&gt;
&lt;br /&gt;
* Chiffrer les échanges entre client et serveur&lt;br /&gt;
* Garantir l’intégrité des données&lt;br /&gt;
* Authentifier le serveur&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d’un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès sécurisé :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le Load Balancing permet :&lt;br /&gt;
&lt;br /&gt;
* Répartir les requêtes clients sur plusieurs serveurs web&lt;br /&gt;
* Améliorer les performances globales&lt;br /&gt;
* Réduire la charge sur chaque serveur&lt;br /&gt;
* Augmenter la disponibilité du service&lt;br /&gt;
&lt;br /&gt;
HAProxy agit comme point d’entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Architecture :&lt;br /&gt;
&lt;br /&gt;
Client → HAProxy → Serveur Web 1 / Serveur Web 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Les serveurs Apache doivent écouter sur le port &#039;&#039;&#039;8080&#039;&#039;&#039; afin que HAProxy utilise le port 80.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
Avant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Autoriser le trafic vers Apache sur les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Modifier iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur Load Balancer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration exemple en mode &#039;&#039;&#039;round robin&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &#039;&#039;&#039;roundrobin&#039;&#039;&#039; distribue les requêtes alternativement entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Autoriser l’accès client au serveur HAProxy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès via l’adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived permet :&lt;br /&gt;
&lt;br /&gt;
* Assurer la continuité du service (Haute Disponibilité)&lt;br /&gt;
* Basculer automatiquement vers un serveur secondaire en cas de panne&lt;br /&gt;
* Utiliser une adresse IP virtuelle partagée entre plusieurs serveurs (VIP)&lt;br /&gt;
* Superviser l’état du service HAProxy&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;MASTER&#039;&#039;&#039; (actif)&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;BACKUP&#039;&#039;&#039; (passif)&lt;br /&gt;
* Si le serveur MASTER tombe, le BACKUP récupère automatiquement l’IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer Keepalived sur les deux serveurs (MASTER et BACKUP) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, créer le même fichier avec quelques modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir :&lt;br /&gt;
&lt;br /&gt;
* L’adresse IP du serveur&lt;br /&gt;
* L’adresse IP virtuelle &#039;&#039;&#039;192.168.10.250&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Test de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou le service Keepalived &amp;lt;br&amp;gt;&lt;br /&gt;
2. Sur le serveur BACKUP exécuter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L’adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La synchronisation permet :  &lt;br /&gt;
&lt;br /&gt;
* Maintenir les mêmes fichiers sur plusieurs serveurs  &lt;br /&gt;
* Assurer la cohérence des données  &lt;br /&gt;
* Faciliter la haute disponibilité  &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Depuis les 2 serveurs, générer les clés SSH pour permettre à lsyncd de faire la synchronisation :&lt;br /&gt;
&lt;br /&gt;
Sur serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer le dossier de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer la configuration et ajouter les éléments nécessaires pour les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier également le daemon lsyncd sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier de mettre `User=root` et le chemin correct de la conf.lua dans `ExecStart` :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le daemon sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais démarrer uniquement sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer 2 nouveaux scripts bash dans `/etc/keepalived/` sur les 2 serveurs :&lt;br /&gt;
&lt;br /&gt;
Master (`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Backup (`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donner les droits d’exécution :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification : `/usr/local/bin/check_lsyncd_sync.sh`  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier `keepalived.conf` :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Keepalived :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la synchro sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éteindre le maître et vérifier l’état sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le maître et vérifier la synchronisation :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier le status du maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vous avez votre serveur Apache avec HTTPS, le loadbalancing et la synchronisation fonctionnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=120</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=120"/>
		<updated>2026-02-21T15:33:18Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Installation et Configuration Apache HTTPD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &amp;lt;br&amp;gt;&lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &amp;lt;br&amp;gt;&lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l’écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports **80 (HTTP)** et **443 (HTTPS)** doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de :&lt;br /&gt;
&lt;br /&gt;
* Chiffrer les échanges entre client et serveur&lt;br /&gt;
* Garantir l’intégrité des données&lt;br /&gt;
* Authentifier le serveur&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d’un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès sécurisé :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le Load Balancing permet :&lt;br /&gt;
&lt;br /&gt;
* Répartir les requêtes clients sur plusieurs serveurs web&lt;br /&gt;
* Améliorer les performances globales&lt;br /&gt;
* Réduire la charge sur chaque serveur&lt;br /&gt;
* Augmenter la disponibilité du service&lt;br /&gt;
&lt;br /&gt;
HAProxy agit comme point d’entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Architecture :&lt;br /&gt;
&lt;br /&gt;
Client → HAProxy → Serveur Web 1 / Serveur Web 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Les serveurs Apache doivent écouter sur le port &#039;&#039;&#039;8080&#039;&#039;&#039; afin que HAProxy utilise le port 80.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
Avant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Autoriser le trafic vers Apache sur les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Modifier iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur Load Balancer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration exemple en mode &#039;&#039;&#039;round robin&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &#039;&#039;&#039;roundrobin&#039;&#039;&#039; distribue les requêtes alternativement entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Autoriser l’accès client au serveur HAProxy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès via l’adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived permet :&lt;br /&gt;
&lt;br /&gt;
* Assurer la continuité du service (Haute Disponibilité)&lt;br /&gt;
* Basculer automatiquement vers un serveur secondaire en cas de panne&lt;br /&gt;
* Utiliser une adresse IP virtuelle partagée entre plusieurs serveurs (VIP)&lt;br /&gt;
* Superviser l’état du service HAProxy&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;MASTER&#039;&#039;&#039; (actif)&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;BACKUP&#039;&#039;&#039; (passif)&lt;br /&gt;
* Si le serveur MASTER tombe, le BACKUP récupère automatiquement l’IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer Keepalived sur les deux serveurs (MASTER et BACKUP) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, créer le même fichier avec quelques modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir :&lt;br /&gt;
&lt;br /&gt;
* L’adresse IP du serveur&lt;br /&gt;
* L’adresse IP virtuelle &#039;&#039;&#039;192.168.10.250&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Test de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou le service Keepalived &amp;lt;br&amp;gt;&lt;br /&gt;
2. Sur le serveur BACKUP exécuter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L’adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La synchronisation permet :  &lt;br /&gt;
&lt;br /&gt;
* Maintenir les mêmes fichiers sur plusieurs serveurs  &lt;br /&gt;
* Assurer la cohérence des données  &lt;br /&gt;
* Faciliter la haute disponibilité  &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Depuis les 2 serveurs, générer les clés SSH pour permettre à lsyncd de faire la synchronisation :&lt;br /&gt;
&lt;br /&gt;
Sur serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer le dossier de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer la configuration et ajouter les éléments nécessaires pour les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier également le daemon lsyncd sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier de mettre `User=root` et le chemin correct de la conf.lua dans `ExecStart` :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le daemon sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais démarrer uniquement sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer 2 nouveaux scripts bash dans `/etc/keepalived/` sur les 2 serveurs :&lt;br /&gt;
&lt;br /&gt;
Master (`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Backup (`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donner les droits d’exécution :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification : `/usr/local/bin/check_lsyncd_sync.sh`  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier `keepalived.conf` :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Keepalived :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la synchro sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éteindre le maître et vérifier l’état sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le maître et vérifier la synchronisation :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier le status du maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vous avez votre serveur Apache avec HTTPS, le loadbalancing et la synchronisation fonctionnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=119</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=119"/>
		<updated>2026-02-21T15:32:50Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Installation et Configuration Apache HTTPD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. &lt;br /&gt;
Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. &lt;br /&gt;
Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l’écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports **80 (HTTP)** et **443 (HTTPS)** doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de :&lt;br /&gt;
&lt;br /&gt;
* Chiffrer les échanges entre client et serveur&lt;br /&gt;
* Garantir l’intégrité des données&lt;br /&gt;
* Authentifier le serveur&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d’un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès sécurisé :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le Load Balancing permet :&lt;br /&gt;
&lt;br /&gt;
* Répartir les requêtes clients sur plusieurs serveurs web&lt;br /&gt;
* Améliorer les performances globales&lt;br /&gt;
* Réduire la charge sur chaque serveur&lt;br /&gt;
* Augmenter la disponibilité du service&lt;br /&gt;
&lt;br /&gt;
HAProxy agit comme point d’entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Architecture :&lt;br /&gt;
&lt;br /&gt;
Client → HAProxy → Serveur Web 1 / Serveur Web 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Les serveurs Apache doivent écouter sur le port &#039;&#039;&#039;8080&#039;&#039;&#039; afin que HAProxy utilise le port 80.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
Avant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Autoriser le trafic vers Apache sur les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Modifier iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur Load Balancer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration exemple en mode &#039;&#039;&#039;round robin&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &#039;&#039;&#039;roundrobin&#039;&#039;&#039; distribue les requêtes alternativement entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Autoriser l’accès client au serveur HAProxy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès via l’adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived permet :&lt;br /&gt;
&lt;br /&gt;
* Assurer la continuité du service (Haute Disponibilité)&lt;br /&gt;
* Basculer automatiquement vers un serveur secondaire en cas de panne&lt;br /&gt;
* Utiliser une adresse IP virtuelle partagée entre plusieurs serveurs (VIP)&lt;br /&gt;
* Superviser l’état du service HAProxy&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;MASTER&#039;&#039;&#039; (actif)&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;BACKUP&#039;&#039;&#039; (passif)&lt;br /&gt;
* Si le serveur MASTER tombe, le BACKUP récupère automatiquement l’IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer Keepalived sur les deux serveurs (MASTER et BACKUP) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, créer le même fichier avec quelques modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir :&lt;br /&gt;
&lt;br /&gt;
* L’adresse IP du serveur&lt;br /&gt;
* L’adresse IP virtuelle &#039;&#039;&#039;192.168.10.250&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Test de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou le service Keepalived &amp;lt;br&amp;gt;&lt;br /&gt;
2. Sur le serveur BACKUP exécuter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L’adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La synchronisation permet :  &lt;br /&gt;
&lt;br /&gt;
* Maintenir les mêmes fichiers sur plusieurs serveurs  &lt;br /&gt;
* Assurer la cohérence des données  &lt;br /&gt;
* Faciliter la haute disponibilité  &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Depuis les 2 serveurs, générer les clés SSH pour permettre à lsyncd de faire la synchronisation :&lt;br /&gt;
&lt;br /&gt;
Sur serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer le dossier de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer la configuration et ajouter les éléments nécessaires pour les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier également le daemon lsyncd sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier de mettre `User=root` et le chemin correct de la conf.lua dans `ExecStart` :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le daemon sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais démarrer uniquement sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer 2 nouveaux scripts bash dans `/etc/keepalived/` sur les 2 serveurs :&lt;br /&gt;
&lt;br /&gt;
Master (`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Backup (`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donner les droits d’exécution :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification : `/usr/local/bin/check_lsyncd_sync.sh`  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier `keepalived.conf` :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Keepalived :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la synchro sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éteindre le maître et vérifier l’état sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le maître et vérifier la synchronisation :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier le status du maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vous avez votre serveur Apache avec HTTPS, le loadbalancing et la synchronisation fonctionnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=118</id>
		<title>Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=Apache&amp;diff=118"/>
		<updated>2026-02-21T15:32:19Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Installation et Configuration Apache HTTPD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Installation et Configuration Apache HTTPD&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#b9770e;&amp;quot;&amp;gt;&lt;br /&gt;
Cette section décrit l’installation et la configuration complète d’un serveur web Apache (HTTPD) avec SSL. Elle permet de rendre votre serveur accessible sur le réseau et d’héberger des pages web. Elle inclut également la mise en place d’un système de load balancing avec HAProxy, d’une architecture haute disponibilité avec Keepalived, ainsi qu’un mécanisme de synchronisation entre les serveurs afin d’assurer la continuité de service, la répartition de charge et la tolérance aux pannes.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Partie 1 — Installation et Configuration Apache&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;Installation et configuration du serveur web Apache HTTPD&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
  &lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Installation des packages&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installation du serveur Apache ainsi que du module SSL pour HTTPS :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install httpd mod_ssl -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier que l’installation s’est bien déroulée :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Configuration du serveur&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tout d’abord, il faut paramétrer le nom de la machine ainsi que l’adresse d’écoute du serveur web.&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;/etc/httpd/conf/httpd.conf&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Chercher les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 80&lt;br /&gt;
#ServerName www.example.com:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instructions :&lt;br /&gt;
&lt;br /&gt;
* Décommenter la ligne &amp;lt;b&amp;gt;ServerName&amp;lt;/b&amp;gt;&lt;br /&gt;
* Adapter le nom en fonction de votre configuration réseau (/etc/sysconfig/network)&lt;br /&gt;
* Définir l’écoute sur toutes les interfaces&lt;br /&gt;
&lt;br /&gt;
Configuration finale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Démarrage du service HTTPD&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Démarrage du service Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activation automatique au démarrage du système (création du lien symbolique) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable httpd.service --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vérifier que le service fonctionne correctement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -atnp | grep httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si Apache fonctionne correctement, les ports **80 (HTTP)** et **443 (HTTPS)** doivent apparaître en écoute.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Ouverture des ports dans iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Pour rendre votre site accessible depuis le réseau, il est nécessaire d’ouvrir les ports 80 et 443.  &lt;br /&gt;
Sans cette étape, votre navigateur affichera une erreur de connexion refusée.&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter les règles suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 2 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
-I INPUT 3 -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer les changements :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier les règles :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -nvL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Résultat attendu&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Après vérification, vous devez voir apparaître les règles pour les ports HTTP et HTTPS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;IMPORTANT : les 2 lignes en gras ci-dessous doivent absolument être visibles.&amp;lt;/b&amp;gt;  &lt;br /&gt;
Ce sont elles qui autorisent l’accès au serveur web.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
 pkts bytes target  prot opt in out source      destination&lt;br /&gt;
   81  5840 ACCEPT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:80&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  tcp dpt:443&#039;&#039;&#039;&lt;br /&gt;
    0     0 ACCEPT  icmp --  *   *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  all  --  lo  *   0.0.0.0/0  0.0.0.0/0&lt;br /&gt;
    0     0 ACCEPT  tcp  --  *   *   0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:22&lt;br /&gt;
    0     0 REJECT  all  --  *   *   0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Création de la page d’accueil&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer la première page de votre site web :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de contenu :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attribuer les droits au dossier pour qu’Apache puisse accéder aux fichiers :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chown apache.apache -R /var/www/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Vérification finale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès au serveur avec curl :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir apparaître le contenu de votre page web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Important&amp;lt;/span&amp;gt; ==&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff8ec; border:1px solid #f5cba7; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#935116;&amp;quot;&amp;gt;La procédure doit être répétée sur votre second serveur afin de compléter l’infrastructure.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Partie 2 — Configuration HTTPS (SSL/TLS)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#ebf5fb; border:1px solid #aed6f1; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1f618d;&amp;quot;&amp;gt;Mise en place du chiffrement SSL/TLS pour sécuriser les communications web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
HTTPS permet de :&lt;br /&gt;
&lt;br /&gt;
* Chiffrer les échanges entre client et serveur&lt;br /&gt;
* Garantir l’intégrité des données&lt;br /&gt;
* Authentifier le serveur&lt;br /&gt;
&lt;br /&gt;
Le protocole utilise le port &#039;&#039;&#039;443&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Création d’un certificat auto-signé&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Générer un certificat SSL :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \&lt;br /&gt;
-keyout /etc/pki/tls/private/apache.key \&lt;br /&gt;
-out /etc/pki/tls/certs/apache.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Configuration Apache HTTPS&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf.d/ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adapter les lignes suivantes :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLCertificateFile /etc/pki/tls/certs/apache.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/pki/tls/private/apache.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart httpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#2e86c1;&amp;quot;&amp;gt;Vérification&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès sécurisé :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl -k https://IP_SERVEUR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Partie 3 — Load Balancing avec HAProxy&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Répartition de charge entre plusieurs serveurs web afin d’améliorer les performances et la disponibilité des services.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Le Load Balancing permet :&lt;br /&gt;
&lt;br /&gt;
* Répartir les requêtes clients sur plusieurs serveurs web&lt;br /&gt;
* Améliorer les performances globales&lt;br /&gt;
* Réduire la charge sur chaque serveur&lt;br /&gt;
* Augmenter la disponibilité du service&lt;br /&gt;
&lt;br /&gt;
HAProxy agit comme point d’entrée unique et distribue les requêtes vers les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Architecture :&lt;br /&gt;
&lt;br /&gt;
Client → HAProxy → Serveur Web 1 / Serveur Web 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Préparation des serveurs Apache (Backend)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Les serveurs Apache doivent écouter sur le port &#039;&#039;&#039;8080&#039;&#039;&#039; afin que HAProxy utilise le port 80.&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/httpd/conf/httpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier :&lt;br /&gt;
&lt;br /&gt;
Avant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:80&lt;br /&gt;
ServerName web:80&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen *:8080&lt;br /&gt;
ServerName web:8080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Apache :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
httpd -k graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 8080 sur les serveurs web&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Autoriser le trafic vers Apache sur les serveurs backend.&lt;br /&gt;
&lt;br /&gt;
Modifier iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur Load Balancer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install haproxy -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier le fichier :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/haproxy/haproxy.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration exemple en mode &#039;&#039;&#039;round robin&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global&lt;br /&gt;
    log /dev/log local0&lt;br /&gt;
    maxconn 2000&lt;br /&gt;
    daemon&lt;br /&gt;
&lt;br /&gt;
defaults&lt;br /&gt;
    mode http&lt;br /&gt;
    timeout connect 5s&lt;br /&gt;
    timeout client 50s&lt;br /&gt;
    timeout server 50s&lt;br /&gt;
&lt;br /&gt;
frontend http_front&lt;br /&gt;
    bind *:80&lt;br /&gt;
    default_backend web_back&lt;br /&gt;
&lt;br /&gt;
backend web_back&lt;br /&gt;
    balance roundrobin&lt;br /&gt;
    option httpchk&lt;br /&gt;
    server web1 192.168.10.252:8080 check&lt;br /&gt;
    server web2 192.168.10.251:8080 check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le mode &#039;&#039;&#039;roundrobin&#039;&#039;&#039; distribue les requêtes alternativement entre les serveurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service HAProxy&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable haproxy --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier le statut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status haproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture du port 80 sur le Load Balancer&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Autoriser l’accès client au serveur HAProxy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-I INPUT 1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Appliquer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Test du Load Balancing&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Tester l’accès via l’adresse IP du serveur HAProxy :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl 192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effectuer plusieurs requêtes successives.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eafaf1; border:1px solid #a9dfbf; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#1e8449;&amp;quot;&amp;gt;Si la configuration fonctionne correctement, les réponses doivent alterner entre les différents serveurs web.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Partie 4 — Haute Disponibilité avec Keepalived&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Mise en place d’une adresse IP virtuelle (VIP) afin d’assurer la continuité de service en cas de panne d’un serveur.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Keepalived permet :&lt;br /&gt;
&lt;br /&gt;
* Assurer la continuité du service (Haute Disponibilité)&lt;br /&gt;
* Basculer automatiquement vers un serveur secondaire en cas de panne&lt;br /&gt;
* Utiliser une adresse IP virtuelle partagée entre plusieurs serveurs (VIP)&lt;br /&gt;
* Superviser l’état du service HAProxy&lt;br /&gt;
&lt;br /&gt;
Fonctionnement :&lt;br /&gt;
&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;MASTER&#039;&#039;&#039; (actif)&lt;br /&gt;
* Un serveur est &#039;&#039;&#039;BACKUP&#039;&#039;&#039; (passif)&lt;br /&gt;
* Si le serveur MASTER tombe, le BACKUP récupère automatiquement l’IP virtuelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Installer Keepalived sur les deux serveurs (MASTER et BACKUP) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install keepalived -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur maître (MASTER)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Vider le fichier de configuration par défaut :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;gt; /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la configuration :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Démarrer et activer Keepalived :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration du serveur secondaire (BACKUP)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur la seconde machine, créer le même fichier avec quelques modifications :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur BACKUP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
global_defs {&lt;br /&gt;
   router_id WEB2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state BACKUP&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 90&lt;br /&gt;
    advert_int 1&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable keepalived --now&lt;br /&gt;
systemctl start keepalived --now&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Vérification du fonctionnement&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur MASTER :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez voir :&lt;br /&gt;
&lt;br /&gt;
* L’adresse IP du serveur&lt;br /&gt;
* L’adresse IP virtuelle &#039;&#039;&#039;192.168.10.250&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Test de basculement :&lt;br /&gt;
&lt;br /&gt;
1. Arrêter le serveur MASTER ou le service Keepalived &amp;lt;br&amp;gt;&lt;br /&gt;
2. Sur le serveur BACKUP exécuter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L’adresse IP virtuelle doit apparaître automatiquement sur le serveur secondaire.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f4ecf7; border:1px solid #d2b4de; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#6c3483;&amp;quot;&amp;gt;Cela confirme que la haute disponibilité fonctionne correctement.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Partie 5 — Synchronisation des serveurs&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#566573;&amp;quot;&amp;gt;Synchronisation des fichiers web entre les serveurs pour garantir la cohérence des données.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
La synchronisation permet :  &lt;br /&gt;
&lt;br /&gt;
* Maintenir les mêmes fichiers sur plusieurs serveurs  &lt;br /&gt;
* Assurer la cohérence des données  &lt;br /&gt;
* Faciliter la haute disponibilité  &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Installation de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install lsyncd -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Génération des clés SSH&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Depuis les 2 serveurs, générer les clés SSH pour permettre à lsyncd de faire la synchronisation :&lt;br /&gt;
&lt;br /&gt;
Sur serveur 1 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur serveur 2 :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N &amp;quot;&amp;quot;&lt;br /&gt;
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.252&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Configuration de lsyncd&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer le dossier de configuration :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer la configuration et ajouter les éléments nécessaires pour les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings {&lt;br /&gt;
   logfile = &amp;quot;/var/log/lsyncd.log&amp;quot;,&lt;br /&gt;
   statusFile = &amp;quot;/var/log/lsyncd.status&amp;quot;,&lt;br /&gt;
   nodaemon = false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sync {&lt;br /&gt;
   default.rsync,&lt;br /&gt;
   source = &amp;quot;/var/www/html/&amp;quot;,&lt;br /&gt;
   target = &amp;quot;root@192.168.10.251:/var/www/html/&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
   rsync = {&lt;br /&gt;
      archive = true,&lt;br /&gt;
      compress = true,&lt;br /&gt;
      _extra = {&amp;quot;--delete&amp;quot;}&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier également le daemon lsyncd sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /usr/lib/systemd/system/lsyncd.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier de mettre `User=root` et le chemin correct de la conf.lua dans `ExecStart` :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Live Syncing (Mirror) Daemon&lt;br /&gt;
Documentation=man:lsyncd(1) https://axkibe.github.io/lsyncd/&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Type=simple&lt;br /&gt;
EnvironmentFile=-/etc/sysconfig/lsyncd&lt;br /&gt;
ExecStart=/usr/bin/lsyncd -nodaemon /etc/lsyncd/lsyncd.conf.lua&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le daemon sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activer le service sur les 2 serveurs :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais démarrer uniquement sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Reconfiguration de Keepalived&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Créer 2 nouveaux scripts bash dans `/etc/keepalived/` sur les 2 serveurs :&lt;br /&gt;
&lt;br /&gt;
Master (`master.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl start lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Backup (`backup.sh`) :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
systemctl stop lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donner les droits d’exécution :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/keepalived/master.sh&lt;br /&gt;
chmod +x /etc/keepalived/backup.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créer un script de vérification : `/usr/local/bin/check_lsyncd_sync.sh`  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
STATUS_FILE=&amp;quot;/var/log/lsyncd.status&amp;quot;&lt;br /&gt;
&lt;br /&gt;
systemctl is-active --quiet lsyncd&lt;br /&gt;
if [ $? -ne 0 ]; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if grep -q &amp;quot;Syncing&amp;quot; &amp;quot;$STATUS_FILE&amp;quot;; then&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier `keepalived.conf` :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/keepalived/keepalived.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bal_defs {&lt;br /&gt;
   router_id WEB1&lt;br /&gt;
}&lt;br /&gt;
vrrp_script check_sync {&lt;br /&gt;
    script &amp;quot;/usr/local/bin/check_lsyncd_sync.sh&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
    weight 2&lt;br /&gt;
}&lt;br /&gt;
vrrp_script chk_haproxy {&lt;br /&gt;
    script &amp;quot;pidof haproxy&amp;quot;&lt;br /&gt;
    interval 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
vrrp_instance VI_1 {&lt;br /&gt;
    state MASTER&lt;br /&gt;
    interface eth0&lt;br /&gt;
    virtual_router_id 51&lt;br /&gt;
    priority 100&lt;br /&gt;
    advert_int 1&lt;br /&gt;
    nopreempt&lt;br /&gt;
&lt;br /&gt;
    authentication {&lt;br /&gt;
        auth_type PASS&lt;br /&gt;
        auth_pass 1234&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    virtual_ipaddress {&lt;br /&gt;
        192.168.10.250&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    track_script {&lt;br /&gt;
        chk_haproxy&lt;br /&gt;
        check_sync&lt;br /&gt;
    }&lt;br /&gt;
    notify_master &amp;quot;/etc/keepalived/master.sh&amp;quot;&lt;br /&gt;
    notify_backup &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
    notify_fault &amp;quot;/etc/keepalived/backup.sh&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer Keepalived :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart keepalived&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vérification&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Sur le serveur maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur le serveur esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Test de la synchronisation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur le maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier la synchro sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éteindre le maître et vérifier l’état sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modifier la page HTML sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrer le maître et vérifier la synchronisation :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /var/www/html/index.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier le status du maître :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Active&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sur l’esclave :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl status lsyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devriez voir :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f2f4f4; border:1px solid #d5d8dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#5d6d7e;&amp;quot;&amp;gt;Vous avez votre serveur Apache avec HTTPS, le loadbalancing et la synchronisation fonctionnels.&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=DHCP&amp;diff=117</id>
		<title>DHCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=DHCP&amp;diff=117"/>
		<updated>2026-02-21T15:27:43Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Modes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;color:#2c3e50;&amp;quot;&amp;gt;DHCP&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f0f4f8; border:1px solid #c7d3e0; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:120%; color:#2c3e50;&amp;quot;&amp;gt;&lt;br /&gt;
Le &amp;lt;b&amp;gt;DHCP (Dynamic Host Configuration Protocol)&amp;lt;/b&amp;gt; permet d’attribuer automatiquement des adresses IP aux machines d’un réseau.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#2c3e50;&amp;quot;&amp;gt;Infrastructure DHCP — Rocky Linux&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f5f7fa; border:1px solid #d6dbe1; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#34495e;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Documentation complète de mise en place d’une infrastructure DHCP sous Rocky Linux&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#196f3d;&amp;quot;&amp;gt;1 — Création du Serveur DHCP&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3f9f1; border:1px solid #cfe5c9; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#196f3d;&amp;quot;&amp;gt;Installation et configuration du service DHCP&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install dhcp-server -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier l’installation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep dhcp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration principale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/dhcp/dhcpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration minimale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
subnet 192.168.30.0 netmask 255.255.255.0 {&lt;br /&gt;
    authoritative;&lt;br /&gt;
&lt;br /&gt;
    option routers 192.168.30.254;&lt;br /&gt;
    option domain-name-servers 192.168.40.253;&lt;br /&gt;
    range 192.168.30.10 192.168.30.50;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Vérification de la configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dhcpd -t&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable dhcpd&lt;br /&gt;
systemctl start dhcpd&lt;br /&gt;
systemctl status dhcpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture de iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
-I INPUT 2 -p udp --dport 67 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Enregistrement des changements&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;2 — Configuration DHCP détaillée&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Configuration avancée du serveur DHCP&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Explication des directives&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%; background:#ffffff; border:1px solid #fad7a0; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
! Directive !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subnet || Réseau géré&lt;br /&gt;
|-&lt;br /&gt;
| authoritative || Serveur DHCP officiel&lt;br /&gt;
|-&lt;br /&gt;
| option routers || Passerelle réseau&lt;br /&gt;
|-&lt;br /&gt;
| option domain-name-servers || Serveurs DNS fournis&lt;br /&gt;
|-&lt;br /&gt;
| range || Plage IP distribuée&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Attribution d’une IP fixe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host dhcp1 {&lt;br /&gt;
 hardware ethernet 00:00:00:00:00:00;&lt;br /&gt;
 fixed-address 192.168.40.253;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Plusieurs réseaux&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Répétez cette procédure pour tous les réseaux nécessaires.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;3 — DHCP Relay sur Firewall&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f5eef8; border:1px solid #d7c6e6; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Transmission des requêtes DHCP entre réseaux&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fafafa; border:1px solid #ddd; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Le DHCP fonctionne en broadcast.  &lt;br /&gt;
Les routeurs bloquent ces requêtes.  &lt;br /&gt;
Le DHCP Relay transmet les requêtes vers un serveur distant.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Architecture :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Client → Firewall → Serveur DHCP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install dhcp-relay -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/&lt;br /&gt;
vi /etc/systemd/system/dhcrelay.service&lt;br /&gt;
ExecStart=/usr/sbin/dhcrelay -d --no-pid -i pri -i lan -i dmz 192.168.40.253 192.168.40.251&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
vi /etc/sysconfig/dhcrelay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INTERFACES=&amp;quot;dmz pri lan&amp;quot;&lt;br /&gt;
DHCPSERVERS=&amp;quot;192.168.40.253&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Activation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable dhcrelay&lt;br /&gt;
systemctl start dhcrelay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#922b21;&amp;quot;&amp;gt;4 — DHCP Maître / Esclave (Failover)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fdeeee; border:1px solid #efc2c2; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#922b21;&amp;quot;&amp;gt;Haute disponibilité du service DHCP&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#a93226;&amp;quot;&amp;gt;Objectif&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
* Continuité de service&lt;br /&gt;
* Synchronisation des baux&lt;br /&gt;
* Prévention des conflits IP&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#a93226;&amp;quot;&amp;gt;Modes&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:35%; border:1px solid #f5b7b1; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
! Mode !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Load Balance || Partage de charge&lt;br /&gt;
|-&lt;br /&gt;
| Hot Standby || Serveur secondaire de secours&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#117864;&amp;quot;&amp;gt;5 — Configuration DHCP Maître / Esclave&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eef7f6; border:1px solid #bfe1dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#117864;&amp;quot;&amp;gt;Configuration complète du failover DHCP&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#148f77;&amp;quot;&amp;gt;Architecture&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MASTER : 192.168.40.253&lt;br /&gt;
SLAVE  : 192.168.40.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installation sur les deux serveurs :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install dhcp-server -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#148f77;&amp;quot;&amp;gt;Configuration MASTER&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failover peer &amp;quot;dhcp&amp;quot; {&lt;br /&gt;
  primary;&lt;br /&gt;
  address 192.168.40.253;&lt;br /&gt;
  port 520;&lt;br /&gt;
  peer address 192.168.40.251;&lt;br /&gt;
  peer port 520;&lt;br /&gt;
  max-response-delay 60;&lt;br /&gt;
  max-unacked-updates 10;&lt;br /&gt;
  mclt 3600;&lt;br /&gt;
  split 128;&lt;br /&gt;
  load balance max seconds 3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.30.0 netmask 255.255.255.0 {&lt;br /&gt;
    authoritative;&lt;br /&gt;
&lt;br /&gt;
    option routers 192.168.30.254;&lt;br /&gt;
    option domain-name-servers 192.168.40.253;&lt;br /&gt;
&lt;br /&gt;
    pool {&lt;br /&gt;
        failover peer &amp;quot;dhcp&amp;quot;;&lt;br /&gt;
        option routers 192.168.30.254;&lt;br /&gt;
        range 192.168.30.10 192.168.30.50;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#148f77;&amp;quot;&amp;gt;Configuration SLAVE&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failover peer &amp;quot;dhcp&amp;quot; {&lt;br /&gt;
  secondary;&lt;br /&gt;
  address 192.168.40.251;&lt;br /&gt;
  port 520;&lt;br /&gt;
  peer address 192.168.40.253;&lt;br /&gt;
  peer port 520;&lt;br /&gt;
  max-response-delay 60;&lt;br /&gt;
  max-unacked-updates 10;&lt;br /&gt;
  mclt 3600;&lt;br /&gt;
}&lt;br /&gt;
subnet 192.168.30.0 netmask 255.255.255.0 {&lt;br /&gt;
    option routers 192.168.30.254;&lt;br /&gt;
    option domain-name-servers 192.168.40.253;&lt;br /&gt;
&lt;br /&gt;
    pool {&lt;br /&gt;
        failover peer &amp;quot;dhcp&amp;quot;;&lt;br /&gt;
        option routers 192.168.30.254;&lt;br /&gt;
        range 192.168.30.10 192.168.30.50;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#148f77;&amp;quot;&amp;gt;Ouverture du port failover&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
-I INPUT 2 -p tcp --dport 520 -j ACCEPT&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#148f77;&amp;quot;&amp;gt;Redémarrage du service DHCP&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart dhcpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #c8e6c9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:120%; color:#1e8449;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Infrastructure DHCP opérationnelle&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
	<entry>
		<id>https://wiki.epsi.tala-informatique.fr/index.php?title=DHCP&amp;diff=116</id>
		<title>DHCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.epsi.tala-informatique.fr/index.php?title=DHCP&amp;diff=116"/>
		<updated>2026-02-21T15:27:30Z</updated>

		<summary type="html">&lt;p&gt;Jung Jean-Marie : /* Modes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;span style=&amp;quot;color:#2c3e50;&amp;quot;&amp;gt;DHCP&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f0f4f8; border:1px solid #c7d3e0; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:120%; color:#2c3e50;&amp;quot;&amp;gt;&lt;br /&gt;
Le &amp;lt;b&amp;gt;DHCP (Dynamic Host Configuration Protocol)&amp;lt;/b&amp;gt; permet d’attribuer automatiquement des adresses IP aux machines d’un réseau.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#2c3e50;&amp;quot;&amp;gt;Infrastructure DHCP — Rocky Linux&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f5f7fa; border:1px solid #d6dbe1; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:115%; color:#34495e;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Documentation complète de mise en place d’une infrastructure DHCP sous Rocky Linux&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#196f3d;&amp;quot;&amp;gt;1 — Création du Serveur DHCP&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f3f9f1; border:1px solid #cfe5c9; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#196f3d;&amp;quot;&amp;gt;Installation et configuration du service DHCP&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Installation du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install dhcp-server -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifier l’installation :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rpm -qa | grep dhcp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Configuration principale&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/dhcp/dhcpd.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configuration minimale :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
subnet 192.168.30.0 netmask 255.255.255.0 {&lt;br /&gt;
    authoritative;&lt;br /&gt;
&lt;br /&gt;
    option routers 192.168.30.254;&lt;br /&gt;
    option domain-name-servers 192.168.40.253;&lt;br /&gt;
    range 192.168.30.10 192.168.30.50;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Vérification de la configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dhcpd -t&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Démarrage du service&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable dhcpd&lt;br /&gt;
systemctl start dhcpd&lt;br /&gt;
systemctl status dhcpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Ouverture de iptables&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
-I INPUT 2 -p udp --dport 67 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#239b56;&amp;quot;&amp;gt;Enregistrement des changements&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;2 — Configuration DHCP détaillée&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fff6e6; border:1px solid #f1d6a8; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#b9770e;&amp;quot;&amp;gt;Configuration avancée du serveur DHCP&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Explication des directives&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%; background:#ffffff; border:1px solid #fad7a0; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
! Directive !! Description&lt;br /&gt;
|-&lt;br /&gt;
| subnet || Réseau géré&lt;br /&gt;
|-&lt;br /&gt;
| authoritative || Serveur DHCP officiel&lt;br /&gt;
|-&lt;br /&gt;
| option routers || Passerelle réseau&lt;br /&gt;
|-&lt;br /&gt;
| option domain-name-servers || Serveurs DNS fournis&lt;br /&gt;
|-&lt;br /&gt;
| range || Plage IP distribuée&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Attribution d’une IP fixe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
host dhcp1 {&lt;br /&gt;
 hardware ethernet 00:00:00:00:00:00;&lt;br /&gt;
 fixed-address 192.168.40.253;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#ca6f1e;&amp;quot;&amp;gt;Plusieurs réseaux&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Répétez cette procédure pour tous les réseaux nécessaires.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;3 — DHCP Relay sur Firewall&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#f5eef8; border:1px solid #d7c6e6; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#7d3c98;&amp;quot;&amp;gt;Transmission des requêtes DHCP entre réseaux&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Principe&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fafafa; border:1px solid #ddd; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Le DHCP fonctionne en broadcast.  &lt;br /&gt;
Les routeurs bloquent ces requêtes.  &lt;br /&gt;
Le DHCP Relay transmet les requêtes vers un serveur distant.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Architecture :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Client → Firewall → Serveur DHCP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Installation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install dhcp-relay -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Configuration&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/&lt;br /&gt;
vi /etc/systemd/system/dhcrelay.service&lt;br /&gt;
ExecStart=/usr/sbin/dhcrelay -d --no-pid -i pri -i lan -i dmz 192.168.40.253 192.168.40.251&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
vi /etc/sysconfig/dhcrelay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INTERFACES=&amp;quot;dmz pri lan&amp;quot;&lt;br /&gt;
DHCPSERVERS=&amp;quot;192.168.40.253&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#884ea0;&amp;quot;&amp;gt;Activation&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable dhcrelay&lt;br /&gt;
systemctl start dhcrelay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#922b21;&amp;quot;&amp;gt;4 — DHCP Maître / Esclave (Failover)&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#fdeeee; border:1px solid #efc2c2; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#922b21;&amp;quot;&amp;gt;Haute disponibilité du service DHCP&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#a93226;&amp;quot;&amp;gt;Objectif&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
* Continuité de service&lt;br /&gt;
* Synchronisation des baux&lt;br /&gt;
* Prévention des conflits IP&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#a93226;&amp;quot;&amp;gt;Modes&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:50%; border:1px solid #f5b7b1; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
! Mode !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Load Balance || Partage de charge&lt;br /&gt;
|-&lt;br /&gt;
| Hot Standby || Serveur secondaire de secours&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span style=&amp;quot;color:#117864;&amp;quot;&amp;gt;5 — Configuration DHCP Maître / Esclave&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#eef7f6; border:1px solid #bfe1dc; padding:12px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;b style=&amp;quot;color:#117864;&amp;quot;&amp;gt;Configuration complète du failover DHCP&amp;lt;/b&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#148f77;&amp;quot;&amp;gt;Architecture&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MASTER : 192.168.40.253&lt;br /&gt;
SLAVE  : 192.168.40.251&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installation sur les deux serveurs :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dnf install dhcp-server -y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#148f77;&amp;quot;&amp;gt;Configuration MASTER&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failover peer &amp;quot;dhcp&amp;quot; {&lt;br /&gt;
  primary;&lt;br /&gt;
  address 192.168.40.253;&lt;br /&gt;
  port 520;&lt;br /&gt;
  peer address 192.168.40.251;&lt;br /&gt;
  peer port 520;&lt;br /&gt;
  max-response-delay 60;&lt;br /&gt;
  max-unacked-updates 10;&lt;br /&gt;
  mclt 3600;&lt;br /&gt;
  split 128;&lt;br /&gt;
  load balance max seconds 3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.30.0 netmask 255.255.255.0 {&lt;br /&gt;
    authoritative;&lt;br /&gt;
&lt;br /&gt;
    option routers 192.168.30.254;&lt;br /&gt;
    option domain-name-servers 192.168.40.253;&lt;br /&gt;
&lt;br /&gt;
    pool {&lt;br /&gt;
        failover peer &amp;quot;dhcp&amp;quot;;&lt;br /&gt;
        option routers 192.168.30.254;&lt;br /&gt;
        range 192.168.30.10 192.168.30.50;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#148f77;&amp;quot;&amp;gt;Configuration SLAVE&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
failover peer &amp;quot;dhcp&amp;quot; {&lt;br /&gt;
  secondary;&lt;br /&gt;
  address 192.168.40.251;&lt;br /&gt;
  port 520;&lt;br /&gt;
  peer address 192.168.40.253;&lt;br /&gt;
  peer port 520;&lt;br /&gt;
  max-response-delay 60;&lt;br /&gt;
  max-unacked-updates 10;&lt;br /&gt;
  mclt 3600;&lt;br /&gt;
}&lt;br /&gt;
subnet 192.168.30.0 netmask 255.255.255.0 {&lt;br /&gt;
    option routers 192.168.30.254;&lt;br /&gt;
    option domain-name-servers 192.168.40.253;&lt;br /&gt;
&lt;br /&gt;
    pool {&lt;br /&gt;
        failover peer &amp;quot;dhcp&amp;quot;;&lt;br /&gt;
        option routers 192.168.30.254;&lt;br /&gt;
        range 192.168.30.10 192.168.30.50;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#148f77;&amp;quot;&amp;gt;Ouverture du port failover&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi /etc/sysconfig/iptables&lt;br /&gt;
-I INPUT 2 -p tcp --dport 520 -j ACCEPT&lt;br /&gt;
systemctl reload iptables&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;color:#148f77;&amp;quot;&amp;gt;Redémarrage du service DHCP&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart dhcpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:#e8f5e9; border:1px solid #c8e6c9; padding:15px; border-radius:10px; overflow:hidden;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:120%; color:#1e8449;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Infrastructure DHCP opérationnelle&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jung Jean-Marie</name></author>
	</entry>
</feed>