{"id":10,"date":"2026-09-11T14:03:30","date_gmt":"2026-09-11T14:03:30","guid":{"rendered":"https:\/\/noteback.chabod.eu\/?p=10"},"modified":"2026-09-11T14:03:30","modified_gmt":"2026-09-11T14:03:30","slug":"doc-05-remplacer-un-hote-mort","status":"publish","type":"post","link":"https:\/\/noteback.chabod.eu\/?p=10","title":{"rendered":"Remplacer un h\u00f4te mort : de k3 vers un k5 neuf"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Document g\u00e9n\u00e9r\u00e9 automatiquement depuis <code>\/home\/jerome\/pub\/docs\/05-remplacer-un-hote-mort.md<\/code> sur kimsufi3, le 11 September 2026 \u00e0 14:03. Toute modification faite ici sera \u00e9cras\u00e9e \u00e0 la prochaine r\u00e9g\u00e9n\u00e9ration : \u00e9diter le fichier source.<\/em><\/p>\n\n\n<p>Sc\u00e9nario : k4 meurt d\u00e9finitivement, on bascule sur k3, puis on installe un k5 pour reprendre la production.<\/p>\n<h2 id=\"cest-le-r\u00f4le-de-la-r\u00e9plication-pas-du-backup\">C&#8217;est le r\u00f4le de la r\u00e9plication, pas du backup<\/h2>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>R\u00e9plication (ce projet)<\/th>\n<th>Backup (<code>\/opt\/backup\/backup.bash<\/code>)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Contient <code>NCData<\/code> (725 Go)<\/td>\n<td><strong>oui<\/strong><\/td>\n<td><strong>non<\/strong> \u2014 trou document\u00e9 dans <code>INVENTAIRE-CRITICITE.md<\/code><\/td>\n<\/tr>\n<tr>\n<td>Forme<\/td>\n<td>en clair, pr\u00eate \u00e0 servir<\/td>\n<td>chiffr\u00e9e AES-256, sur Dropbox<\/td>\n<\/tr>\n<tr>\n<td>Fra\u00eecheur<\/td>\n<td>1 h (mailcow) \u00e0 24 h<\/td>\n<td>24 h<\/td>\n<\/tr>\n<tr>\n<td>Reconstruire un h\u00f4te<\/td>\n<td>quelques heures<\/td>\n<td>impossible pour Nextcloud<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Reconstruire k5 depuis le backup rendrait tout sauf les 725 Go de Nextcloud.<\/strong> Le backup reste le filet du cas o\u00f9 l&#8217;on perd les <strong>deux<\/strong> machines \u00e0 la fois ; pour remplacer un seul membre de la paire, c&#8217;est la r\u00e9plication qui sert.<\/p>\n<h2 id=\"le-c\u0153ur-du-dispositif-est-d\u00e9j\u00e0-g\u00e9n\u00e9rique\">Le c\u0153ur du dispositif est d\u00e9j\u00e0 g\u00e9n\u00e9rique<\/h2>\n<p><code>replique.sh<\/code>, <code>dump-bases.sh<\/code> et <code>guard.sh<\/code> ne connaissent aucun nom d&#8217;h\u00f4te : ils lisent <code>PAIR<\/code> dans <code>\/etc\/dockersync\/config<\/code>. R\u00e9appairer k3 sur un k5 ne demande qu&#8217;une ligne :<\/p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb1-1\"><a href=\"#cb1-1\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"fu\">sed<\/span> <span class=\"at\">-i<\/span> <span class=\"st\">&#39;s\/^PAIR=.*\/PAIR=kimsufi5.chabod.eu\/&#39;<\/span> \/etc\/dockersync\/config<\/span><\/code><\/pre><\/div>\n<h2 id=\"lidentit\u00e9-ssh--le-point-quil-ne-faut-pas-d\u00e9couvrir-le-jour-j\">L&#8217;identit\u00e9 SSH : le point qu&#8217;il ne faut pas d\u00e9couvrir le jour J<\/h2>\n<p>Si k5 reprend le nom DNS de k4, il doit reprendre ses <strong>cl\u00e9s d&#8217;h\u00f4te<\/strong>, sinon tous les clients affichent <code>REMOTE HOST IDENTIFICATION HAS CHANGED<\/code> et refusent de se connecter. Et prendre l&#8217;habitude de passer outre cet avertissement est pr\u00e9cis\u00e9ment ce qui rend une vraie attaque invisible.<\/p>\n<p><code>sauver-identite.sh<\/code> archive donc l&#8217;identit\u00e9 de chaque h\u00f4te dans <code>\/var\/backup\/identite\/<\/code> (12 Ko), et le <strong>flux A la r\u00e9plique<\/strong>. Ainsi, quand k4 meurt, son identit\u00e9 vit encore sur k3.<\/p>\n<blockquote>\n<p><strong>\u00c0 faire une fois sur k4, d\u00e8s maintenant<\/strong> \u2014 c&#8217;est aujourd&#8217;hui la seule chose qui manque \u00e0 ce sc\u00e9nario :<\/p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb2-1\"><a href=\"#cb2-1\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"fu\">sudo<\/span> bash \/opt\/ops\/dockersync\/sauver-identite.sh<\/span><\/code><\/pre><\/div>\n<p>Sans cela, si k4 meurt avant la premi\u00e8re passe de r\u00e9plication, son identit\u00e9 est perdue avec lui.<\/p>\n<\/blockquote>\n<p><strong>Ne pas restaurer une identit\u00e9 sur le rempla\u00e7ant d&#8217;un h\u00f4te compromis<\/strong> : elle serait peut-\u00eatre entre d&#8217;autres mains. Dans ce cas, on laisse k5 se forger la sienne et on accepte de reconfigurer les clients.<\/p>\n<h2 id=\"proc\u00e9dure\">Proc\u00e9dure<\/h2>\n<ol type=\"1\">\n<li><strong>Installer k5<\/strong> en suivant <code>00-installation-k3.md<\/code>, en adaptant le FQDN. Les scripts d&#8217;installation (<code>post-install-k3.sh<\/code>, <code>deployer-sur-k3.sh<\/code>) sont encore \u00e9crits pour k3 : \u00e0 g\u00e9n\u00e9raliser le jour o\u00f9 ce sera n\u00e9cessaire, le travail est m\u00e9canique (FQDN, IP et port en variables).<\/li>\n<li><strong>Restaurer l&#8217;identit\u00e9 de k4 sur k5<\/strong>, depuis la copie vivant sur k3 :\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><span id=\"cb3-1\"><a href=\"#cb3-1\" aria-hidden=\"true\" tabindex=\"-1\"><\/a><span class=\"fu\">bash<\/span> post-install-k3.sh <span class=\"at\">--restaurer-identite<\/span> \/root\/kimsufi4-ssh_host_keys.tar<\/span><\/code><\/pre><\/div>\nComparer ensuite aux empreintes de <code>\/var\/backup\/identite\/kimsufi4-empreintes.txt<\/code>.<\/li>\n<li><strong>Appairer k3 et k5<\/strong> : <code>PAIR<\/code> de part et d&#8217;autre, k5 en <code>veille<\/code>, k3 restant <code>actif<\/code>.<\/li>\n<li><strong>R\u00e9pliquer k3 \u2192 k5.<\/strong> C&#8217;est le transfert long : 725 Go, et <strong>k3 \u00e9met sur un lien \u00e0 100 Mbit\/s<\/strong>, donc compter <strong>~20 h<\/strong> comme pour le transfert initial. Lancer le soir.<\/li>\n<li><strong>Basculer sur k5<\/strong> avec <code>bascule.sh --planifie<\/code>, ex\u00e9cut\u00e9 depuis k3.<\/li>\n<li><strong>Retirer k4 de la configuration<\/strong> et d\u00e9truire son identit\u00e9 archiv\u00e9e si la machine est rendue \u00e0 OVH.<\/li>\n<\/ol>\n<h2 id=\"ce-que-ce-sc\u00e9nario-impose-au-dispositif\">Ce que ce sc\u00e9nario impose au dispositif<\/h2>\n<ul>\n<li>Ne jamais coder un nom d&#8217;h\u00f4te dans les scripts du c\u0153ur. C&#8217;est respect\u00e9.<\/li>\n<li>Archiver l&#8217;identit\u00e9 SSH de chaque h\u00f4te, et la r\u00e9pliquer. C&#8217;est fait.<\/li>\n<li>Se souvenir que <strong>la paire n&#8217;est jamais un couple fig\u00e9<\/strong> : c&#8217;est un r\u00f4le <code>actif<\/code> et un r\u00f4le <code>veille<\/code>, port\u00e9s par des machines interchangeables.<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Document g\u00e9n\u00e9r\u00e9 automatiquement depuis \/home\/jerome\/pub\/docs\/05-remplacer-un-hote-mort.md sur kimsufi3, le 11 September 2026 \u00e0 14:03. Toute modification faite ici sera \u00e9cras\u00e9e \u00e0 la prochaine r\u00e9g\u00e9n\u00e9ration : \u00e9diter le fichier source. Sc\u00e9nario : k4 meurt d\u00e9finitivement, on bascule sur k3, puis on installe un k5 pour reprendre la production. C&#8217;est le r\u00f4le de la r\u00e9plication, pas du backup [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-10","post","type-post","status-publish","format-standard","hentry","category-exploitation-dockersync"],"_links":{"self":[{"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=\/wp\/v2\/posts\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10"}],"version-history":[{"count":0,"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=\/wp\/v2\/posts\/10\/revisions"}],"wp:attachment":[{"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/noteback.chabod.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}