Rdgc.org

Banner

Rédigé le 08 juin 2010, modifié le 31 mars 2016

Quagga est une suite de routage implémentant les protocoles OSPF (v2 & v3), RIP (v1, v2 & v3) et BGP (v4) fonctionnant sur des systèmes Linux ou Unix.
Je ne m'étendrais pas plus sur la définition, ce n'est pas le but ici.

Cet article donne un exemple de configuration de quagga pour faire du routage dynamique avec le protocole OSPF. L'OS utilisé est Gentoo Linux.

Il y a quelques temps, j'ai eu besoin de monter une petite maquette avec plusieurs réseaux interconnectés. Le choix était vite fait, il me suffisait de créer des petites machines virtuelles Linux pour faire le routage entre ces réseaux. Pour éviter d'ajouter plein de routes à la main, le plus simple est donc d'utiliser un protocole de routage dynamique. OSPF en l'occurence.

Comme je n'ai pas forcément trouvé un tuto qui me convenait, j'ai décidé de faire partager ma config. Ca peut toujours servir !

Schéma de la maquette :
<img src="/ressources/images/reseau-quagga.png" alt="reseau-quagga.png" width="100%" />

Je ne détaille que la partie quagga, ça suppose donc que le système est déjà correctement installé, fonctionnel et à jour.

<h3>1. Installation de quagga</h3>
<p>Modifier le fichier /etc/sysctl.conf pour avoir les lignes suivantes : </p><ul>net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1</ul>
<p>Si la partie SNMP n'est pas nécessaire, exécuter la commande : </p><ul># echo "net-misc/quagga -snmp" >> /etc/portage/package.use</ul>
<p>Installation de quagga :</p><ul># emerge -a quagga

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild N ] sys-libs/libcap-2.17 USE="pam"
[ebuild N ] sys-apps/iproute2-2.6.31 USE="berkdb -atm -minimal"
[ebuild N ] net-misc/quagga-0.98.6-r4 USE="ipv6 pam -bgpclassless -fix-connected-rt -multipath -ospfapi -realms -snmp -tcp-zebra -tcpmd5"

Would you like to merge these packages? [Yes/No] </ul>
<h3>2. Configuration et utilisation de quagga</h3>
<p>Quagga se compose de plusieurs daemons utilisables selon ce qu'on veut faire. </p><ul><li>zebra: Déclaration des interfaces et routage statique</li>
<li>bgpd: Protocole de routage BGP</li>
<li>ospfd: Protocole de routage OSPF</li>
<li>ospf6d: Protocole de routage OSPF pour IPv6</li>
<li>ripd: Protocole de routage RIP v2</li>
<li>ripngd: Protocole de routage RIP pour Ipv6</li></ul>
<p>Chaque daemon possède son fichier de configuration, placé dans /etc/quagga/ . Une fois exécuté, un daemon est configurable en se connectant en telnet sur le port spécifique qui lui correspond :</p> <ul><li>zebra: 2601</li>
<li>ripd: 2602</li>
<li>ripng: 2603</li>
<li>ospfd: 2604</li>
<li>bgpd: 2605</li>
<li>ospf6d: 2606</li></ul>
<p>Bien sur, pour pouvoir accéder à la configuration d'un daemon de cette façon, il faut qu'il soit en cours d'exécution.
Démarrage du daemon OSPF ipv4 : </p><ul># /etc/init.d/ospfd start
* Starting ospfd ... [ ok ]</ul><p>La configuration peut se faire globalement au lieu de daemon par daemon avec la commande vtysh.

Lors de la configuration, il faut commencer par déclarer les interfaces si ce n'est pas encore fait dans le fichier zebra.conf. Le reste des commandes sont à peu près identiques à de l'IOS Cisco.

Une fois la configuration faite, ajout du daemon utilisé au démarrage : </p><ul># rc-update add ospfd default
* ospfd added to runlevel default</ul>
<p>Comme un bon exemple vaut mieux qu'un long discours, je fourni les configurations que j'ai utilisé.</p>

<h3>3. Routeur WR1</h3>
<p><b># vtysh</b>
Hello, this is Quagga (version 0.98.6).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

quagga-router1# sh run
Building configuration...

Current configuration:
!
hostname Router
hostname ospfd
log stdout
hostname quagga-router1
!
interface eth0
description Lan
ip address 10.1.15.241/24
ipv6 nd suppress-ra
link-detect
!
interface eth1
description Wan
ip address 172.16.1.1/24
ipv6 nd suppress-ra
link-detect
!
interface lo
!
router ospf
network 10.1.15.0/24 area 0.0.0.0
network 172.16.1.0/24 area 0.0.0.0
!
ip route 0.0.0.0/0 10.1.15.254
!
ip forwarding
!
line vty
!

<b>ospfd.conf :</b>
!
! Zebra configuration saved from vty
! 2010/03/15 11:08:34
!
hostname ospfd
log stdout
!
!
!
interface eth0
description Lan
!
interface eth1
description Wan
!
interface lo
!
router ospf
network 10.1.15.0/24 area 0.0.0.0
network 172.16.1.0/24 area 0.0.0.0
!
line vty
!

<b>zebra.conf : </b>
!
! Zebra configuration saved from vty
! 2010/03/15 11:08:34
!
hostname Router
!
interface eth0
description Lan
link-detect
ip address 10.1.15.241/24
ipv6 nd suppress-ra
!
interface eth1
description Wan
link-detect
ip address 172.16.1.1/24
ipv6 nd suppress-ra
!
interface lo
!
ip route 0.0.0.0/0 10.1.15.254
!
ip forwarding
!
line vty
!

<b>vtysh.conf : </b>
!
! Configuration file for vtysh.
!
!service integrated-vtysh-config
hostname quagga-router1
username root nopassword
!</p>

<h3>4. Routeur WR2 : </h3>
<p><b># vtysh </b>
Hello, this is Quagga (version 0.98.6).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

quagga-router2# sh run
Building configuration...

Current configuration:
!
hostname Router
hostname ospfd
log stdout
hostname quagga-router2
!
interface eth0
description Lan 2
ip address 192.168.2.254/24
ipv6 nd suppress-ra
link-detect
!
interface eth1
description Wan
ip address 172.16.1.2/24
ipv6 nd suppress-ra
link-detect
!
interface lo
!
router ospf
network 172.16.1.0/24 area 0.0.0.0
network 192.168.2.0/24 area 0.0.0.0
!
ip route 0.0.0.0/0 172.16.1.1
!
ip forwarding
!
line vty
!

<b>ospfd.conf : </b>
!
! Zebra configuration saved from vty
! 2010/03/15 11:09:48
!
hostname ospfd
log stdout
!
!
!
interface eth0
description Lan 2
!
interface eth1
description Wan
!
interface lo
!
router ospf
network 172.16.1.0/24 area 0.0.0.0
network 192.168.2.0/24 area 0.0.0.0
!
line vty
!

<b>zebra.conf : </b>
!
! Zebra configuration saved from vty
! 2010/03/15 11:09:48
!
hostname Router
!
interface eth0
description Lan 2
link-detect
ip address 192.168.2.254/24
ipv6 nd suppress-ra
!
interface eth1
description Wan
link-detect
ip address 172.16.1.2/24
ipv6 nd suppress-ra
!
interface lo
!
ip route 0.0.0.0/0 172.16.1.1
!
ip forwarding
!
line vty
!

<b>vtysh.conf : </b>
!
! Configuration file for vtysh.
!
!service integrated-vtysh-config
hostname quagga-router2
username root nopassword
!</p>

<h3>5. Routeur WR3 : </h3>
<p><b># vtysh </b>
Hello, this is Quagga (version 0.98.6).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

quagga-router3# sh run
Building configuration...

Current configuration:
!
hostname Router
hostname ospfd
log stdout
hostname quagga-router3
!
interface eth0
description Lan 3
ip address 192.168.3.254/24
ipv6 nd suppress-ra
link-detect
!
interface eth1
description Wan
ip address 172.16.1.3/24
ipv6 nd suppress-ra
link-detect
!
interface lo
!
router ospf
network 172.16.1.0/24 area 0.0.0.0
network 192.168.3.0/24 area 0.0.0.0
!
ip route 0.0.0.0/0 172.16.1.1
!
ip forwarding
!
line vty
!

<b>ospfd.conf : </b>
!
! Zebra configuration saved from vty
! 2010/03/23 12:11:24
!
hostname ospfd
log stdout
!
!
!
interface eth0
description Lan 3
!
interface eth1
description Wan
!
interface lo
!
router ospf
network 172.16.1.0/24 area 0.0.0.0
network 192.168.3.0/24 area 0.0.0.0
!
line vty
!

<b>zebra.conf :</b>
!
! Zebra configuration saved from vty
! 2010/03/23 12:11:24
!
hostname Router
!
interface eth0
description Lan 3
link-detect
ip address 192.168.3.254/24
ipv6 nd suppress-ra
!
interface eth1
description Wan
link-detect
ip address 172.16.1.3/24
ipv6 nd suppress-ra
!
interface lo
!
ip route 0.0.0.0/0 172.16.1.1
!
ip forwarding
!
line vty
!

<b>vtysh.conf :</b>
!
! Configuration file for vtysh.
!
!service integrated-vtysh-config
hostname quagga-router3
username root nopassword
!</p>