====== Différences ======
Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.
cours:activite2:quagga [2014/03/05 11:13] r.doiteau créée |
cours:activite2:quagga [2019/05/11 14:35] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | zefzefr | + | ====== QUAGGA ====== |
+ | |||
+ | ===== Objectifs ===== | ||
+ | |||
+ | Nous avons utilisé jusqu'ici les équipements Cisco, dans la suite du document nous vous proposons de découvrir une solution de routage logicielle appelée Quagga. | ||
+ | |||
+ | Avantages : | ||
+ | |||
+ | Logiciel libre. | ||
+ | Plateforme supportée : gnu/Linux, FreeBSD, NetBSD, OpenBSD, Mac OSX. | ||
+ | L'un de ses intérêts est de proposer des commandes très proches des commande Cisco. | ||
+ | Quagga supporte les protocoles : IPv4, IPv6 | ||
+ | Quagga supporte les protocoles de routage : RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, IS-IS, BGP-4, and BGP-4. | ||
+ | Quagga offre de nombreuses fonctionnalités de filtrage très flexibles. | ||
+ | |||
+ | Nous mettrons en situation cette solution dans deux cas pratiques : | ||
+ | |||
+ | Routage statique. | ||
+ | Routage dynamique avec RIP. | ||
+ | |||
+ | ===== Topologie ===== | ||
+ | |||
+ | ==== Plan d’adressage ===== | ||
+ | |||
+ | {{:cours:activite2:quagga.png|}} | ||
+ | |||
+ | ==== Configuration ==== | ||
+ | |||
+ | |||
+ | R1, R2, R3 : | ||
+ | Routeurs Quagga | ||
+ | OS : Debian 7.1 | ||
+ | RAM : 128 Mo | ||
+ | CPU : 1 | ||
+ | DD : 3 Go | ||
+ | |||
+ | S1, S2, S3 : | ||
+ | Machine clientes | ||
+ | OS : Debian 7.1 | ||
+ | RAM : 128 Mo | ||
+ | CPU : 1 | ||
+ | DD : 3 Go | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | ⇒ Installer une machine Debian sans interface graphique avec les caractéristiques proposées. | ||
+ | ⇒ Installer les paquets suivants : ssh, tcpdump et quagga | ||
+ | Configuration | ||
+ | Quagga | ||
+ | |||
+ | ⇒ Créer les fichiers suivants : | ||
+ | <code=bash> | ||
+ | #nano /etc/quagga/zebra.conf | ||
+ | #nano /etc/quagga/ripd.conf | ||
+ | </code> | ||
+ | ⇒ Modifier le fichier /etc/quagga/deamon, en mettant à yes les champs suivants : | ||
+ | <code=bash> | ||
+ | zebra=yes | ||
+ | ripd=yes | ||
+ | </code> | ||
+ | Configuration de VTYSH | ||
+ | |||
+ | ⇒ Copier et Modifier le fichier /etc/quagga/vtysh.conf : | ||
+ | <code=bash> | ||
+ | #cp /usr/share/doc/quagga/examlples/vtysh.conf.sample /etc/quagga/vtysh.conf | ||
+ | </code> | ||
+ | <note><code=bash>! service intergrated-vtysh-config | ||
+ | hostname Rx | ||
+ | username root nopassword</code></note> | ||
+ | |||
+ | Remplacer Rx avec le nom du routeur : R1, R2 ou R3 | ||
+ | |||
+ | ⇒ Positionner les droits sur les fichiers : | ||
+ | <code=bash> | ||
+ | # chown quagga:quaggavty /etc/quagga/*.conf | ||
+ | # chmod 640 /etc/quagga/*.conf | ||
+ | </code> | ||
+ | ⇒ Configurer l'environnement : | ||
+ | <code=bash> | ||
+ | # echo VTYSH_PAGER=more > /etc/environement | ||
+ | </code> | ||
+ | <note>Sous DEBIAN; il faut aussi modifier le bash.bashrc en exportant cette variable : export VTYSH_PAGER=more | ||
+ | </note> | ||
+ | |||
+ | ===== Configuration des interfaces réseaux ===== | ||
+ | |||
+ | ⇒ En vous basant sur la topologie, entrer la configuration des interfaces réseau dans le fichier /etc/network/interfaces. | ||
+ | |||
+ | ===== Transformer la machine en routeur ===== | ||
+ | |||
+ | <code=bash> | ||
+ | #echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf | ||
+ | </code> | ||
+ | |||
+ | ===== Test et création des clones ===== | ||
+ | |||
+ | ⇒ Démarrer le service quagga : | ||
+ | |||
+ | <code=bash> | ||
+ | # service quagga start | ||
+ | root@quagga1:~# service quagga start | ||
+ | Loading capability module if not yet done. | ||
+ | Starting Quagga daemons (prio:10): zebra ripd. | ||
+ | Starting Quagga monitor daemon: watchquagga. | ||
+ | </code> | ||
+ | |||
+ | ⇒ Faire un test : | ||
+ | |||
+ | <code=bash> | ||
+ | root@quagga1:~# vtysh | ||
+ | |||
+ | Hello, this is Quagga (version 0.99.22.4). | ||
+ | Copyright 1996-2005 Kunihiro Ishiguro, et al. | ||
+ | |||
+ | quagga1# | ||
+ | </code> | ||
+ | |||
+ | <code=bash> | ||
+ | quagga1# show ip route | ||
+ | Codes: K - kernel route, C - connected, S - static, R - RIP, | ||
+ | O - OSPF, I - IS-IS, B - BGP, A - Babel, | ||
+ | > - selected route, * - FIB route | ||
+ | |||
+ | C>* 100.0.0.0/8 is directly connected, eth1 | ||
+ | R>* 101.0.0.0/8 [120/2] via 102.0.0.2, eth2, 00:02:20 | ||
+ | C>* 102.0.0.0/8 is directly connected, eth2 | ||
+ | C>* 127.0.0.0/8 is directly connected, lo | ||
+ | C>* 192.168.1.0/24 is directly connected, eth0 | ||
+ | R>* 192.168.2.0/24 [120/3] via 102.0.0.2, eth2, 00:02:20 | ||
+ | R>* 192.168.3.0/24 [120/2] via 102.0.0.2, eth2, 00:02:20 | ||
+ | </code> | ||
+ | |||
+ | votre sortie sera différente. | ||
+ | |||
+ | ⇒ Arrêter le routeur modèle R1. | ||
+ | ⇒ Cloner deux autres machines, R2 et R3 depuis le routeur modèle. | ||
+ | |||
+ | <note warning>3 fichiers sont a modifier /etc/hosts, /etc/hostname et /etc/quagga/vtysh.conf</note> | ||
+ | ⇒ Démarrer les routeur R2 et R3. | ||
+ | ⇒ Configurer les routeur R2 et R3 selon la topologie. | ||
+ | |||
+ | |||
+ | ⇒Détails des fichiers /etc/network/interfaces | ||
+ | |||
+ | ==== R1 ==== | ||
+ | |||
+ | auto eth0 | ||
+ | iface eth0 inet static | ||
+ | address 192.168.1.254 | ||
+ | netmask 255.255.255.0 | ||
+ | |||
+ | auto eth1 | ||
+ | iface eth1 inet static | ||
+ | address 100.0.0.1 | ||
+ | netmask 255.0.0.0 | ||
+ | |||
+ | auto eth2 | ||
+ | iface eth2 inet static | ||
+ | address 102.0.0.1 | ||
+ | netmask 255.0.0.0 | ||
+ | |||
+ | ==== R2 ==== | ||
+ | |||
+ | |||
+ | auto eth0 | ||
+ | iface eth0 inet static | ||
+ | address 192.168.2.254 | ||
+ | netmask 255.255.255.0 | ||
+ | |||
+ | auto eth1 | ||
+ | iface eth1 inet static | ||
+ | address 100.0.0.2 | ||
+ | netmask 255.0.0.0 | ||
+ | |||
+ | auto eth2 | ||
+ | iface eth2 inet static | ||
+ | address 101.0.0.1 | ||
+ | netmask 255.0.0.0 | ||
+ | |||
+ | ==== R3 ==== | ||
+ | |||
+ | auto eth0 | ||
+ | iface eth0 inet static | ||
+ | address 192.168.3.254 | ||
+ | netmask 255.255.255.0 | ||
+ | |||
+ | auto eth1 | ||
+ | iface eth1 inet static | ||
+ | address 101.0.0.2 | ||
+ | netmask 255.0.0.0 | ||
+ | |||
+ | auto eth2 | ||
+ | iface eth2 inet static | ||
+ | address 102.0.0.2 | ||
+ | netmask 255.0.0.0 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Préparation des machines clientes : S1, S2 et S3 ===== | ||
+ | |||
+ | ==== Installation ==== | ||
+ | |||
+ | ⇒ Installer une machine Debian sans interface graphique avec les caractéristiques proposées. | ||
+ | ⇒ Installer le paquet suivant : ssh | ||
+ | Configuration | ||
+ | Configuration des interfaces réseaux | ||
+ | |||
+ | En vous basant sur la topologie et pour chaque machine : | ||
+ | |||
+ | ⇒ Entrer la configuration de l'interface réseau dans le fichier /etc/network/interfaces. | ||
+ | |||
+ | ⇒ Configurer la routes par défaut. | ||
+ | |||
+ | ==== Route Statique ==== | ||
+ | |||
+ | === R1 === | ||
+ | |||
+ | R1(config)# ip route 192.168.2.0 255.255.255.0 100.0.0.2 | ||
+ | R1(config)# ip route 192.168.3.0 255.255.255.0 102.0.0.2 | ||
+ | |||
+ | === R2 === | ||
+ | |||
+ | R2(config)# ip route 192.168.1.0 255.255.255.0 100.0.0.1 | ||
+ | R2(config)# ip route 192.168.3.0 255.255.255.0 101.0.0.2 | ||
+ | |||
+ | === R3 === | ||
+ | |||
+ | R3(config)# ip route 192.168.2.0 255.255.255.0 101.0.0.1 | ||
+ | R3(config)# ip route 192.168.1.0 255.255.255.0 102.0.0.1 | ||
+ | |||
+ | |||
+ | ==== RIP ==== | ||
+ | |||
+ | <note warning>Effacer les routes statiques</note> | ||
+ | |||
+ | === R1 === | ||
+ | |||
+ | conf t | ||
+ | router rip | ||
+ | network 192.168.1.0/24 | ||
+ | network 100.0.0.0/8 | ||
+ | network 102.0.0.0/8 | ||
+ | passive-interface eth0 | ||
+ | |||
+ | === R2 === | ||
+ | |||
+ | conf t | ||
+ | router rip | ||
+ | network 192.168.2.0/24 | ||
+ | network 100.0.0.0/8 | ||
+ | network 101.0.0.0/8 | ||
+ | passive-interface eth0 | ||
+ | |||
+ | === R3 === | ||
+ | |||
+ | conf t | ||
+ | router rip | ||
+ | network 192.168.2.0/24 | ||
+ | network 101.0.0.0/8 | ||
+ | network 102.0.0.0/8 | ||
+ | passive-interface eth0 | ||
+ | |||
+ | ===== Intégration d'une quatrième interface INTERNET ===== | ||
+ | |||
+ | ==== Topologie ==== | ||
+ | |||
+ | {{:cours:activite2:quagga_1.png|}} | ||
+ | |||
+ | ==== Installation ==== | ||
+ | |||
+ | ⇒ modifier /etc/network/interfaces pour faire correspondre la topologie | ||
+ | |||
+ | ⇒ Mettre en place la translation d’adressage | ||
+ | |||
+ | <code=bash> | ||
+ | iptables -t nat -A POSTROUTING -o eth3 -j MASQUERADE | ||
+ | </code> | ||
+ | |||
+ | ⇒ Vérifiez la bonne prise en compte de la règle par : | ||
+ | |||
+ | <code=bash> | ||
+ | iptables -t nat -L | ||
+ | </code> | ||
+ | |||
+ | ⇒ Activer la translation d’adresses (NAT) au démarrage : | ||
+ | |||
+ | ⇒ Inscrivez la ligne suivante juste avant exit 0 mais après la ligne concernant le routage dans le fichier /etc/rc.local : | ||
+ | |||
+ | <code=bash> | ||
+ | /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | ||
+ | </code> | ||
+ | |||
+ | ⇒ Relancez votre système et vérifiez à nouveau l’existence de la règle NAT à l’aide de la commande vue plus haut. | ||
+ | |||
+ | ==== Détails running-config ==== | ||
+ | |||
+ | === R1 === | ||
+ | |||
+ | ! | ||
+ | hostname R1 | ||
+ | ! | ||
+ | debug rip packet | ||
+ | ! | ||
+ | interface eth0 | ||
+ | ipv6 nd suppress-ra | ||
+ | ! | ||
+ | interface eth1 | ||
+ | ipv6 nd suppress-ra | ||
+ | ! | ||
+ | interface eth2 | ||
+ | ipv6 nd suppress-ra | ||
+ | ! | ||
+ | interface eth3 | ||
+ | ipv6 nd suppress-ra | ||
+ | ! | ||
+ | interface lo | ||
+ | ! | ||
+ | router rip | ||
+ | version 2 | ||
+ | redistribute kernel | ||
+ | network 100.0.0.0/8 | ||
+ | network 102.0.0.0/8 | ||
+ | network 192.168.1.0/24 | ||
+ | network 192.168.254.0/24 | ||
+ | passive-interface eth0 | ||
+ | ! | ||
+ | ip forwarding | ||
+ | ! | ||
+ | line vty | ||
+ | ! | ||
+ | end | ||
+ | |||
+ | === R2 === | ||
+ | |||
+ | hostname R2 | ||
+ | ! | ||
+ | interface eth0 | ||
+ | ipv6 nd suppress-ra | ||
+ | ! | ||
+ | interface eth1 | ||
+ | ipv6 nd suppress-ra | ||
+ | ! | ||
+ | interface eth2 | ||
+ | ipv6 nd suppress-ra | ||
+ | ! | ||
+ | interface lo | ||
+ | ! | ||
+ | router rip | ||
+ | version 2 | ||
+ | network 100.0.0.0/8 | ||
+ | network 101.0.0.0/8 | ||
+ | network 192.168.2.0/24 | ||
+ | passive-interface eth0 | ||
+ | ! | ||
+ | ip forwarding | ||
+ | ! | ||
+ | line vty | ||
+ | ! | ||
+ | end | ||
+ | |||
+ | === R3 === | ||
+ | |||
+ | ! | ||
+ | hostname R3 | ||
+ | ! | ||
+ | interface eth0 | ||
+ | ipv6 nd suppress-ra | ||
+ | ! | ||
+ | interface eth1 | ||
+ | ipv6 nd suppress-ra | ||
+ | ! | ||
+ | interface eth2 | ||
+ | ipv6 nd suppress-ra | ||
+ | ! | ||
+ | interface lo | ||
+ | ! | ||
+ | router rip | ||
+ | version 2 | ||
+ | network 101.0.0.0/8 | ||
+ | network 102.0.0.0/8 | ||
+ | network 192.168.3.0/24 | ||
+ | passive-interface eth0 | ||
+ | ! | ||
+ | ip forwarding | ||
+ | ! | ||
+ | line vty | ||
+ | ! | ||
+ | end | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ |