まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Du bon usage de la sauvegarde de donnée -2-

dsc07744.jpg La sauvegarde de données est devenue aujourd'hui indispensable, on ne le répétera jamais assez !
Pourtant un grand nombre de gens ignorent parfois volontairement cette corvée, prétextant un manque de temps…
Choisissez !

  • Quelques minutes à passer pour la mise en place, et penser à mettre en marche le processus de temps à autres,
  • Ou alors Tout perdre… photos et montages vidéos, documents, mails, travaux divers ayant nécessités de longues heures de travail…

J'ai choisi mon camp !
… Pourtant je continue de m'inquiéter…Que se passerait-il si j'étais victime d'un sinistre, étant donné que mon original et mes sauvegardes sont situées au même endroit !
Qui plus est, c'est bien beau d'auto-héberger ses sites, mais en cas de pépin, les sites disparaitraient eux-aussi !

Bref, J'ai la ceinture et les bretelles, je m'en vais ajouter le parachute en mettant en place une sauvegarde distante, dans un second lieu…
Si la première méthode décrite est ultra simple et se doit d'être le minimum syndical à appliquer pour tous, la méthode qui suit s'applique aux geek et aux curieux un poil paranoïaque…

Sauvegarde distante synchronisée


1 - Principe :

Mes ordinateurs (serveur, bureau, etc) depuis le site A contactent automatiquement tous les jours un ordinateur de sauvegarde (si possible un vieux bouzin de récup) sur le site B, pour lui demander de s'allumer.
Ensuite ces ordinateurs poussent vers l'ordi de sauvegarde une synchronisation de type rsync, similaire au billet précédent.
Une fois l'opération terminée, l'ordinateur de sauvegarde s'éteint.
Le tout silencieusement, c'est à dire sans qu'on s'en soucie.
Bien sûr je continue la sauvegarde locale sur disque dur externe… suffit juste d'y penser.

Pour faire tout cela nous aurons besoin de :

  1. Un vieil ordi avec suffisamment de capacité en disque dur, installé dans un coin quelque part ou vous avez confiance (la famille, les amis…).
  2. Un routeur capable de faire du WOL (Wake On Lan).
  3. Évidemment une connexion internet sur les deux sites.


2 - Le routeur :

J'ai choisi un Routeur Linksys/Cisco modèle WRT54GL
Le « L » c'est pour Linux, qui à donc la particularité d'être prévu pour être reprogrammé avec des Firmwares alternatifs.
On va donc y coller le Firmware DD-WRT qui propose des fonctions WOL intéressantes !

Comment flasher votre WRT54GL en DD-WRT

Le routeur neuf est en configuration d'usine, donc avec un Firmware Linksys.
On aura besoin de télécharger le Firmware DD-WRT « mini généric » stable [1] depuis la page http://www.dd-wrt.com : dd-wrt.v24_mini_generic.bin
Flasher le firmware doit être fait avec une connexion stable uniquement par câble réseau.
dsc07749.jpg

  1. Brancher le routeur sur le secteur.
  2. Ne pas mettre le petit adaptateur d'interrupteur sur le câble Alim !
  3. Brancher le câble RJ45 livré, entre le routeur et un ordinateur.
  4. Accédez à l'interface web Linksys avec votre navigateur, 192.168.1.1 dans la barre d'adresse

Nom d'utilisateur : laisser vide
Mot de passe : admin

  • Aller au menu Administration
  • Puis le sous-menu Firmware Upgrade.
  • Cliquer sur le bouton Parcourir et sélectionner le fichier dd-wrt.v24_mini_generic.bin.
  • Cliquer sur le bouton « Upgrade » et arrêter de respirer pendant 2 minute minimum !

/!\ N'arrêtez pas votre ordinateur, ne fermez pas votre navigateur, ou n'éteignez pas le routeur pendant cette phase !
Le navigateur envoie le fichier au routeur, qui se charge alors de flasher le firmware dans son électronique…
La led « power » se met à clignoter et au bout de quasi 1 minute, la page va se rafraichir et inscrire que l'opération s'est bien déroulée et invite à cliquer sur « continue »…
NE PAS CLIQUER DESSUS !
Attendre encore, la led « power » n'a en effet pas terminé de clignoter…
Quand elle aura terminé, le routeur aura terminé de redémarrer et sera enfin prêt !

  • Pour jouir de son routeur DD-WRT, rendez-vous à la même adresse, 192.168.1.1

Nom d'utilisateur : root
Mot de passe : admin

  • L'opération peut très bien se terminer ici, puisque l'option qui nous intéresse, dans le menu Administration -> WOL est bien présente.


  • Pour ceux qui voudraient bénéficier d'autres fonctionnalités, il est possible de charger ensuite une autre version plus complète de DD-WRT

Voir le wiki pour les différences entre les versions

J'ai choisi la dd-wrt.v24_std_generic.bin.

  1. Pour la mise à jour, on va d'abord, par sécurité activer l'option Boot_wait depuis le menu Administration. Ceci sera utile en cas de flashage raté.
  2. Aller au menu Administration
  3. Puis le sous-menu Firmware Upgrade.
  4. Cliquer sur le bouton Parcourir et sélectionnez le fichier dd-wrt.v24_std_generic.bin.
  5. Cliquer sur le bouton « Upgrade » et arrêter de respirer pendant le décompte de 300 secondes, DD-WRT s'occupe de tout !

/!\ N'arrêtez pas votre ordinateur, ne fermez pas votre navigateur, ou n'éteignez pas le routeur pendant cette phase !

3 - WOL en local :

C'est très simple et doit fonctionner sans problème !

  • Aller au menu Administration > WOL

Entre l'adresse MAC de l'ordinateur à mettre en marche, ajouter un nom et l'adresse IP broadcast du réseau qui termine donc par 255.

  • Cliquer « Wake Up » et hop, le PC s'allume !

WOL04.png

  • À noter que WOL en local fonctionne très bien sans ce routeur spécial, ni aucune config particulière d'un autre routeur, avec la simple commande :
wakeonlan adresse-MAC

Après bien sûr avoir installé wakeonlan.
On peut aussi utiliser l'interface graphique gwakeonlan pour effectuer la même opération.

sudo apt-get install gwakeonlan wakeonlan


4 - WOL à travers internet :

Ici ça se complique un peu plus…
Pour allumer l'ordi à travers internet, on va envoyer sur internet un packet magique sur l'adresse MAC de l'ordi vers l'IP publique fournie par son FAI.
Le routeur le reçoit et doit l'envoyer à l'ordi qui nous intéresse, identifié normalement par une adresse IP locale qui lui sera attribué seulement quand l'ordi sera allumé… Mince alors !! Comment qu'on peut faire alors ??
Bon, d'abord on va faire suivre le packet magique sur les ports UDP 7 à 8 vers une IP bidon, mais qui fait partie de votre réseau local ![2]

  • Menu NAT/Qos > Port Range Forwarding

WOL02.png
Puis, on ajoute et exécute une commande dans le routeur.

  • Menu Administration > Commands
ip neigh change la-même-IP-bidon lladdr adresse-MAC nud permanent dev br0
ip neigh add la-même-IP-bidon lladdr adresse-MAC nud permanent dev br0


WOL03.png

Ce qui va avoir pour effet d'associer l'IP à l'adresse MAC.
Ainsi le packet magique magique entrant sur le port 9 est envoyé à l'IP bidon, et comme le routeur sait que l'IP bidon correspond à l'adresse MAC de l'ordi à démarrer, ben hop, l'ordi s'allume !
Une fois l'ordi démarré, il pourra prendre l'IP qu'on veut, fixe ou attribuée par le DHCP.

  • La commande pour parvenir à allumer le PC depuis un autre ordi sur internet : (cependant elle doit marcher en local aussi !)
wakeonlan -i IP-Publique -p 9 adresse-MAC

On peut aussi s'aider de service en ligne comme celui-ci : http://wakeonwan.webou.net/

Enfin, associer l'IP publique à un nom de domaine grâce à No-IP sera bien plus pratique, surtout si l'IP en question est soumise à renouvellement toutes les 24h, comme c'est encore souvent le cas.

5 - WOL à travers internet et une BOX Adsl :

Précision donc, que tout ces tests ont fonctionnés avec un Modem Adsl !
Avec une BOX Adsl, il faut prendre en compte le fait que cette BOX est en fait un routeur, à qui il faut aussi indiquer que le paquet magique reçut par l'IP publique doit aller à un ordi spécifique du réseau local.

  • Mais alors pourquoi ne pas avoir utilisé la BOX Adsl pour faire le WOL ???

Bien que ces box soient des routeurs, ceux-ci sont bridés et dépouillés de nombreuses fonctionnalités par le FAI… donc on oublie le WOL ou la possibilité de diriger le paquet magique vers l'adresse broadcast.

Donc il suffit d'ajouter dans la machinbox une redirection de port UDP 7 à 9 vers l'IP du routeur WRT54GL, qui prendra donc le relais.
Pour le coup il vaut mieux que le DHCP soit désactivé sur le routeur WRT54GL, et laisser le DHCP de la machinbox gérer le réseau local, tout en lui réservant l'IP fixée dans le routeur WRT54GL.
Et si vraiment ça veut pas, ou que la fonction n'est pas possible, on peut toujours déclarer en DMZ l'IP du routeur Linksys dans la BOX Adsl… À condition toujours que la fonction soit disponible.
.
wol.png

6 - Configuration de l'ordinateur distant :

installation de base d'une distribution Debian Squeeze depuis le CD netinstall.
installation des paquets lm-sensors openssh-server hddtemp rsync less ccze.
Tester et valider qu'on arrive bien à se connecter sur la machine en ssh via l'IP publique…

7 - Script de Synchronisation :

Maintenant qu'on sait allumer l'ordi distant, il va falloir lui envoyer les données à sauvegarder.
Je fais ça avec rsync par dessus ssh sur le PC qui va pousser les data vers le PC distant :

#!/bin/sh
######################################################################
# Synchronisation des data poussées depuis Debianbox vers BackupData #
######################################################################
# Allume L'ordi distant BackupData | attend 30 secondes ##############
# Synchronise les dossiers | Arrête L'ordi distant BackupData ########
# Envoie un E-mail avec le log #######################################
######################################################################

wakeonlan -i backupdata.dyndns.org -p 9 XX:XX:XX:XX:XX:XX
sleep 30s

date >> /var/log/SYNCHRO-BackupData.log
echo "\n" >> /var/log/SYNCHRO-BackupData.log

# synchro des dossiers :

rsync -e ssh -avz --delete /home/makoto/ root@backupdata.dyndns.org:/home/makoto >> /var/log/SYNCHRO-BackupData.log

# Arrêt du PC BackupData

echo "\n" >> /var/log/SYNCHRO-BackupData.log
date >> /var/log/SYNCHRO-BackupData.log
ssh root@backupdata.dyndns.org 'halt'
# ajoute une séparation pour la prochaine concaténation
echo "\n---------------------------------------------------------------------------------------------------------------------------------------" >> /var/log/SYNCHRO-BackupData.log

# Envoie d'un email avec le log

mutt -s "Synchronisation depuis Debianbox vers BackupData" adresse@email.com -a /var/log/SYNCHRO-BackupData.log < /chemin/emailmessage.txt
  • Pour que le script ne demande pas le mot de passe root à chaque ligne,

Créer une paire de clés publiques/privées sur le PC qui va pousser les data vers le PC distant :

ssh-keygen -t rsa

Laisser le chemin par défaut et laisser la demande de passphrase vide.
Copier la clé publique sur le PC distant :

ssh-copy-id -i /root/.ssh/id_rsa.pub "-p N°-de-port root@backupdata.dyndns.org"
  • Ne pas oublier de créer le fichier /chemin/emailmessage.txt

Mission accomplie !

8 - Conclusion :

Reste à planifier le script en automatique (crontab) pour une exécution régulière, ou une exécution ponctuelle en fonction de sa manière à produire du contenu; Ceci afin de ne pas laisser un delta de différences trop important entre l'original et la sauvegarde, sous peine de se retrouver avec une synchronisation très longue à faire, l'Upload Adsl étant ce qu'il est…
Et bien sûr à apporter l'unité centrale de l'ordinateur chez vos connaissance et bidouiller un poil leur réseau…

Suite

Ressources :

http://doc.ubuntu-fr.org/wakeonlan
http://www.crack-wifi.com/tutoriel-flash-wrt54gl-avec-firmware-dd-wrt.php
http://www.dd-wrt.com/wiki/index.php/DD-WRT_Docu_%28FR%29
http://www.philten.com/wol-livebox/

Notes

[1] Et uniquement celui-ci, pour un routeur sorti d'usine avec un firmware Linksys résident donc !

[2] J'ai bien pensé à utiliser l'adresse de broadcast pour la redirection de port, mais même si la saisie est bien prise en compte, le WOL ne fonctionne pas

Commentaires

1. Le lundi, 14 novembre 2011, 20:10 par tranxene50

Hello !

Si le WRT54GL est toujours accessible depuis internet, on peut s'y connecter en SSH et allumer manuellement les PC avec la commande "ether-wake" (testé avec un Firmware Tomato).

Ne pas oublier d'activer le WOL dans le BIOS et/ou en passant par les paramètres avancés de carte réseau : http://computerboom.blogspot.com/20...

Mais le plus compliqué dans l'histoire, c'est de trouver "refuge" chez une personne suffisamment équipée pour mettre tout ce petit monde en place et là, ce n'est pas forcément évident.

En tout cas, merci pour l'astuce, elle est vraiment utile ! :)

A+

2. Le lundi, 14 novembre 2011, 20:57 par MaKoTo

Merci pour les précisions !

Bah pour le refuge y'a juste besoin d'internet et d'une prise de courant, le reste est à ma charge (routeur additionnel, tirage de câble, ordi, config réseau).
C'est sûr que ça fait un peu de chantier ponctuel et squattage de petit coin, mais si les gens sont compréhensifs autant en profiter.
Sinon, l''idéal serait d'échanger les data avec un autre auto-hébergé.

3. Le lundi, 14 novembre 2011, 21:32 par tranxene50

> Sinon, l''idéal serait d'échanger les data avec un autre auto-hébergé.

Vi, c'est ce à quoi je pensais également.

Se pose alors la question de la confiance (mais on peut contourner le problème en encryptant les données).

L'autre souci est lié à la nature de l'ADSL : pour transférer les sauvegardes tout va bien (encore que...) mais le jour où l'on doit récupérer X Go de données, on va pourrir l'upload de l'auto-hébergé.

Honnêtement je ne suis toujours pas penché sur la question des backup (c'est en cours de gestation) mais pour l'instant la solution qui me parait la plus "rapide" (pour rétablir le service) est de créer un compte chez un hébergeur gratuit/associatif ou à prix libre (http://www.rhien.org/) qui dispose d'une bande passante d'au moins 100 Mbit/s.

Pour l'instant c'est la piste que je privilégie mais ce n'est pas évident car généralement, le stockage pur et dur de données est mal vu. (On "squatte" mais on n'apporte rien)

A+

4. Le mardi, 15 novembre 2011, 18:11 par lhu

moi je ne me serais pas fait chier a faire du wol mais j'aurais mis un programmateur horaire electromécanique pour démarrer l'ordi ou j'aurait uttilisé la fonction de démarrage automatique sur certain bios (sur certain on peut même choisir le jour de la semaine ou du mois)

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet