Qu’est-ce que Quagga ?
Quagga est un démon de routage, dérivé de ZEBRA.
C’est un logiciel donnant la possibilité au système Linux de jouer le rôle de routeur réseau, et surtout de dialoguer avec un autre routeur pour échanger ses informations de routage.
Quagga fait du routage statique, et dynamique.
Le routage dynamique se fait avec rip ( version 1 et 2 ) , ripng ( rip ipv6 ) , isis, ospf ( pour ipv4 ) , ospf6 ( ospf ipv6 ) ou bgp .
Dans mon cas le rip me suffisait, mais je ferais certainement bientôt une doc avec ospf, car le rip est vraiment lent à changer de route.
Problème rencontré
Le dernier paquet de quagga disponible sur CEntOS 4.2 est une version 0.97.0-1.
Or après quelques heures de galère à chercher pourquoi mon routage rip ne fonctionnait pas entre mon linux et mon routeur CISCO, j’ai testé le même paramétrage avec une FEDORA qui possède un quagga version 0.98.3-2.
Et là, miracle ma configuration passait sans problème sans avoir changé une ligne.
J’ai donc compris que le problème venait de cette version de quagga qui après des recherches sur le net semble pas mal bugguée et a été corrigée avec la version 0.98.
Compilation de Quagga
J’ai téléchargé le fichier quagga-0.99.3.tar.gz depuis le site du projet quagga.
Vous pouvez utiliser la commande suivante :
wget http://www.quagga.net/download/quagga-0.99.3.tar.gz
Pour compiler le rpm, il va vous falloir les outils de devellopement et les outils de developpement hérité.
Certains autres paquets comme snmp-devel vous seront nécessaires, mais la commande rpmbuild vous l’indiquera au fur et à mesure.
Il suffira d’installer les paquets avec yum, avant de relancer la commande.
Pour créer le rpm, on utilise donc la commande :
rpmbuild -tb quagga-0.99.3.tar.gz
Si tout ce passe bien, vous aurez un exit 0 à la fin de la compilation.
Cela va créer 4 fichiers rpm dans le dossier /usr/src/redhat/RPMS/i386, nommés quagga-0.99.3-2006012001.i386.rpm, quagga-debuginfo-0.99.3-2006012001.i386.rpm, quagga-contrib-0.99.3-2006012001.i386.rpm et quagga-devel-0.99.3-2006012001.i386.rpm.
Ces noms peuvent éventuellement varier sur votre distribution si le paquet tar.gz n’est pas exactement la même version.
Je fournis en annexe les paquets que j’ai créé au cas où vous souhaitiez sauter cette étape.
Prérequis à l’usage de Quagga
Les adresses IP de la machine faisant fonctionner Quagga DOIVENT être affectées par le démon zebra et pas par le système lui-même.
Pour faire cela, il vous faut éditer vos fichiers de configuration pour chaque interface et supprimer les variables IPADDR et NETMASK.
Vérifiez que vous avez également ceci : BOOTPROTO=static.
Ces fichiers de configuration s’appellent ifcfg-ethx où x est la valeur de l’interface. Ils sont placés dans le dossier /etc/sysconfig/network-scripts.
Vérifiez également que le fichier /etc/sysconfig/network ne comporte pas de variable GATEWAY ou GATEWAYDEV.
Une fois ces fichiers corrigés, relancez le réseau avec la commande service network restart
.
Vérifiez avec la commande ifconfig que vos interfaces n’ont plus d’adresses ipv4 et que la table de routage est vide avec la commande route -n
.
Installation de Quagga
L’installation se fait classiquement avec la commande rpm, par contre, assurez vous d’installer quagga + quagga-devel pour un problème de dépendance.
rpm -ivh quagga-0.99.3-2006012001.i386.rpm quagga-devel-0.99.3-2006012001.i386.rpm
Activation du serviceQuagga
Pour activer Quagga, il faut activer le service zebra avec la commande :
chkconfig zebra on
Le routage dynamique s’active démon par démon, c’est à dire que si vous utilisez OSPF, il vous faut activer ospfd, si vous utiliser BGP, il vous faut activer bgpd, etc…
Dans mon cas j’active RIP.
chkconfigripd on
Attention, pour activer le routage dynamique il faut qu’un fichier de configuration pour le démon en question existe. Par défaut il n’y en a pas, il ya juste des fichiers exemples.
Les fichiers de configuration se trouvent dans le dossier /etc/quagga.
Le fichier de configuration de quagga s’appelle zebra.conf et est présent de base.
Le fichier de configuration de rip s’appelle ripd.conf et doit être créé :
cp /etc/quagga/ripd.conf.sample /etc/quagga/ripd.conf
Les fichiers doivent appartenir à l’utilisateur quagga, or ce n’est pas encore le cas.
Pour cela, il faut utiliser la commande suivante :
chown quagga: /etc/quagga/*
Une fois ces fichiers créées on peut lancer les services :
service zebra start
service ripd start
Paramétrage de Quagga
Le paramétrage se fait avec une console spécialisée nommés vtysh.
Pour l’éxécuter, lancez la commande vtysh
depuis le shell du root.
Les commandes à taper ressemblent aux commandes CISCO pour les initiés, ce qui simplifie le travail quand on utilise ce type de routeurs.
Je vous laisse consulter la documentation pour le paramétrage, car ce n’est pas évident à retranscrire.
Sachez simplement que pour voir la configuration active, il faut utiliser la commande sh running-config
et pour passer en mode de configuration il faut taper codeconf t/code.
Une fois la configuration effectuée, enregistrez la dans les fichiers de configuration avec la commande wr
.
Exemple de configuration
Depuis le prompt de root :
vtysh
Hello, this is Quagga (version 0.99.3).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
localhost#
Une fois au prompt de quagga, taper les commandes comme ceci :
conf t
hostname fw0.caplaser.fr
interface eth0
ip address 192.168.1.110/24
exit
interface eth1
ip address 192.168.100.110/24
exit
router rip
version 1
redistribute connected
redistribute static
network 192.168.100.0/24
exit
exit
wr
exit
Ceci donne une configuration comme ceci :
Fichier zebra.conf
!
! Zebra configuration saved from vty
! 2006/02/02 18:55:44
!
hostname fw0.caplaser.fr
!
interface eth0
ip address 192.168.1.110/24
ipv6 nd suppress-ra
!
interface eth1
ip address 192.168.100.110/24
ipv6 nd suppress-ra
!
interface eth2
ip address 192.168.102.110/24
ipv6 nd suppress-ra
!
interface eth3
ip address 192.168.103.110/24
ipv6 nd suppress-ra
!
interface eth4
ip address 192.168.104.110/24
ipv6 nd suppress-ra
!
interface eth5
ip address 192.168.105.110/24
ipv6 nd suppress-ra
!
interface lo
!
interface sit0
ipv6 nd suppress-ra
!
ip route 0.0.0.0/0 192.168.1.254
!
ip forwarding
!
line vty
!
Fichier ripd.conf
!
! Zebra configuration saved from vty
! 2006/02/02 18:55:44
!
hostname ripd
password zebra
log stdout
!
router rip
version 1
redistribute connected
redistribute static
network 192.168.100.0/24
!
line vty
!