Sep 08

Réplication de serveurs Memcached

C’est la rentrée, j’espère que les vacances se sont bien passées pour tout le monde, et que, comme moi, vous avez énormément pris sur vous en croisant un panneau « Wi-Fi libre accès » sous les regards noirs et appuyés de Madame… :-p (le même regard qu’elle vous jettera d’ailleurs quand, sur la plage, refoulant le souvenir de cette borne Wi-Fi, vos yeux glisseront subrepticement sur le corps de la jeune demoiselle à quelques pas de vous, quand elle dégrafera son haut de maillot de bain…) BREF !!!

Fin de l’encart « vacances perverses » 😀 et je vous souhaite une bonne reprise quand même 🙂

Nul besoin de vous refaire une présentation de Memcached dont j’avais abordé le sujet précédemment.

Vous l’utilisez parce que vous avez une forte charge sur vos serveurs et vous avez été conquis par ses performances, et c’est bien 😀

Comme vous le savez, fidèles lecteurs (ou pas) de ce blog (et je vous en remercie, c’est toujours très agréable de savoir que le temps passé a tester et écrire des articles est au moins lu par quelques milliers dizaines de personnes 🙂 ), j’aborde assez souvent la notion de haute-disponibilité.

Outre l’incomparable avantage de permettre au Sysadmin de pouvoir terminer sa nuit tranquillement sans devoir se rendre a 4h du matin au Datacenter pour remettre en service un serveur capricieux, elle permet surtout de disposer d’une infrastructure solide et disponible de façon quasi-permanente qui feront les joies de votre DI/RSI/DRH/DAF etc. etc. (liste non exhaustive).

Dans cette architecture hautement disponible, vous avez greffé un serveur memcached (ou pour soulager vos serveurs de base de données, ou pour distribuer du contenu statique, ou gérer vos sessions utilisateurs, ou que sais-je encore…).

Oui mais voila, si le serveur Memcached tombe, et bien ca colle quand même un frein à vos performances en attendant qu’il reparte.

Nous aurions bien évidemment pu installer un deuxième serveur Memcached en secours et basculer une ip flottante type fail-over/carp sur l’esclave en cas de panne du Maître mais il faut repeupler le cache… Pas très sexy comme méthode (même si efficace).

Je vous propose donc une autre solution, une réplication Memcached entre X serveurs de ce type.

(et là vous pouvez faire « Oooohhh »)

  • REPCACHED

Pour cette solution, nous allons utiliser le projet REPCACHED qui ajoute a Memcached les fonctions de réplication dont vous trouverez les sources sur :

http://sourceforge.net/projects/repcached/files/

Parmi ses fonctionnalités :

  • multi master replication.
  • asynchronous data replication.
  • support all memcached command (set, add, delete, incr/decr, flush_all, cas)

Par contre, si l’on peut reprocher quelque chose à ce projet dans l’état actuel des choses, c’est son manque quasi total de documentation 🙁

Deux types de sources sont disponibles :

– 1 patch version 2.2 pour Memcached (version 1.2.8 à l’heure où j’écris)

ou

– L’ensemble complet Repcached 2.2 + Memcached 1.2.8

Le seul pré-requis est d’avoir l’API libevent (un apt-get install libevent-dev sous Debian suffira)

L’installation en mode patch est la suivante :

$ wget http://memcached.googlecode.com/files/memcached-1.2.8.tar.gz
$ tar zxf memcached-1.2.8.tar.gz
$ cd memcached-1.2.8.tar.gz
$ wget http://downloads.sourceforge.net/project/repcached/repcached/2.2-1.2.8/repcached-2.2-1.2.8.patch.gz
$ gzip -cd repcached-2.2-1.2.8.patch.gz | patch -p1

Pour les deux modes (patch ou full sources) :

$ ./configure --enable-replication
$ make
$ make install

Désormais, vous avez des options supplémentaires pour le lancement du démon :

Guiguiabloc-a:/opt/memcached/bin$ ./memcached -h
memcached 1.2.8
repcached 2.2
...
-x   hostname or IP address of peer repcached
-X       TCP port number for replication (default: 11212)

Le fonctionnement est assez basique.

Vous démarrez le premier serveur en lui passant l’option -x adresse_ou_ip_partenaire

memcached@Guiguiabloc-a:~/bin$ ./memcached -d -x Guiguiabloc-b
memcached@Guiguiabloc-a:~/bin$

Le serveur Memcached utilise par défaut le port 11212 pour la réplication, pensez à ouvrir votre firewall.

Maintenant nous allons démarrer le deuxième serveur en lui passant l’option -x

memcached@Guiguiabloc-b:~/bin$ ./memcached -d -x Guiguiabloc-a
memcached@Guiguiabloc-b:~/bin$

Ne reste qu’à tester.

Injectons un couple clé/valeur sur le maître directement par telnet.

NB: Vous trouverez sur http://lzone.de/articles/memcached.htm un récapitulatif des commandes existantes (Merci a Fred (le seul geek que je connaisse qui écoute « Oh chéri chéri » de Karen Cheryl » en boucle sur son Ipod) pour le lien)

memcached@Guiguiabloc-a:~/bin$ telnet Guiguiabloc-a 11211
Trying 192.168.50.1...
Connected to guiguiabloc-a.
Escape character is '^]'.
get url
END
set url 1 0 19
blog.guiguiabloc.fr
STORED
get url
VALUE url 1 19
blog.guiguiabloc.fr
END

En détails, je vérifie s’il existe une valeur pour la clé « url » (get url).

La réponse est négative, je stocke donc la clé « url », 1 signifiant « arbitrary metadata », 0 « n’expire jamais », 19 bytes de longueur, et la valeur.

On redemande la clé « url », c’est bon.

Maintenant sur le deuxième serveur :

memcached@Guiguiabloc-b:~/bin$ telnet guiguiabloc-b 11211
Trying 192.168.50.2...
Connected to guiguiabloc-b.
Escape character is '^]'.
get url
VALUE url 1 19
blog.guiguiabloc.fr
END

Un succès ! 😀

Vous pouvez tester dans l’autre sens, en modifiant la valeur de la clé « url » sur le deuxième serveur, elle sera modifiée sur le premier.

En coupant brutalement l’un des deux et en le relancant, vous verrez que son cache se met a jour automatiquement via la réplication Memcached.

memcached@Guiguiabloc-a:/opt$ telnet guiguiabloc-a 11211
Trying 192.168.50.1...
Connected to Guiguiabloc-a.
Escape character is '^]'.
get url
VALUE url 1 19
blog.guiguiabloc.fr
END
quit
Connection closed by foreign host.
memcached@Guiguiabloc-a:/opt$ killall memcached
memcached@Guiguiabloc-a:/opt$ ps aux | grep memcached
1002      5927  0.0  0.2   4168  1068 pts/0    S    19:26   0:00 su - memcached
1002      5966  0.0  0.1   3344   744 pts/0    S+   19:39   0:00 grep memcached
memcached@Guiguiabloc-a:~/bin$ ./memcached -d -x guiguiabloc-b
memcached@Guiguiabloc-a:~/bin$ telnet guiguiabloc-a 11211
Trying 192.168.50.1...
Connected to guiguiabloc-a.
Escape character is '^]'.
get url
VALUE url 1 19
blog.guiguiabloc.fr
END

Bilan, un excellent outil de haute-disponibilité qui inclut enfin le double sens de réplication (dans les versions antérieures (1.0), il fallait définir le Maître en le démarrant sans paramètres et l’esclave en lui passant l’option -x. En cas de crash du Maître, l’esclave devenait Maître. Le failback se réglait en lancant l’ancien Maître avec l’option -x.

On peut juste regretter l’absence quasi totale de documentation et même si le projet a bientôt 2 ans, il semble particulièrement mature pour de la production. A suivre donc.

Amusez-vous bien 😀

Classé dans architecture, linux | Taggé , | 8 Commentaires
Août 07

Mise en oeuvre d’un cluster Zimbra avec synchronisation multi-plateformes

Pour un projet, j’ai eu à réfléchir à une solution d’agendas partagés, synchronisable sur blackberry.

C’est donc un dimanche matin, avant de me vautrer comme une loutre sur le canapé la messe, que j’ai mis en place tout cela et j’en suis plutôt content.

En matière d’outil de collaboration, il existe plusieurs produits, achevés ou non, intéressants ou pas.

J’avais d’abord commencé par lorgner du côté de Kolab mais j’ai préféré choisir un outil que je connais bien et qui a fait largement ses preuves : ZIMBRA.

Inutile de vous présenter cette suite d’outils, leur réputation n’est plus a faire.

Maintenant, il me fallait rendre Zimbra hautement disponible et surtout, permettre de synchroniser les agendas et carnet d’adresses avec une multitude d’équipements (téléphone Blackberry, Symbian, Iphone etc…) mais aussi sur les PC sous Thunderbird/Lightning, Evolution voir même (pour les GENS sales), Micro$oft Windaube avec Proutlook (la version complète, pas caca express qui ne dispose pas de calendrier).

Donc du Zimbra a ma sauce, voila donc la mise en oeuvre d’un ZImbrabloc (guiguiabloc + zimbra … ok , je –> [] )

Pour la partie synchronisation, il me fallait quelque chose de solide, d’Open (forcément), utilisable avec Zimbra et une immense majorité de plateformes comme énoncé plus haut.

Ce service magique, je l’ai trouvé chez Funambol.

Comme toujours si vous ou l’un de vos collaborateurs un dessin valant mieux qu’un long discours, voici ce que je vous propose mettre en place :

Architecture ZimbraBloc

Architecture ZimbraBloc

  • Préparation de l’ip Failover, des DNS et des Serveurs

Si vous êtes chez OVH, c’est le moment d’activer votre IP Failover pour qu’elle pointe sur vos deux serveurs.

(Sinon, a vous de préparer votre VIP CARP ou UCARP si vous utilisez un autre système d’ip failover).

Relire mes précédents billet :

ICI , ICI et LA .

L’installation de Zimbra est triviale si l’on prépare en amont ses DNS. En effet, le serveur sur lequel vous installerez Zimbra doit être MX du domaine (l’installeur le vérifie).

collab.guiguiabloc.fr IN A 10.0.0.1
 
collab.guiguiabloc.fr MX 10 collab.guiguiabloc.fr
 
zimbrabloc-1 IN A 10.10.10.1
 
zimbrabloc-2 IN A 10.10.10.2
 
zimbrabloc-1 MX 10 zimbrabloc-1
 
zimbrabloc-2 MX 10 zimbrabloc-2

Côté serveurs, prévoir :

Vos partitions  / /home /tmp bref, comme vous avez l’habitude de faire

1 partition pour DRBD (tailler large…)

1 partition de quelques gigas juste pour l’installation de Zimbra, que l’on montera en /opt

  • Installation de Zimbra, DRBD et Heartbeat

Je me suis basé sur l’excellent article de Mig5 :

http://www.mig5.net/content/howto-highly-available-zimbra-cluster-using-heartbeat-and-drbd

L’installation ce Zimbra sous DRBD demande une manipulation un peu tordue car Zimbra vérifie que la machine sur laquelle il s’installe est bien MX du domaine (en gros il interroge le DNS du domaine et check son /etc/hostname mais drbd vérifie que le /etc/hosts et le /etc/hostname de la machine sont bien identiques sinon il crie au loup.

Pour simplifier la manipulation, la technique est la suivante :

  • installation de zimbra dans /opt (on monte notre petite partition en /opt)

Sur zimbrabloc-1 on change le /etc/hostname par collab.guiguiabloc.fr

On reboot, on installe Zimbra (téléchargeable ICI ) (si vous avez une erreur comme quoi le MX ne pointe pas sur la bonne ip (normal puisque l’on pointe sur une ip failover, passez outre et répondre Non au changement de domaine)

Je ne m’étend pas sur l’installation, très simple, et il existe multitude de tutos sur le nain ternet.

  • on stoppe Zimbra, on remet le hostname comme il était (zimbrabloc-1)
  • on supprime les entrées dans /etc/rc* (c’est Heartbeat qui gèrera l’arrêt/relance de Zimbra)
  • on édite le /etc/hosts que l’on modifie ainsi :

Pour Zimbrabloc-1

127.0.0.1 collab.guiguiabloc.fr localhost
 
10.10.10.1 zimbrabloc-1 collab.guiguiabloc.fr
 
10.10.10.2 zimbrabloc-2

Pour Zimbrabloc-2

127.0.0.1 collab.guiguiabloc.fr localhost
 
10.10.10.1 zimbrabloc-1
 
10.10.10.2 zimbrabloc-2 collab.guiguiabloc.fr

On démonte /opt pour le monter en /mnt/trucmuche temporairement.

Côté serveurs, on se monte une « petite » partition en DRBD comme d’habitude, déjà expliqué dans ce billet.

Je vous passe la synchro et tout le bouzin de drbd, bref, vous devriez vous retrouver avec un /dev/drbd0 que l’on montera en /opt.

Ne reste qu’a copier l’integralité de votre /mnt/trucmuche dans votre nouveau /opt fraichement synchronisé.

(n’oubliez pas de virer l’entrée /etc/fstab…)

Vous installez heartbeat et vous renseignez vos /etc/ha.d/haresources pour basculer votre noeud :

zimbrabloc-1 IPaddrFO::10.0.0.1/32/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/opt::ext3 zimbra MailTo::guiguibloc@guiguiabloc.fr::Bascule_Zimbra

NB: le script IPaddrFO est une modification du IPaddr dans lequel, outre la bascule de l’ipfailover d’une machine a une autre, je « pousse » via un script python, la mise à jour de l’ipfailover dans le manager d’OVH :

Le code a modifier :

case $2 in
start)        /home/system/zimbrabloc1-failoverupdate.py
ip_start $1;;

Le script Python :

#!/usr/bin/python
from SOAPpy import WSDL
soap = WSDL.Proxy('https://www.ovh.com/soapi/ovh.wsdl')
nic = 'guiguiabloc-ovh'
password = 'weshgroscestmoi'
try:
session = soap.login( nic, password )
print "login successfull"
except:
print "Error login"
try:
result = soap.dedicatedFailoverUpdate( session, 'ns12345.ovh.net', '10.0.0.1', '10.10.10.1' );
print "dedicatedFailoverUpdate successfull";
except:
print "Error dedicatedFailoverUpdate"
try:
result = soap.logout( session )
print "logout successfull"
except:
print "Error logout"

Je vous laisse rebooter, couper le zimbrabloc-1 et vérifier la bascule sur le zimbrabloc-2.

  • Serveur de synchronisation Funambol

Funambol est une entreprise américaine qui propose deux types de licences, Commercial et OpenSource.

Sa force est d’offrir des clients de synchronisation pour quasiment tout ce qui est amené à se synchroniser à quelque chose un jour.

On attendait depuis longtemps le connecteur Funambol pour Zimbra, c’est chose faite :

http://sourceforge.net/projects/zimbrafunambol/

L’installation du serveur Funambol est d’une simplicité déconcertante (on l’installera dans /opt, a coté de notre ZImbra).

Par défaut, il écoute sur le port 8080, ce qui n’entrera pas en conflit avec l’interface web de Zimbra

(Bien évidemment, on passera tout cela en https avant d’ouvrir au public).

L’url de synchro sera donc :

http://collab.guiguiabloc.fr:8080/funambol/ds

(Vous pouvez vérifier que le serveur Funambol fonctionne parfaitement en pointant votre navigateur sur cette adresse)

Funambol Data Synchronization Server v.7.1.0

Man=Funambol
Mod=DS Server
SwV=7.1.0
HwV=-
FwV=-
OEM=-
DevID=funambol
DevTyp=server
VerDTD=1.2
UTC=true
SupportLargeObjs=true
SupportNumberOfChanges=true
Ext=X-funambol-smartslow

L’installation et le paramétrage du connecteur Zimbra sont parfaitement documentés :

http://wiki.zimbra.com/index.php?title=Open_Source_Mobile_Calendar_and_Contact_Synchronization

Un excellent tutorial en français (chapeau a son auteur, Jean-François VIAL, et surtout merci 😀 )

http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-zimbra-sur-un-serveur-gnu-linux/

  • Installation et test du client de synchro

Les téléchargements disponibles pour les diverses plateformes se trouvent ici :

https://www.forge.funambol.org/download/

Mon nokia e65, tournant sous Symbian fait bien sur partie des plateformes disponibles (Symbian )

Ici le couple Username/Password correspond au compte de l’utilisateur dans Zimbra.

Le serveur location sera : http://collab.guiguiabloc.fr:8080/funambol/ds

Un petit clic sur « Sync All » et le calendrier se synchronise. Magique 🙂

Les paramétrages de synchro sont modifiables (dans 1 sens ou dans les 2 sens, désactivation de la synchro des contacts etc…)

Au final, nous avons mis en place un système collaboratif en haute disponibilité, accessible en Web synchronisable par Client lourd, par téléphone portable etc…

L’agenda partagé est un outil devenu indispensable dans les entreprises.

Offrir ce type de service, qui permet de tenir son calendrier a jour, de le consulter ou que l’on soit, par plusieurs moyens différents, tout en étant certain de la disponibilité du service, c’est quand même pas mal, non ?

A vous de vendre cela a votre DG/PDG/DRH qui vous regardera les yeux humides d’émotion de répondre à l’une de ses problématiques (et accessoirement vous gratifiera d’une tape sur l’épaule avec un « beau travail » en oubliant de vous offrir une augmentation…)

Amusez vous bien 🙂

Classé dans geekerie, linux | Taggé , | 11 Commentaires
Juil 16

Scans web, engluer les requètes automatisées

Aujourd’hui un petit billet pour s’amuser un peu avec les scripts kiddies.

Si vous hébergez votre propre serveur web, vous avez sûrement remarqué l’accès indésirable à votre serveur http par des requêtes plus ou moins automatisées dans le but de découvrir une faille potentielle.

Dans le genre :

[Sun Jul 12 06:26:57 2009] [error] [client 1.2.3.4] File does not
exist: /var/www/phpmyadmin
[Sun Jul 12 06:26:58 2009] [error] [client 1.2.3.4] File does not
exist: /var/www/phpMyAdmin

Bien entendu, en bon admin que vous êtes, vous avez greffé ModSecurity sur votre Apache préféré, ce qui limite grandement la casse et renvoi le petit merdeux bonhomme dans sa chaumière avec un joli code 400 :

[Wed Jul 15 19:30:36 2009] [error] [client 87.229.108.30] ModSecurity: Warning. Operator EQ match: 0. [id "960009"] [msg "Request Missing a User Agent Header"] [severity "WARNING"] [hostname "1.2.3.4"] [uri "/phpMyAdmin/main.php"] [unique_id "6cDOIV4XBY0AABEgIhMAAAAD"]
[Wed Jul 15 19:30:36 2009] [error] [client 87.229.108.30] ModSecurity: Access denied with code 400 (phase 2). Pattern match "^[\\\\d\\\\.]+$" at REQUEST_HEADERS:Host. [id "960017"] [msg "Host header is a numeric IP address"] [severity "CRITICAL"] [hostname "1.2.3.4"] [uri "/phpMyAdmin/main.php"] [unique_id "6cDOIV4XBY0AABEgIhMAAAAD"]

Et bien sûr couplé également à un fail2ban ou un ossec dans les règles :

/var/ossec/active-response/ossec-hids-responses.log
Wed Jul 15 19:30:36 CET 2009
/var/ossec/active-response/bin/firewall-drop.sh add - 87.229.108.30

Pan, gant Mapa, gravier et bonjour chez toi

C’est bien mais moi, qu’on vienne m’embêter, je n’aime pas ça et sadique comme je sais l’être, je suis assez fervent de rendre la monnaie de leur pièces a ces « cliqueurs-de-truc-ki-marche-tout-seul-pour-hack »

Donc j’ai chercher un moyen de m’amuser avec eux et surtout, ce qui est le pire pour un spammeur/script-kiddies, leur faire perdre du temps.

Cette technique d’engluage, appelée aussi « sticky honeypot », est déjà utilisée pour ralentir les vers, bots, etc… grâce à l’excellent LaBrea.

Ce programme est ce que l’on appele un « tarpit« . Un service réseau dont le seul but est de ralentir la connexion a ce service aussi longtemps que possible.

En effet, un spammeur pour qui l’envoi de masse et la rapidité sont primordiaux, si le serveur de mail en face met 10 secondes a lui répondre au lieu de 1 seconde, vous comprendrez qu’il a de quoi enrager…

Bref, je vous invite à lire les différents articles sur les liens données ci-dessus si vous voulez jouer avec cette technique (il y a même un patch Tarpit pour iptables 😉 )

  • ModSecurity, la solution qui va bien

Je cherchais une solution plutôt simple et rapide à mettre en oeuvre (après tout, ce n’est qu’un Proof of Concept 😀 ), et utilisant déjà ModSecurity, il devait exister un moyen de combiner tout cela.

Après avoir fouillé la documentation et effectué quelques recherches sur le Nain Ternet, j’ai découvert une option magique de ModSecurity : « pause ».

Avant toutes choses, je vous invite fortement à utiliser l’excellentissime ModSecurity sur vos serveurs Apache. Vous trouverez de très bons articles et documentation sur le site de Breach (l’éditeur de ModSecurity, chez HSC, ou le tuto de Lindev.

Pour résumer, ModSecurity est un filtre qui va intercepter les requêtes adressées à votre serveur Apache et vérifier dans une liste de règles pré-définies ou écrites par vous si elles correspondent et réagir en conséquence.

Contre les injections SQL, les attaques transversales ou tout les petits trucs joyeux du monde web, c’est quand même ce qu’il se fait de mieux.

Bref, Modsecurity permet de définir ses propres « SecRule » et c’est cela que nous allons utiliser pour retarder les requètes.

Je considère que votre module ModSecurity est actif et fonctionnel.

Basons nous sur les scans « RoundCube » qui tourne actuellement suite à des failles de sécurité découvertes dans le Webmail (http://isc.sans.org/diary.html?storyid=5659).

J’utiliserais le fichier ./modsecurity.d/modsecurity_crs_15_custom_rules.conf pour intégrer mes règles :

SecRule REQUEST_URI "/roundcube" "pause:30000,log,status:400,deny"
SecRule REQUEST_URI "/roundcubemail" "pause:30000,log,status:400,deny"
SecRule REQUEST_URI "/roundcubemail-0.1" "pause:30000,log,status:400,deny"
SecRule REQUEST_URI "/roundcubemail-0.2" "pause:30000,log,status:400,deny"
SecRule REQUEST_URI "/roundcube-0.1" "pause:30000,log,status:400,deny"
SecRule REQUEST_URI "/roundcube-0.2" "pause:30000,log,status:400,deny"
SecRule REQUEST_URI "/round" "pause:30000,log,status:400,deny"

Petite explication.

– Je définis une règle de sécurité par le champ « SecRule »

– Je demande a ModSecurity de vérifier les requêtes qui contiennent le chemin /round, /roundcube, etc..

– Si la règle match, on attend 30000 millisecondes, on log, on sort une erreur 400 et un accès refusé.

Ne reste plus qu’a tester 😀  :

guiguiabloc@bofh:~$ wget -E -H -k -K -p http://monserveur.net/round
--15:05:54--  http://monserveur.net/round
=> `monserveur.net/round'
Résolution de monserveur.net... 12.34.56.67
Connexion vers monserveur.net|12.34.56.67|:80...connecté.
requête HTTP transmise, en attente de la réponse...400 Bad Request
15:06:25 ERREUR 400: Bad Request.
 
Terminé --15:06:25--
Téléchargement: 0 octets dans 0 fichiers

Ah Ah Ah ! Je me gausse 🙂 🙂 🙂

Ou comment faire perdre du temps aux scanners web…

Je sais, ce n’est qu’une goutte d’eau dans le vase immense du Nain Ternet mais c’est fichtrement amusant…

Amusez vous bien 😀

PS : Ce billet me permet en même temps de remercier les colles Cleopatre pour toutes ses années d’école passées a les renifler :-p

Classé dans linux, sécurité | Taggé , , | 4 Commentaires
Juil 07

Vyatta, un JunOS like et une alternative sérieuse a Quagga

Si vous faites mumuse avec les réseaux, il y a de fortes chances que vous ayez utilisé Zebra/Quagga.

Pour ceux qui ne connaîtrait pas, il s’agit d’un logiciel de routage pour les plateformes Linux/*BSD, implémentant de nombreux protocoles comme OSPF et BGP.

Ce qui le rend intéressant, c’est son approche à la « Cisco », avec des commandes en mode « configure » très proche des IOS, ce qui le classe dans la catégorie des cisco-like.

Suite a la mise en place de diverses architectures de test, j’ai vite trouvé des limites à son utilisation (NAT, VRRP, VPN etc…) et alors que je me préparais a coller un nouveau Cisco matériel pour résoudre tout cela, je suis tombé sur un produit OpenSource bluffant : VYATTA.

Ne soyez pas effrayé par les prix, il existe une version communautaire gratuite (la VC5 a l’heure où j’écris ses lignes).

L’enregistrement vous donne accès à l’ensemble de la documentation au format PDF. Documentation d’ailleurs très bien fournie qui vous permet d’aborder toutes les possibilités de Vyatta.

Le choix de l’utilisation de Vyatta est un vrai bonheur : livecd, installation sur disque dur, machine virtuelle VMWare, image Citrix XEN server….

Pour ma part, j’ai opté pour l’installation sur disque dur, sur un petit pc avec une carte réseau relié en trunk sur un de mes switchs.

Je vous passe l’installation, on ne peut plus simple, pour aborder la syntaxe particulière des commandes.

Ceux qui utilisent des JunOS (type Juniper) seront moins perdu que les habitués de l’IOS.

exemple :

vyatta@vyatta:~$ configure
[edit]
vyatta@vyatta# show interfaces ethernet eth0
address 10.10.10.1/22
duplex full
hw-id 00:01:02:03:04:05
speed 100
vif 1 {
address 192.168.1.1/24
}
[edit]

Tout comme sur les équipements professionnels, un appui sur la touche TAB vous donne accès aux commandes disponibles :

vyatta@vyatta# show
Possible completions:
interfaces    Configure network interfaces
service       Configure specified service
system        Configure system parameters
 
[edit]

La configuration se retrouve dans un fichier facilement compréhensible de type « arbre » :

interfaces {
ethernet eth0 {
address 10.10.10.1/22
duplex full
hw-id 00:01:02:03:04:05
speed 100
vif 1 {
address 192.168.1.5/24
}
}
loopback lo {
}
}
service {
https
ssh {
allow-root false
port 22
protocol-version v2
}
}

Bien sûr l’ensemble tourne sur un Linux de type Debian avec un repository dédié qui vous permet de rajouter des paquets manquants.

Les services offerts par Vyatta sont impressionnants :

cluster, firewall statefull, Vrrp, VPN ipsec, VPN pptp, VPN ssl OpenVPN, load balancing, etc….

De plus, outre l’accès SSH, une interface web en https vous permet de configurer plus facilement votre « routeur ».

Interface Vyatta

Interface Vyatta

Interface web Vyatta

Interface web Vyatta

Je vous invite a tester rapidement ce petit bijou qui, outre le fait de vous familiariser avec les commandes JunOS, permet de remplacer sans rougir un équipement plus onéreux.

Enfin, sachez que l’éditeur vend également son produit sur des appliances dédiés.

Amusez vous bien 🙂

EDIT : Si vous voulez en savoir encore un peu plus, Crashdump nous a pondu un petit tuto de derrière les fagots pour la mise en oeuvre d’un load-balancing avec Vyatta. Pour le billet, c’est ICI .

Classé dans linux, réseau | Taggé , | 12 Commentaires