| [Top] | [Contents] | [Index] | [ ? ] |
Ceci est le manuel de GNU Zebra pour la version zebra-0.91 [NDT : valable également pour la 0.92]
1. Vue d'ensemble (traduit) Présentation générale de Zebra 2. Installation (traduit) Comment installer Zebra ?
La suite Zebra
3. Commandes élémentaires (traduit) Commandes élémentaires de Zebra 4. zebra (traduit) Le gestionnaire de routage 5. ripd (traduit) Un démon pour le protocole RIP 6. ripngd (traduit) Un démon pour le protocole RIPng 7. ospfd (traduit) Un démon pour le procotole OSPF 8. ospf6d (traduit) Un démon pour le protocole OSPF pour IPv6 9. bgpd Un démon pour le protocole BGP 10. vtysh (traduit) Un shell intégré
Fonctionnalités additionnelles
11. Filtrage Comment filtrer les routes ? 12. Route Map Description des Route Map 13. Support de IPv6 Support de IP version 6 14. Interface avec le noyau Interface entre le noyau et Zebra 15. Support de SNMP Support de SNMP
Annexes
A. Le protocole Zebra B. Format des paquets Index des commandes Liste de l'ensemble des commandes Index des touches Liste de l'ensemble des touches en mode VTY
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Zebra est une suite de logiciels qui founit des services de routage basés sur TCP/IP. Zebra supporte des protocoles tels que RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4 et BGP-4+ (voir la section 1.4 RFC supportées). Il supporte également les fonctionnalités de "réflecteur de route" et "serveur de routes" BGP. En plus des traditionnels protocoles de routage IPv4, Zebra prend en charge les protocoles de routage IPv6. Enfin, avec un démon SNMP qui supporte le protocole SMUX, Zebra prend en charge les MIBs pour les protocoles de routage (see section 15. Support de SNMP).
Zebra utilise une architecture logicielle évoluée afin d'offrir un moteur de routage multi-serveur de haut niveau. Zebra a une interface utilisateur interactive pour chaque protocole de routage et propose des commandes communes à partir du client. Du fait de cette architecture, vous pouvez ajouter facilement de nouveaux protocoles à Zebra. Vous pouvez utiliser la librairie Zebra comme interface utilisateur pour vos logiciels clients.
Zebra est un logiciel GNU officiel et est distribué sous la licence GNU General Public License.
1.1 A propos de Zebra Informations élémentaires sur Zebra 1.2 Architecture système L'architecture système de Zebra 1.3 Plateformes supportées Plateformes supportées et perspectives d'évolution 1.4 RFC supportées RFCs supportées 1.5 Comment se procurer Zebra ? 1.6 Liste de discussion La liste de discussion et de diffusion d'informations 1.7 Comment signaler un bug ? Addresse email pour l'envoi d'informations sur les bugs
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Actuellement, la plupart des réseaux à travers le monde fonctionnenent sous TCP/IP. Internet est accessible dans la plupart des pays, à partir des entreprises ou de chez les particuliers. Quand vous vous connectez à Internet, vos paquets de données transitent par un certain nombre de routeurs qui fonctionnent sous TCP/IP.
Un appareil sous Zebra fonctionne comme un routeur dédié. Avec Zebra, votre machine échange des informations de routage avec les autres routeurs. Zebra utilise ces informations pour mettre à jour les tables de routage du noyau. Ainsi les paquets de données arrivent à la bonne destination. Vous pouvez changer dynamiquement la configuration et vous pouvez visionner le contenu des tables de routage à partir d'un terminal connecté à Zebra.
En plus des fonctionnalités de routage, Zebra permet de configurer certains paramètres des interfaces réseau (l'adresse en particulier), des routes statiques, etc. Si vous avez un petit réseau ou une connexion xDSL, vous pouvez configurer Zebra très facilement : seules quelques manipulations pour activer les interfaces réseau et définir les routes statiques et/ou les routes par défaut seront nécessaires. Si le réseau est plus important ou si sa structure évolue fréquemment, vous pourrez tirer partie des protocoles de routage dynamiques supportés par Zebra comme RIP, OSPF ou BGP. Dans toutes ces situations, Zebra vous accompagnera.
Traditionnellement, la configuration des routeurs sous UNIX passe par les commandes ifconfig
et route. La commande netstat affiche l'état des tables de routage. La plupart de ces
commandes ne sont accessibles qu'aux utilisateurs ayant le statut d'administrateur. L'administration sous Zebra est
conçue diffèremment. Il y a deux modes d'utilisation : le mode "normal" (mode view) et le mode "privilégié" (mode enable).
Dans le mode normal, on ne peut que consulter l'état du système mais dans le mode privilégié, on peut modifier la configuration.
Cette fonctionnalité indépendante de la gestion des comptes d'UNIX sera très appréciable dans l'administration du routeur.
A l'heure actuelle, Zebra supporte les principaux protocoles de routage unicast. Les protocoles de routage multicast comme BGMP, PIM-SM, PIM-DM seront supportés dans la version 2.0 de Zebra. Le support de MPLS est en cours. Dans le futur, des fonctionnalités comme le filtrage TCP/IP, le contrôle QoS, la configuration diffserv seront ajoutées à Zebra. L'objectif final du projet Zebra est de proposer un routeur TCP/IP logiciel, libre et de qualité.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Les routeurs logiciels sont traditionnellement conçus comme un seul processus qui propose l'ensemble des fonctionnalités
de routage. L'approche de Zebra est différente. Il s'agit d'un ensemble de démons qui coopèrent pour construire la table
routage. Plusieurs démons de routage correspondant chacun à un protocole particulier peuvent cohabiter et zebra assure
la coordination entre ces différents démons.
Les démons ripd, ospfd, bgpd prennent en charge respectivement les protocoles
RIP, OSPF version 2 et BGP-4. zebra assure la mise à jour des tables de routage gérées par le noyau et la
redistribution des routes entre les différents démons de routage. Cette architecture modulaire facilite l'ajout d'un nouveau
démon de routage sans affecter le fonctionnement des autres. Il suffit de lancer le démon associé au protocole dont vous avez besoin.
Ainsi, l'utilisateur peut exécuter un démon de routage spécifique qui transmettra les informations de routage vers un point centralisée.
Il n'est pas nécessaire que l'ensemble des démons de routage fonctionnent sur la même machine et une même machine peut exécuter plusieurs fois le même démon de routage. Cette architecture originale offre de nouvelles possibilités pour les systèmes de routage.
+----+ +----+ +-----+ +-----+
|bgpd| |ripd| |ospfd| |zebra|
+----+ +----+ +-----+ +-----+
|
+---------------------------|--+
| v |
|Table de routage du noyau UNIX|
| |
+------------------------------+
Architecture de Zebra
|
Une architecture modulaire de ce type facilite l'extension et la maintenance. En contrepartie, cela multiplie les fichiers
de configuration et les interfaces de configuration. Chaque démon possède son propre fichier de configuration et son propre
terminal virtuel. Par exemple, quand on configure une route statique, il faut travailler sous zebra. Quand
on configure un réseau BGP, il faut travailler sous bgpd. Ceci peut paraître fastidieux. C'est pourquoi Zebra
propose un shell intégré : vtysh. Il peut se connecter à chaque démon via les sockets UNIX
et jouer ainsi le rôle de proxy pour les commandes utilisateur.
Zebra avait été conçu pour fonctionner en mode multi-thread lorsque le noyau supporte ce mécanisme.
Mais pour l'instant, les librairies fournies avec GNU/Linux ou FreeBSD ne sont pas encore parfaitement adaptées aux
services sensibles comme le routage. C'est pourquoi Zebra n'utilise pas les threads mais les appels système
select(2) pour multiplexer les événements.
Quand zebra fonctionnera sous un noyau GNU Hurd, il sera directement responsable de la table de routage.
Sous GNU Hurd, tous les services TCP/IP sont fournis par des processus utilisateur dénommés pfinet.
Zebra fournira l'ensemble des mécanismes de routage. Cette fonctionnalité sera implémentée lorsque GNU Hurd sera
devenu stable.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Actuellement, Zebra fonctionne sous GNU/Linux, BSD et Solaris. Ci-dessous, vous trouverez une liste des versions de ces systèmes
sous lesquels Zebra tourne. Porter Zebra vers d'autres plateformes n'est pas très difficile car la seule partie de code dépendante
de la plateforme se trouve uniquement dans le démon zebra. Les autres démons sont indépendants de la plateforme.
N'hésitez pas à nous informer si Zebra fonctionne sous d'autres plateformes.
Certaines piles IPv6 sont en cours de développement. Zebra supporte les piles indiquées ci-dessous. Pour BSD, la pile IPv6 KAME est recommandée. Pour Solaris, IPv6 n'est pas encore supporté.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
La liste ci-dessous indique les RFC supportées à ce jour.
Lorsque le support de SNMP est activé, les RFC suivantes sont également supportées :
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Zebra est toujours en cours de développement et il n'existe pas encore de version définitive officielle. C'est pourquoi vous trouverez la dernière version version béta de Zebra à l'adresse suivante :
Lorsque la version définitive sera distribuée, vous pourrez l'obtenir sur le site FTP (ou les mirroirs) de GNU. Zebra-1.0 sera la première version définitive du logiciel.
Le site web officiel de Zebra est situé à :
http://www.gnu.org/software/zebra/zebra.html.
Le site des béta testeurs de Zebra est situé à :
Vous pouvez obtenir la dernière version béta de Zebra à cette adresse..
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Il existe une liste de discussion sur Zebra. Si vous avez des commentaires ou des suggestions, envoyez un message à : zebra@zebra.org. Toutes les informations, nouvelles, améliorations, notes passent par cette liste.
Pour vous abonner à la liste de discussion, envoyez un message à majordomo@zebra.org avec dans le corps du message :
subscribe zebra
Pour vous désabonner de la liste, envoyez un message à majordomo@zebra.org avec dans le corps du message :
unsubscribe zebra
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Si vous pensez avoir trouvé un bug, merci d'envoyer un message à bug-zebra@gnu.org. Lorsque vous envoyez un message signalant un bug, merci d'inclure les informations suivantes :
netstat -rn et d'un ifconfig -a.
Les informations issues d'un show ip route à partir de la console de zebra seront également très utiles.
Le fait de signaler des bugs est très important pour améliorer la qualité de Zebra. C'est un logiciel encore en développement, c'est pourquoi, n'hésitez pas à les signaler à : bug-zebra@gnu.org.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Il y a trois étapes pour installer le logiciel : configuration, compilation et installation.
2.1 Configurer le logiciel 2.2 Compiler le logiciel 2.3 Installer le logiciel
La façon la plus simple de rendre Zebra exécutable consiste à saisir les commandes suivantes :
% configure % make % make install |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Zebra possède un script de configuration qui détecte automatiquement la plupart des paramètres de configuration nécessaires pour la machine hôte. Il y a plusieurs options de configuration additionnelles que vous pouvez utiliser pour désactiver le support de IPv6, ne pas compiler certains démons et pour activer le support de SNMP.
bgpd sans la fonctionnalité d'annonce BGP. Cette option convient pour utiliser bgpd
comme listener d'annonces BGP.
Vous pouvez spécifier toutes combinaisons de ces options. Par défaut, les exécutables seront placés dans '/usr/local/sbin' et les fichiers de configuration dans '/usr/local/etc'. Le préfixe d'installation '/usr/local/' et les autres répertoires peuvent être changés en utilisant les options suivantes avec le script de configuration :
Il existe plusieurs options qui ne sont utilisables que sur les systèmes GNU/Linux : (1).
Cette commande configurera zebra et les démons de routage pour la compilation :
% ./configure --disable-ipv6 |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Après avoir configuré le logiciel, vous devrez le compiler pour votre système. Tapez simplement la commande
make à la racine des répertoires contenant les sources et le logiciel sera compilé.
Pour *tous* les problèmes que vous rencontrerez à cette étape, n'hésitez pas à le signaler
(voir section 1.7 Comment signaler un bug ?).
% ./configure . . . ./configure output . . . % make |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
L'installation du logiciel sur votre système consiste à copier les fichiers compilés et les fichiers d'aide vers des répertoires prédéterminés. A la fin du processus d'installation, ces fichiers ont été copiés de votre répertoire de travail vers '/usr/local/bin' et '/usr/local/etc'.
Pour installer la suite Zebra, tapez la commande suivante :
% % make install % |
Chaque démon de Zebra possède sa propre interface de commande. Après l'installation, vous devez spécifier le numéro de port qui permet la connexion à chaque démon. Ajoutez les lignes suivantes au fichier '/etc/services' :
zebrasrv 2600/tcp # zebra service zebra 2601/tcp # zebra vty ripd 2602/tcp # RIPd vty ripngd 2603/tcp # RIPngd vty ospfd 2604/tcp # OSPFd vty bgpd 2605/tcp # BGPd vty ospf6d 2606/tcp # OSPF6d vty |
Si vous utilisez un FreeBSD supérieur à la 2.2.8, ces lignes figurent déjà dans '/etc/services'. Il est donc inutile de les ajouter. Si vous spécifiez le numéro de port lors du lancement du démon, il est également inutile d'ajouter ces lignes.
Vous aurez peut-être besoin de modifier les fichiers de configuration '/usr/local/etc/*.conf'. Dans ce cas, reportez-vous à la section 3.1 Commandes de configuration.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Il y a cinq démons de routage utilisables et un démon gestionnaire de l'ensemble. Ces démons peuvent fonctionner sur des machines différentes du démon gestionnaire. Chaque démon écoute sur un port particulier pour répondre aux demandes de connexion à partir d'un terminal virtuel (VTY). Les démons de routage sont :
ripd, ripngd, ospfd, ospf6d, bgpd
zebra
Les sections ci-dessous présentent les commandes communes à l'ensemble des démons de routage.
3.1 Commandes de configuration Commandes utilisées dans les fichiers de configuration 3.2 Options communes de démarrage Démarrage des démons 3.3 L'interface de commande en mode VTY Dialogue avec les démons
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
3.1.1 Commandes de base pour la configuration Quelques commandes de configuration indispensables 3.1.2 Fichier de configuration modèle Un exemple de fichier de configuration
Les fichiers de configuration servent à définir des options de débogage, un mot de passe pour le mode VTY, des options de configuration des démons, le nom d'un fichier journal, etc. Ce fichier sera lu au démarrage par le démon et constituera sa configuration initiale.
Généralement, les fichiers de configuration sont placés dans :
Chaque démon a son propre fichier de configuration. Par exemple, le nom du fichier de configuration par défaut
pour zebra est :
Le nom du démon suivi de '.conf' est considéré comme le nom par défaut du fichier de configuration. Vous pouvez spécifier un autre nom de fichier en utilisant les options -f ou --config-file au lancement du démon.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
filename, utilisez la commande suivante :
log file /usr/local/etc/bgpd.log |
exec-timeout 0 0.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Ci-dessous, vous trouverez un modèle de fichier de configuration pour le démon zebra.
! ! Zebra configuration file ! hostname Router password zebra enable password zebra ! log stdout ! ! |
Les caractères '!' et '#' permettent de saisir un commentaire. Si le premier caractère d'un mot commence par l'un de ces deux symboles, le reste de la ligne sera ignoré car considéré comme un commentaire. Dans l'exemple ci-dessous, le '!' ne sera pas considéré comme un commentaire puisque ce n'est pas le premier caractère d'un mot :
password zebra!password |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Ces options concernent l'ensemble des démons du paquetage Zebra :
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Le terminal virtuel (VTY pour Virtual Terminal [aka TeletYpe]) est un interpréteur de commande. Il permet à l'utilisateur de saisir des commandes à destination des démons de routage.
3.3.1 Vue d'ensemble du VTY L'essentiel sur les VTYs 3.3.2 Différents Modes VTY Définition des modes VTY View, Enable et Other 3.3.3 Utilisation du clavier dans le VTY Touches de déplacement, d'édition et de gestion des commandes
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
VTY est l'acronyme de Virtual TeletYpe. Cela signifie que vous pouvez vous connecter aux démons via telnet.
Pour activer le VTY, vous devez avoir defini un mot de passe. Si ce n'est pas le cas, toute connexion au démon vous sera refusée.
% telnet localhost 2601 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Hello, this is zebra (version 0.91) Copyright 1997-2000 Kunihiro Ishiguro User Access Verification Password: XXXXX Router> ? enable Turn on privileged commands exit Exit current mode and down to previous mode help Description of the interactive help system list Print command list show Show running system information who Display who is on a vty Router> enable Password: XXXXX Router# configure terminal Router(config)# interface eth0 Router(config-if)# ip address 10.0.0.1/8 Router(config-if)# ^Z Router# |
La commande '?' est très utile. Elle vous permet à tout moment de connaître les commandes que vous pouvez saisir.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Le terminal virtuel peut se trouver dans un de ces trois modes :
3.3.2.1 Mode VTY "View" Mode limité à la consultation 3.3.2.2 Mode VTY "Enable" Mode permettant la configuration 3.3.2.3 Autre modes VTY Modes spéciaux(tftp, etc.)
Selon le mode dans lequel se trouve le terminal, certaines commandes ne sont pas accessibles.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
C'est un mode de consultation. Vous vous trouvez dans ce mode après la phase de connexion. Vous pouvez en sortir
de deux façons : soit en quittant le système soit en entrant dans le mode privilégié via la commande enable.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Le mode privilégié permet la configuration. Vous pouvez en sortir de deux façons : soit en quittant le système soit en retournant au mode View.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Ce paragraphe décrira les autres modes...
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Les touches de clavier utilisables dans l'interpréteur de commandes sont décrites dans ces trois paragraphes :
3.3.3.1 Touches de déplacement Touches pour le déplacement du curseur 3.3.3.2 Touches d'édition Touches pour la modification du texte 3.3.3.3 Autre touches Gestion de la session, etc.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Ces touches sont utilisées pour se déplacer à l'intérieur de l'interpréteur de commande. Le symbole C correspond à la touche CTRL. Le symbole M correspond à la touche ALT.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Ces touches sont utilisées pour éditer le texte sur la ligne. Le symbole C correspond à la touche CTRL. Le symbole M correspond à la touche ALT.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Des commandes additionnelles permettent de compléter la ligne de commande en fonction des premiers caractères saisis, d'obtenir de l'aide et de gérer la session de travail.
help sur une ligne vierge.
Si vous appuyez sur la touche ? à la suite d'une commande, vous obtiendrez les différents paramètres
qui permettent de compléter cette commande.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
zebra coordonne le routage IP. Il met à jour les tables de routage du noyau, permet la consultation de
l'état des interfaces réseau et redistribue les routes entre les différents protocoles de routage.
4.1 Lancement de zebra Options au démarrage de zebra 4.2 Commandes relatives aux interfaces réseau Commandes pour la gestion des interfaces 4.3 Commandes relatives aux routes statiques Commandes pour ajouter des routes statiques 4.4 Autres commandes en mode terminal Commands for zebra's VTY
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
En plus des options communes à tous les démons (voir section 3.2 Options communes de démarrage),
zebra possède les options spécifiques listées ci-dessous :
zebra interprète le fichier de configuration et s'arrête immédiatement.
zebra se termine, les routes ajoutées par zebraseront conservées.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
La route statique est un concept fondamental du routage. Grâce à ce mécanisme, on définit les adresses des réseaux que l'on veut joindre ainsi que les interfaces du routeur qui permettent d'atteindre ces réseaux.
ip route 10.0.0.0/8 10.0.0.2 ip route 10.0.0.0/8 ppp0 |
Le premier exemple définit une route statique vers le réseau 10.0.0.0/8 via le routeur d'adresse 10.0.0.2, le second définit la même route mais via l'interface ppp0.
ip route 10.0.0.0 255.255.255.0 10.0.0.2 ip route 10.0.0.0 255.255.255.0 ppp0 |
Contrairement à l'exemple précédent, on a défini le masque de réseau sur 3 octets.
Définition de routes statiques multiples vers une destination unique :
ip route 10.0.0.1/32 10.0.0.2 ip route 10.0.0.1/32 10.0.0.3 ip route 10.0.0.1/32 eth0 |
Si l'interface eth0 est active mais que les routeurs 10.0.0.2 et 10.0.0.3 ne sont pas joignables, seule la dernière route sera activée dans le noyau.
zebra> show ip route
S> 10.0.0.1/32 [1/0] via 10.0.0.2 inactive
via 10.0.0.3 inactive
* is directly connected, eth0
|
Ce mécanisme est connu sous le nom de "route statique flottante".
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Router# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
B - BGP * - FIB route.
K* 0.0.0.0/0 203.181.89.241
S 0.0.0.0/0 203.181.89.1
C* 127.0.0.0/8 lo
C* 203.181.89.240/28 eth0
|
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
RIP (Routing Information Protocol) est largement répandu parmi les protocoles IGP (Interior Gateway Protocol). Il a été développé dans les années 70 par Xerox est fait partie du protocole de routage XNS. RIP est un protcole à vecteur de distance basé sur les algorithmes de Bellman-Ford. Un routeur RIP envoie ses tables de routage périodiquement à ses voisins. Ainsi, en cas d'un changement de topologie (panne d'une ligne par exemple), l'information se propage et une convergence s'opère automatiquement entre les différents routeurs RIP du réseau. RIP étant un protocole à vecteur de distance, le routeur expédie à ses voisins la distance qu'il a calculé pour atteindre les réseaux présents dans sa table de routage.
[NDT : RIP est un protocole de routage dit "adaptatif". On parle de routage dynamique car il propage ses tables de routage ainsi que des informations sur les changements de topologie.]
ripd supporte RIP version 2 conforme à la RFC2453 et RIP version 1 conforme à la RFC1058.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Le nom du fichier de configuration par défaut de ripd est
'ripd.conf'. Lors de son lancement, ripd le cherche dans le répertoire
'/usr/local/etc'. Si 'ripd.conf' est absent, alors il cherche dans le répertoire courant.
RIP utilise le port UDP 521 pour envoyer et recevoir les paquets RIP.
Le protocole RIP a besoin des informations sur les interfaces gérées par le démon zebra, c'est
pourquoi il est indispensable à ripd. Ainsi, les commandes minimales pour activer RIP sont :
# zebra -d # ripd -d |
Notez bien que zebra doit être lancé AVANT ripd.
Pour arrêter ripd, utilisez la commande kill 'cat /var/run/ripd.pid'.
Certains signaux ont une signification particulière pour ripd.
ripd.
ripd efface toutes les routes définies dynamiquement par RIP
et s'arrête proprement.
En plus des options communes à tous les démons (voir section 3.2 Options communes de démarrage),
ripd possède l'option spécifique suivante :
ripd lorsque le démon se termine.
5.1.1 RIP netmask
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ripd supporte les versions 1 et 2 de RIP ainsi que les masques de sous-réseau.
A l'origine, RIP v1 ne véhiculait pas d'information sur les masques réseau. Le masque était uniquement
déterminé à partir de la classe de l'adresse. Lorsque l'adresse était de classe A, la longueur du masque
était de 8 bits, pour une classe B, il était de 16 et de 24 pour une classe C. Aujourd'hui, la méthode
la plus répandue consiste à associer un masque à l'interface. Ce masque est utilisé pour chaque paquet
reçu. RIP v2 supporte les masques à taille variable (VLSM : Variable Length Subnet Mask). En
étendant le masque réseau par défaut, on peut décomposer l'adresse réseau en sous-réseaux à partir
d'une adresse IP unique. Ceci facilite l'administration de réseaux de taille importante ou qui
intègrent plusieurs segments LANs et WANs.
Note : ripd ne supporte pas les masques réseau non séquentiels inclus dans RIP v2.
Si ripd reçoit une mise à jour qui intègre une adresse réseau et une métrique déjà connue,
l'ancienne information sera remplacée.
Note : pour l'instant, ripd ne supporte pas les routes multiples vers la même destination
avec la même métrique.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
no router rip. Le routeur RIP doit être activé avant toute configuration de routage.
RIP peut être configuré pour traiter les paquets version 1 ou 2,
le mode par défaut étant la version 2 lorsque rien n'est spécifié.
Si RIP est forcé sur version 1 (voir commande version), le paramétrage "Version 1"
sera indiqué. Par contre, le paramétrage "Version 2" ne sera jamais indiqué, qu'il soit forcé ou non.
network 10.0.0.0/24,
RIP sera activé sur toutes les interfaces du routeur dont les adresses IP sont comprises
entre 10.0.0.0 et 10.0.0.255. La commande no network désactive
la commande précédente.
no network nom_if désactive RIP sur l'interface nom_if.
no neighbor adresse désactive l'appareil d'adresse A.B.C.D
comme routeur RIP.
Ci-dessous se trouve une configuration RIP très simple. RIP est activé sur l'interface eth0
et sur les interfaces dont l'adresse réseau correspond avec le préfixe 10.0.0.0/8.
! router rip network 10.0.0.0/8 network eth0 ! |
Déclaration d'une interface passive :
ripd n'expédie plus de paquets multicast ou unicast sauf
si des voisins RIP ont été définis par la commande neighbor.
Gestion des versions du protocole RIP :
Gestion du "clivage d'horizon" (split horizon) :
ip split-horizon. La commande no ip split-horizon permet de désactiver cette fonction.
[NDT : le split horizon évite que des boucles infinies ne se créent lors de la diffusion de routes.]
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[NDT : la commande redistribute indique quels types de routes seront intégrés à la table de routage
gérée par RIP et donc susceptibles d'être diffusés.]
redistribute kernel redistribue les informations de routage
détenues par le noyau vers la table de routage RIP. La commande no redistribute kernel
désactive cette redistribution.redistribute static redistribue les informations de routage
statiques vers la table de routage RIP. La commande no redistribute static
désactive cette redistribution.redistribute ospf redistribue les informations de routage en provenance
de OSPF dans les tables de routage RIP.
redistribute bgp redistribue les informations de routage en provenance
de BGP dans les tables de routage RIP
Vous pouvez indiquer des routes statiques directement dans RIP :
route crée une route statique
utilisée uniquement par RIP. Cette commande ne devrait être utilisée que par de fins connaisseurs
de RIP. Dans la plupart des cas, il est recommandé de créer une route statique dans zebra
puis de la redistribuer dans RIP avec un redistribute static.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Les routes RIP peuvent être filtrées par une liste de distribution (distribute-list).
distribute-list permet d'appliquer une liste d'accès à une interface. access_list
est le nom de la liste d'accès. direct est soit 'in' pour les paquets entrants,
soit 'out' pour les paquets sortants. Cette commande permet de filtrer la constitution de la table
de routage ou la diffusion de routes.Par exemple, dans la configuration ci-dessous, seule la route 10.0.0.0/8 entrant par l'interface 'eth0' sera intégrée à la table de routage :
! router rip distribute-list private in eth0 ! access-list private permit 10 10.0.0.0/8 access-list private deny any ! |
La commande distribute-list peut être appliquée à la fois sur les flux entrants et sortants.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
La métrique utilisée par RIP représente la distance [NDT : nombre de routeurs traversés, également appelée "saut" ou "hop"]
pour atteindre un réseau. Par défaut, ripd ajoute 1 la métrique des routes reçues dynamiquement.
La métrique des routes "redistribuées" (voir section 5.3 Comment diffuser les routes avec RIP ?)
est initialisée à 1 par défaut.
redistribute connected.
Pour modifier cette métrique, utilisez les commandes redistribute connected metric ou
route-map.
La commande
offset-list permet également de modifier la métrique :
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
zebra. Par défaut, la distance des routes
découvertes par RIP est de 120.
[NDT : il s'agit de la distance administrative. Elle permet de ne conserver dans la table de routage qu'une entrée
lorsque le routeur reçoit des routes identiques par différents protocoles. Chaque protocole a une "distance"
par défaut (0 pour les réseaux connectés, 1 pour les routes statiques, 110 pour OSPF, 120 pour RIP, etc.).
Le démon zebra ne conserve que la route provenant du protocole dont la distance administrative est
la plus faible.]| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Ce paragraphe présente le mode d'emploi de la fonctionnalité route-map avec ripd.
L'argument optionnel route-map MAP_NAME peut être ajouté aux commandes redistribute.
redistribute static [route-map MAP_NAME] redistribute connected [route-map MAP_NAME] ... |
Cisco applique les route-map avant que les routes ne soient exportées dans la table de routage de RIP. Dans la
version actuelle de Zebra, ripd applique les route-map après que les routes aient été intégrées à
la table de routage mais avant que les routes ne soient diffusées.
Ceci est une ébauche qui devrait évoluer dans les versions futures.
La commande route-map (voir section 12. Route Map)
est nécessaire pour activer cette fonctionnalité sur le routeur.
Commande match :
show ip rip) l'adresse spécifiée.
ripd n'autorise pour l'instant qu'un seul nom d'interface, il s'agit
du nom de l'interface sur laquelle le paquet sera envoyé.
Comande set:
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
! key chain test key 1 key-string test ! interface eth1 ip rip authentication mode md5 ip rip authentication key-chain test ! |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Le protocole RIP fonctionne avec différents temporisateurs (timers). L'administrateur peut les configurer
avec la commande timers basic.
Le paramétrage par défaut est le suivant :
La commande timers basic permet de modifier les valeurs par défaut citées ci-dessus.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Commandes pour afficher les routes connues de ripd.
ripd. Pour les routes qui ont été
reçues via RIP, la commande affiche l'heure à laquelle le paquet a été reçu ainsi qu'un résumé.
Cette commande affiche également les routes qui ont été redistribuées dans RIP.
ripd> show ip protocols
Routing Protocol is "rip"
Sending updates every 30 seconds with +/-50%, next due in 35 seconds
Timeout after 180 seconds, garbage collect after 120 seconds
Outgoing update filter list for all interface is not set
Incoming update filter list for all interface is not set
Default redistribution metric is 1
Redistributing: kernel connected
Default version control: send version 2, receive version 2
Interface Send Recv
Routing for Networks:
eth0
eth1
1.1.1.1
203.181.89.241
Routing Information Sources:
Gateway BadPackets BadRoutes Distance Last Update
|
| [ < ] | [ > ] |