GuiguiAbloc

architecture

L’Hippie est à sec avec un Cisco Pix

par guiguiabloc le 27 mar, 2011, sous architecture, réseau

Ah vous m’avez manqué :) J’avoue avoir un peu délaissé mon blog dernièrement et a force de me faire houspiller (ah oui, ahan, encore, fais-moi mal (pardon)), je vous propose donc un petit billet technique sous forme d’atelier @home.

Comme vous l’avez deviné au titre  de ce billet (dont le jeu de mot bien pourri est digne de la lignée des meilleurs calembours Carambar), nous allons parler d’IPsec.

Bien évidemment, comme je ne fais pas comme tout le monde, j’ai du faire face à une situation un peu différente de ce que l’on rencontre généralement.

Je dispose @home, derrière la Freeteuse, d’un Cisco PIX, et je souhaite me connecter en IPsec, en mode tunnel (LAN to LAN) sur mes serveurs dédiés sous linux, ou sur des serveurs derrière d’autres équipements (dans le cas de ce billet, me connecter a un réseau local chez un pote derrière un Netopia R9100.

Seul petit point à souligner, je suis en ip dynamique et les autres en ip fixe (ca change :) ).

Nous allons donc voir  différentes approches d’une connexion IPsec, le Cisco Pix en client, les Linux avec Racoon en serveurs, et le Netopia R9100 en serveur également.

Bien évidemment, comme je ne veux pas exposer les plans d’adressage ip de mon LAN, je vais NATer et filtrer tout ce qui part dans les tunnels.

Un petit dessin valant mieux qu’un grand discours :

Allez, maintenant au boulot.

J’ai décider d’utiliser les plans d’adressages suivant :

10.250.250.0/24 pour NATer mes ressources internes (comment les serveurs de mon LAN sont vus par les autres au travers du tunnel IPsec).

10.40.0.0/24 les ressources du serveur_dédié vu par mon LAN

10.10.150.0/24 les ressources du LAN derrière le Netopia du copain vu depuis mon LAN

Tout ces plans d’adressage vont devenir nos Domaines d’Encryption.

Linux IPsec Tools et RACOON

Sous Linux, la configuration IPsec se fait grace a la suite d’outils IPsec-Tools.

Cette suite d’outil comprend 2 élements importatns :

- Setkey : un outil pour interagir avec la couche ipsec du kernel

- Racoon : un démon IKE pour gérer les clés de connexion IPsec

Sur votre serveur Debian :

apt-get install ipsec-tools racoon

on se créé un fichier /etc/ipsec-tools.conf dans lequel on va détailler notre tunnel IPsec (mode ESP) :

spdadd 10.40.0.0/24 10.250.250.0/24 any -P out ipsec
esp/tunnel/99.99.99.1-0.0.0.0/require;
spdadd 10.250.250.0/24 10.40.0.0/24 any -P in ipsec
esp/tunnel/0.0.0.0-99.99.99.1/require;

Nous définissons donc nos 2 domaines d’encryptions et les deux extrémités du tunnel.

Comme j’ai une ip dynamique, je spéficie 0.0.0.0 (c’est a dire, n’importe qui).

On charge : setkey -f  /etc/ipsec-tools.conf

Vous pouvez jeter un oeil aux SA avec : setkey -D

Pour racoon :

/etc/racoon/racoon.conf
 
...
path pre_shared_key "/etc/racoon/psk.txt";
timer {
phase1 60 seconds ;
phase2 60 seconds ;
}
remote anonymous {
exchange_mode aggressive ;
doi ipsec_doi ;
situation identity_only ;
lifetime time 1 hour ;
generate_policy on;
passive on;
my_identifier address 99.99.99.1 ;
peers_identifier fqdn "pix.guiguiabloc.fr" ;
proposal {
encryption_algorithm aes 256;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group modp1024;
}
proposal_check obey ;
}
sainfo anonymous {
pfs_group modp1024;
lifetime time 1 hour ;
encryption_algorithm aes 256;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}

Explication :

On défini ici les différents paramètres de sécurité du tunnel pour les Phase 1 (IKE) et 2 (IPsec) a savoir les méthodes de chiffrement, de hachage, les temps de vie, l’activation du PFS (pour échanger des clés supplémentaires ) etc…

Je ne vais pas entrer dans les détails d’IPsec, donc un peu de lecture :D :

http://www.securiteinfo.com/cryptographie/IPSec.shtml

http://www.tcpipguide.com/free/t_IPSecurityIPSecProtocols.htm

La partie importante qui nous intéresse ici est le mode « Agressive » et non « Main ». En effet, j’ai une ip dynamique et je ne peux donc pas me baser dessus pour la négociation. J’utilise donc le fqdn de mon Pix (pix.guiguiabloc.fr) comme identifiant, et pour faire du fqdn+ pre-shared key, bah il faut etre en mode Agressive :)

Enfin dans le fichier /etc/racoon/psk.txt je renseigne la Pre-shared key (le mot de passe si vous préférez) :

pix.guiguiabloc.fr motdepassesupersecretamoi

Vous pouvez lancer Racoon : /etc/init.d/racoon start et le démon doit écouter sur les ports UDP 4500 et 500.

NETOPIA R9100

Le Netopia R9100 est un vieux routeur qui fait papa/maman. On peut le retrouver dans certaines TPE/PME ou chez des potes Geek qui font de la récupération :p , c’est le cas ici.

Ouf….

Allez on s’occupe de la maison.

On NAT notre pc 192.168.100.1 en une ip du domaine d’encryption

r-backbone
 
int fa 0/0 (interne)
 
ip nat inside
 
int fa 0/1 (externe)
 
ip nat outside
 
ip nat inside source static 192.168.100.1 10.250.250.1
 
ip route 10.250.250.0 255.255.255.0 FastEthernet0/0

On route les domaines d’encyptions des serveurs distants :

ip route 10.40.0.0 255.255.255.0 10.254.254.254
 
ip route 10.10.150.0 255.255.255.0 10.254.254.254
 
Coeur de Réseau
 
ip route 10.40.0.0 255.255.255.0 10.144.1.254
 
ip route 10.10.150.0 255.255.255.0 10.144.1.254

Cisco PIX

# Les ACLS qui vont bien
access-list outside-ipsec extended permit ip 10.250.250.0 255.255.255.0 10.10.150.0 255.255.255.0
access-list outside-ipsec extended permit ip 10.250.250.0 255.255.255.0 10.40.0.0 255.255.255.0
 
access-list outside_serveur extended permit ip 10.250.250.0 255.255.255.0 10.40.0.0 255.255.255.0
access-list outside-pote extended permit ip 10.250.250.0 255.255.255.0 10.10.150.0 255.255.255.0
 
 
# on ne natte pas les ips des domaines d'encryption
 
nat (inside-test) 0 access-list outside-ipsec
 
# La partie IPSEC elle meme
 
crypto ipsec transform-set ESP-AES-256-MD5 esp-aes-256 esp-md5-hmac
crypto ipsec transform-set ESP-DES-SHA esp-des esp-sha-hmac
crypto ipsec transform-set ESP-3DES-SHA esp-3des esp-sha-hmac
crypto ipsec transform-set ESP-DES-MD5 esp-des esp-md5-hmac
crypto ipsec transform-set ESP-AES-192-MD5 esp-aes-192 esp-md5-hmac
crypto ipsec transform-set ESP-3DES-MD5 esp-3des esp-md5-hmac
crypto ipsec transform-set ESP-AES-256-SHA esp-aes-256 esp-sha-hmac
crypto ipsec transform-set ESP-AES-128-SHA esp-aes esp-sha-hmac
crypto ipsec transform-set ESP-AES-192-SHA esp-aes-192 esp-sha-hmac
crypto ipsec transform-set ESP-AES-128-MD5 esp-aes esp-md5-hmac
crypto ipsec security-association lifetime seconds 28800
crypto ipsec security-association lifetime kilobytes 4608000
crypto map map-ipsec 1 match address outside_serveur
crypto map map-ipsec 1 set pfs
crypto map map-ipsec 1 set peer 99.99.99.1
crypto map map-ipsec 1 set transform-set ESP-AES-128-SHA ESP-AES-128-MD5 ESP-AES-192-SHA ESP-AES-192-MD5 ESP-AES-256-SHA ESP-AES-256-MD5 ESP-3DES-SHA ESP-3DES-MD5 ESP-DES-SHA ESP-DES-MD5
crypto map map-ipsec 1 set nat-t-disable
crypto map map-ipsec 1 set phase1-mode aggressive
crypto map map-ipsec 20 match address outside-pote
crypto map map-ipsec 20 set pfs
crypto map map-ipsec 20 set peer 88.88.88.88
crypto map map-ipsec 20 set transform-set ESP-3DES-SHA
crypto map map-ipsec 20 set nat-t-disable
crypto map map-ipsec 20 set phase1-mode aggressive
crypto map map-ipsec interface outside
crypto isakmp identity hostname
crypto isakmp enable outside
crypto isakmp policy 5
authentication pre-share
encryption 3des
hash sha
group 2
lifetime 86400
crypto isakmp policy 10
authentication pre-share
encryption des
hash sha
group 2
lifetime 86400
crypto isakmp policy 20
authentication pre-share
encryption aes-256
hash sha
group 2
lifetime 86400
 
group-policy IPSEC_POLICY internal
group-policy IPSEC_POLICY attributes
vpn-filter none
vpn-tunnel-protocol IPSec
tunnel-group 99.99.99.1 type ipsec-l2l
tunnel-group 99.99.99.1 general-attributes
default-group-policy IPSEC_POLICY
tunnel-group 99.99.99.1 ipsec-attributes
pre-shared-key *
tunnel-group 88.88.88.88 type ipsec-l2l
tunnel-group 88.88.88.88 general-attributes
default-group-policy IPSEC_POLICY
tunnel-group 88.88.88.88 ipsec-attributes
pre-shared-key *

N’oubliez pas que vous ne pouvez avoir qu’1 crypto map par Interface, il faut donc juste rajouter un identifant numerique supplémentaire pour chaque nouveau tunnel (ici 1 pour le premier tunnel, 20 le deuxieme).

Et beh..

Allez maintenant on test :D :

ssh 10.10.150.1

Mar 27 18:12:58 pix Mar 27 2011 18:12:58: %PIX-5-713041: IP = 88.88.88.88, IKE Initiator: New Phase 1, Intf inside-test, IKE Peer 88.88.88.88  local Proxy Address 10.250.250.0, remote Proxy Address 10.10.150.0,  Crypto map (map-ipsec)
Mar 27 18:13:01 pix Mar 27 2011 18:13:01: %PIX-6-713219: IP = 88.88.88.88, Queuing KEY-ACQUIRE messages to be processed when P1 SA is complete.
Mar 27 18:13:07 pix Mar 27 2011 18:13:07: %PIX-6-713219: IP = 88.88.88.88, Queuing KEY-ACQUIRE messages to be processed when P1 SA is complete.
Mar 27 18:13:11 pix Mar 27 2011 18:13:11: %PIX-6-113009: AAA retrieved default group policy (IPSEC_POLICY) for user = 88.88.88.88
Mar 27 18:13:11 pix Mar 27 2011 18:13:11: %PIX-5-713119: Group = 88.88.88.88, IP = 88.88.88.88, PHASE 1 COMPLETED
Mar 27 18:13:11 pix Mar 27 2011 18:13:11: %PIX-3-713122: IP = 88.88.88.88, Keep-alives configured on but peer does not support keep-alives (type = None)
Mar 27 18:13:11 pix Mar 27 2011 18:13:11: %PIX-6-713220: Group = 88.88.88.88, IP = 88.88.88.88, De-queuing KEY-ACQUIRE messages that were left pending.
Mar 27 18:13:24 pix Mar 27 2011 18:13:24: %PIX-5-713073: Group = 88.88.88.88, IP = 88.88.88.88, Responder forcing change of IPSec rekeying duration from 28800 to 3600 seconds
Mar 27 18:13:24 pix Mar 27 2011 18:13:24: %PIX-5-713049: Group = 88.88.88.88, IP = 88.88.88.88, Security negotiation complete for LAN-to-LAN Group (88.88.88.88)  Initiator, Inbound SPI = 0xe4e88f39, Outbound SPI = 0x94160878
Mar 27 18:13:24 pix Mar 27 2011 18:13:24: %PIX-6-602303: IPSEC: An outbound LAN-to-LAN SA (SPI= 0x94160878) between 192.168.1.250 and 88.88.88.88 (user= 88.88.88.88) has been created.
Mar 27 18:13:24 pix Mar 27 2011 18:13:24: %PIX-6-602303: IPSEC: An inbound LAN-to-LAN SA (SPI= 0xE4E88F39) between 192.168.1.250 and 88.88.88.88 (user= 88.88.88.88) has been created.
Mar 27 18:13:24 pix Mar 27 2011 18:13:24: %PIX-5-713120: Group = 88.88.88.88, IP = 88.88.88.88, PHASE 2 COMPLETED (msgid=f0cb61bd)

Rhââ Lovely :D

Idem l’autre tunnel avec un ping 10.40.0.1 par exemple

Si vous voulez filtrer les paquets dans vos tunnels ipsec, utilisez des ACLS de type :

access-list acl-ipsec extended permit tcp 10.40.0.0 255.255.255.0 eq www 10.250.250.0 255.255.255.0 gt 1023

(le reseau distant d’abord, puis votre propre reseau ensuite).

Dans le Pix, modifier l’éntrée vpn-filter none par :

vpn-filter value acl-ipsec

Amusez vous bien :D

Laisser un commentaire :, , , plus...

Injection de données en temps réel sur un client web

par guiguiabloc le 16 jan, 2011, sous architecture, geekerie

Tout d’abord, comme il se doit, je vous souhaite à tous une excellente année 2011 !!!

Qu’elle vous apporte bonheur, santé, argent (accessoirement des filles nues déchainées dans votre lit le soir, une bande passante a 1Gbps, des groupies hurlant votre prénom a la sortie du travail et le retour de Karen Cheryl sur M6 Music (nan j’déconne Fred :p) ).

Plus sérieusement, tout le meilleur pour vous pour cette nouvelle année :) et pour moi, de continuer a faire connaissance avec des bloggeurs/acteurs du net/forumeurs/ircéen de talent. Je ne peux vous citer tous de peur d’en oublier mais vous vous reconnaîtrez sûrement puisque, forcément, on a discuter ensemble ou par mail , ou sur IRC (pour ceux qui me cherche je suis sur les réseaux Europnet (pincipalement) et Freenode), ou sur les forums, ou par commentaires interposés. Merci à vous pour ses rencontres.

Alors nouveau billet pour cette année 2011. Alors oui, encore un peu lié à la domotique (quoi que…) (que voulez vous ça m’éclate en ce moment) mais je préfère rassurer mes lecteurs geeks intransigeants, on changera de sujet la prochaine fois ;)

Ce billet donc pour vous faire partager ce que j’ai mis en place à mon domicile.

Alors que je déploie petit à petit mon installation domotique, un des éléments essentiels de la maison reste l’interface reprenant tout les « services » disponibles.

Car au bout d’un moment, je me suis vite rendu compte qu’il y en avait partout :D

Entre l’interface ZoneMinder pour les caméras, le Domus.link pour les interfaces X10, les diverses pages variées de mon cru remontant les appels téléphoniques entrant, les mails, la météo, les températures des pièces, Nagios, Cacti et j’en passe et des meilleurs… J’ai donc commencer l’année par créer un joli portail pour regrouper tout cela. (OMG, 2011 et je me mets à faire du dev… l’année commence mal ;) ).

Je tiens a remercier d’ailleurs au passage Clément Storck (du blog du même nom :-p) pour son aide non négligeable au choix de la partie graphique de mon portail.

Et outre la centralisation de tout cela dans mon portail, une des fonctions que je souhaitais mettre en oeuvre, c’était l’injection dans la page web de messages provenant du serveur Domotique ou d’une autre source (Nagios par exemple) en temps réel.

Car je voulais éviter au possible les « refresh » de la page web toutes les X secondes et surtout, c’était bien le serveur qui devait envoyer les messages au client et non les clients qui se devait de « poller »/ »rafraichir » pour mettre a jour les informations.

J’ai donc fouiller un peu le Nain Ternet pour trouver une technique sympa pour faire cela et j’ai trouvé mon bonheur grâce à un projet OpenSource : AJAX PUSH ENGINE.

Pour les habitués de ses technos, il s’agit d’un serveur Comet, c’est à dire un serveur web qui push l’info aux navigateurx clients.

Vous trouverez plus d’infos sur le fonctionnement d’APE ici :

http://www.ape-project.org/ajax-push.html

NB: j’ai pris un peu de temps a fouiller le nain ternet et à récuperer des infos à droite à gauche et j’ai peut-être oublié de mentionner votre article correspondant, dans ce cas, n’hésitez pas à me conspuer que je vous cite (avec toutes mes excuses d’avance si je vous ai oublié).

Car oui, j’ai le respect de mes sources, et donc j’en profite pour faire un clin d’oeil a tout ceux qui pique sans vergogne mes billets sans me prévenir et surtout sans me citer, c’est toujours très sympa de lire ses propres lignes dans les billets/thèses/articles des autres sans se voir citer, a bon entendeur… (c’est d’ailleurs une des principales causes de ralentissement de publication de ce blog, le dégout de se voir copier parfois mot pour mot et qu’en plus on t’envoie ch… quand tu demandes juste un « merci de citer vos sources »…)

Heureusement pour moi, la documentation est abondante et assez compréhensible pour qu’un newbie comme moi en programmation y arrive :D

Je vous invite donc à lire ses tutoriaux :

http://www.ape-project.org/wiki/index.php/Main/fr

http://www.lafermeduweb.net/tutorial/ape-ajax-push-engine-installation-configuration-et-developpement-d-une-application-basique-22.html

http://wiki.strycore.com/index.php/Ajax_Push_Engine

et surtout l’excellent blog de Paul, ifc0nfig.com, qui regorge de démos et code source :

http://www.ifc0nfig.com/using-jquery-with-ape-change-the-background-color-with-php/

http://www.ifc0nfig.com/diving-into-ape-modules-and-the-jsf-creating-topics-for-channels/

Allez, suffit pour les liens, passons à la mise en oeuvre :

  • Installation du serveur APE

La c’est super dur ;)

Rendez vous sur http://www.ape-project.org/download/APE_Server.html

J’ai télécharger le package Debian et un petit dpkg -i , c’est fini.

On configure le fichier /etc/ape/ape.conf

uid {
user = www-data
group = www-data
}
 
Server {
port = 6969
daemon = yes
ip_listen = 0.0.0.0
domain = guiguiabloc.fr

On le démarre : /etc/init.d/ape-server start

  • Modification du DNS local

NB: Il existe une méthode par VHOST Apache que je n’utilise pas, je vous laisser consulter la doc.

Petite bidouille a mettre en place sur votre serveur DNS local, il faut résoudre *.votreserveur.votredomaine.

En effet, vous devez créer un sous-domaine dédié au serveur APE capable de résoudre tout les alias (un catch-all CNAME) si vous préférez.

Dans Bind c’est très simple :

srv-domotique IN A 192.168.0.1
*.srv-domotique IN CNAME srv-domotique
  • Installation du Framework Javascript

Téléchargez le framework APE ici :

http://www.ape-project.org/download/APE_JavaScript_Framework.html

Par simplicité pour les tests, je l’ai décompressé a la racine de mon serveur Web (dans /var/www/)

Commencez par configurer le config.js dans /var/www/ape-jsf/Demos :

APE.Config.baseUrl = 'http://srv-domotique.guiguiabloc.frt/ape-jsf'; //APE JSF
APE.Config.domain = 'guiguiabloc.fr';
APE.Config.server = 'srv-domotique.guiguiabloc.fr:6969'; //APE server URL

Vous n’avez plus qu’a vérifier que tout fonctionne correctement avec l’outil disponible :

http://srv-domotique.guiguiabloc.fr/ape-jsf/Tools/Check/

Si tout se passe bien vous devriez avoir une confirmation du bon fonctionnement de votre serveur APE :

Running test : Setting document.domain
Running test : Checking APE.Config.baseUrl
APE JSF Version 1.0
Running test : Contacting APE Server
domain = guiguiabloc.fr
Running test : Contacting APE Server (adding frequency)
Running test : Initializing APE Client
Running test : Connecting to APE Server
All test done. Now you can play with your APE \o/
  • Mise en place du système de message temps réel

Je me suis basé sur la démo « APEController » fournie dans le framework.

Côté serveur web :

le config.js est le même que décrit plus haut.

le guigui.js :

APE.Controller = new Class({
Extends: APE.Client,
Implements: Options,
options: {
container: null
},
initialize: function(options){
this.setOptions(options);
this.container = $(this.options.container) || document.body;
this.onRaw('postmsg', this.onMsg);
this.addEvent('load',this.start);
},
start: function(core){
this.core.start({'name': $time().toString()});
},
onMsg: function(raw){
$('apeSendMsg').empty();
new Element('div', {
'class': 'message',
html: decodeURIComponent(raw.data.message)
}).inject(this.container);
},
});

Le fichier index.html :

...
</style>
 
        <script type="text/javaScript" src="../Clients/mootools-core.js"></script>
        <script type="text/javaScript" src="../Clients/MooTools.js"></script>
        <script type="text/javaScript" src="config.js"></script>
        <script type="text/javaScript" src="guigui.js"></script>
        <script type="text/javaScript">
                window.addEvent('domready', function(){
                        var client = new APE.Controller({
                                container: $('apeSendMsg')
                        });
                        client.load({
                                identifier: 'action',
                                channel: 'testchannel'
                        });
                });
        </script>
</head>
<body>
                <div id="apeSendMsg"></div>
</body>

Et voila, reste à ecrire un petit code en php pour injecter les messages :

<?php
$APEserver = 'http://srv-domotique.guiguiabloc.fr:6969/?';
$APEPassword = 'testpasswd';
$messages = array(
        $argv[1],
);
 
$cmd = array(array(
  'cmd' => 'inlinepush',
  'params' =>  array(
          'password'  => $APEPassword,
          'raw'       => 'postmsg',
          'channel'   => 'testchannel',
          'data'      => array(
              'message' => '<b>'.$messages[array_rand($messages)].'</b>'
          )
   )
));
 
var_dump($APEserver.rawurlencode(json_encode($cmd)));
$data = file_get_contents($APEserver.rawurlencode(json_encode($cmd)));

Ne reste qu’à tester :)

~/scripts$ php send_message.php "Yo Guigui, bien ou bien ?"
string(292) "http://srv-domotique.guiguiabloc.fr:6969/?%5B%7B%22cmd%22%3A%22inlinepush%22%2C%22params%22%3A%7B%22password%22%3A%22testpasswd%22%2C%22raw%22%3A%22postmsg%22%2C%22channel%22%3A%22testchannel%22%2C%22data%22%3A%7B%22message%22%3A%22%3Cb%3EYo%20Guigui%2C%20bien%20ou%20bien%20%3F%3C%5C%2Fb%3E%22%7D%7D%7D%5D"

Et sur le client Web, vous avez le message qui s’affiche :

Magique :D

Maintenant il suffit de rajouter l’appel au script php dans votre x10.conf ou dans vos scripts Nagios pour que les messages soient poussés en temps réel dans votre page Web, sympa non ? ;)

On peut bien évidemment pousser plus loin le concept et par cette technique, changer à la volée les images sur le navigateur du client. Bien pratique pour ajouter un calque « rouge » sur l’image de la maison quand l’alarme est enclenchée par exemple ;)

Amusez-vous bien :D

12 Commentairess :, , plus...

Travaux de geek

par guiguiabloc le 12 déc, 2010, sous architecture, cisco, geekerie, matériel, réseau

Ah la la, le temps passe et forcément, je délaisse un peu le blog….

En fait pas vraiment, je continue a répondre aux diverses questions et variées qui m’arrivent dans ma boite mail mais surtout, je continue a tester des nouveaux trucs et plus précisément, j’ai mis en place ma deuxième salle machine (aussi appeler « Datacenter salle E » par mon entourage ou projet Level 0 pour moi :-p )

Comme j’en suis pas peu fier, autant que je vous en fasse profiter (même si vous vous en foutez royalement :D )

La baie principal du bureau (Level 1 désormais) a un peu changé :

Baie Level 1

J’avais auparavant un routeur 2611XM et un Catalyst 2924 en « Coeur de Réseau », remplacé depuis par un Cisco 3550-48.

Dans la suite, de haut en bas, on trouve,  le Catalyst 2924 en spare,  le Soekris sous OpenBSD ,  le Cisco 2611XM qui devient firewal stateless, le Cisco PIX (firewall Statefull), un cisco 2620 (en maquette), un Cisco 3620 qui devient routeur de backbone entre le level 1 et le level 0.

L’interconnexion entre le bureau et le sous-sol se fait par une fibre optique Multimode.

Passage Fibre

Pour passer la fibre entre mon bureau et le sous-sol, j’ai condamné l’ancienne évacuation d’eau du bureau (auparavant un coin cuisine http://blog.guiguiabloc.fr/index.php/2008/01/30/montage-de-la-baie/ ). Les deux cables noirs en plus sont les coax des caméras filaires du sous-sol et de l’entrée du garage.

Enfin, la baie du sous-sol (Level 0 )

Baie Level 0

Sympa hein :-)

L’électricité au sous-sol de ce côté etait déplorable, j’ai refait tout cela au propre :

Un petit tableau avec un disjoncteur de 16A et un différentiel 30mA (récup). Pour l’alimentation générale de la Baie, j’ai greffé un module AW12 en X10 dans une boite de dérivation qui me permet d’allumer/éteindre la baie par télécommande ou ordre X10 sur mon serveur Domotique.

La baie équipée (que de la récup’ ;-) ) :

Baie Level 0

De haut en bas :

- Serveur Dell 750 en attente

- Dell 750, Firewall Checkpoint SecurePlaform  FW-1 (Firewall  et Routeur de la zone level 0)

- HP Procurve 4000M : Switch Niveau 2 (extension du Level 1) avec son interco Fibre SX avec l’étage

- Cisco 2950, Switch Niveau 2 du Level 0

- Cisco 3620 , routeur du backbone Level0-Level1

- des Switchs SAN Brocade en attente de maquette

Classe non ? :D

En attente, le cablage cuivre point a point entre le routeur de backbone level 0 et le routeur de backbone level 1.

Le routage est donc déporté sur ses deux routeurs interconnectés entre le Level 0 et le level 1.

Je vous reparlerais plus tard de la partie réseau de cette nouvelle installation (en OSPF bien sûr) et de la mise en oeuvre du Firewall Checkpoint FW-1 dans l’infra maison :)

Bref, de grands moments de plaisir (et de galère) a mettre tout cela en place ;-)

A bientôt

15 Commentairess plus...

Qui c’est qu’a la plus grosse ?…

par guiguiabloc le 01 sept, 2010, sous architecture, linux

Ah ah ah, ce titre racoleur :D

Non, rassurez-vous, dans ce billet je vous parlerai plutôt d’optimisation de site Web et non de ce à quoi vous pensez petit canaillou.

Récemment, je suis tombé sur un outil online permettant de réaliser un benchmark de votre site web.

Le site http://gtmetrix.com/ vous propose donc d’évaluer votre site grâce à des outils bien connus des développeurs : Yslow et PageSpeed.

Je n’ai jamais fait très attention au code de mon blog (bah oui, je ne suis pas du tout développeur :-) ), mais cet outil proposé par Gossamer (rien a voir avec les préservatifs hein… (ok, elle est très capilotractée cette blague :-p ) ) est assez intéressant pour plusieurs choses.
Tout d’abord connaître les « faiblesses » de votre site web, en apprendre un peu plus sur les choses à optimiser pour qu’il soit un tantinet plus rapide (surtout à forte charge) et bien sûr, améliorer son référencement. Car Google référencera plus facilement et devant les autres un site web dont le « Page Speed » est important.

Il y a plusieurs mois, je vous avez déjà parler de l’optmisation de mon blog via eAccelerator et Memcached dont les résultats comblaient toutes mes attentes.
Serein, je me suis donc empressé de « benchmarker » mon blog et oh surprise, c’était plutôt pas terrible du tout (yslow C et Page speed D).

En fait, a y regarder de plus près, et en passant d’autres blogs/sites à la moulinette, c’est un peu un cas général…

Ni une, ni deux, me sentant grandement motivé par ce challenge (oui gros challenge pour moi quand il s’agit de plonger dans du code php :-) ) je me suis attelé à suivre les conseils de Gtmetrix (via les liens Yahoo et Google).

Rien de bien difficile, et les résultats après quelques heures de travail sont surprenant.

D’ailleurs on se rend compte de pas mal d’erreur de conception dans Wordpress et l’une des difficultés rencontrée était de positionner les codes javascript en pied de page.

Heureusement, Lyza Gardner nous a écrit un excellent tuto pour résoudre ce problème :

http://www.cloudfour.com/getting-all-javascript-into-the-footer-in-wordpress-not-so-fast-buster/

Tout cela c’est super, bien sympa, et puis on se dit, pourquoi pas plus ?…

Professionnellement, nous utilisons des CDN, des Content Delivery Network, dont le leader est Akamaï.

Il y a bien sur Amazon ou d’autres qui proposent ce genre de service, mais j’ai un gros faible pour Akamaï pour plusieurs raisons personnelles.

D’abord j’ai travaillé avec Akamaï lors de leur arrivée sur le marché français à la fin des années 90 (oui oui, j’ai eu une formation d’ intégrateur Akamaï :-p) et j’y ai cotoyé des gens formidables et très enrichissants professionnellement, qui plus est avec une techno révolutionnaire a cette époque (les membres de l’équipe de cette époque se rappeleront sans doute avec nostalgie le fameux coup de génie M6 Loft Story ;-) )

J’y ai perdu également une personne que j’aimais beaucoup, Daniel Lewin, un homme extrémement enrichissant que j’appréciais énormément et qui a eu le malheur de se trouver au mauvais endroit le 11 septembre 2001.

Bref, j’ai toujours était très attaché a cette entreprise (d’ailleurs mon premier site Web était gracieusement « akamaïsé » :D ), mais cela reste une offre professionnelle et pour un particulier disposant d’un simple blog, c’est un peu « too much » (et « too expensive » surtout..)

J’ai regardé du côté des CDN « gratuit » du genre CoralCDN dont le but est clairement intéressant mais ne semble plus suivi. Pourtant cela marche toujours et vous pouvez vous essayer à votre premier « CDN » avec eux.

Le CDN par soi-même, simple a mettre en oeuvre, il demande toutefois que vous disposiez de serveurs géographiquement distants et comble de la perfection, attachés a des points de peering intéressants.

Bref, j’avais un peu laisser tomber tout cela jusqu’a ce que je tombe la dessus :

http://code.google.com/p/cirruxcache/

« CirruxCache provides a software solution to dynamically cache HTTP objects on Google Appengine (using the Datastore and the Memcache services). »

En traduction demi-molle « CirruxCache vous permet de faire du cache HTTP via l’infrastructure Google Appengine ».

WTF ??? Alors ça, ca me semblait bien fun :D

Je fouille un peu le site et oh surprise, Antoine Libert, sur son blog, nous offre un excellent tuto pour sa mise en oeuvre !!!

Tout d’abord, merci Antoine pour cet excellent article et le lien qu’il vous faut absolument lire :

http://a-l.fr/blog/2009/11/28/how-to-use-cirruxcache-and-google-app-engine-to-cache-static-content-of-your-wp-blog/

Rajoutez a cela, un superbe plugin Wordpress pour les CDN :

http://mark.ossdl.de/2009/08/rewriting-urls-for-wordpress-and-cdn/

Le résultat est flagrant :

PageSpeed avec un score de 98….

Reste la comparaison avec d’autres sites pris au hasard ;)   :

Ok, on écrase google.com, free.fr ou ovh.fr (même si google se charge plus vite, forcément :) )

On peut se la péter grave en société avec ça :mrgreen:

Donc tout cela pour vous dire que cette phase de travail a été enrichissante pour moi, que bien sûr il reste du boulot pour monter encore un c’hti peu (pas PageSpeed  hein, je crois qu’on ne peut pas monter plus haut, du moins, je n’ai trouver aucun site Web avec un tel niveau ou supérieur), mais comprendre un peu mieux une partie que je déteste d’habitude, le code :( .

Bilan surtout sur CirruxCache et Google Appengine qui me parait une excellente solution de CDN dans des infras HA, permettant de soulager un peu vos serveurs, dans la limite, du moins, de ce que Google vous offre gratuitement comme ressource (après c’est payant bien sûr, faut pas déconner non plus…)

Amusez-vous bien :D

9 Commentairess :, , , , plus...

Vous cherchez quelque chose ?

Utilisez le formulaire ci-dessous:

Vous ne trouvez pas ce que vous voulez ? Laisser un Commentaire sur un Billet !