Chapter 70. TP sur le routage statique avec Zebra

Revision History
Revision $Revision: 1.2 $$Date: 2005/08/03 09:29:15 $

Table of Contents

Introduction
Présentation des concepts importants
Architecture de Zebra
Topologie de travail
Mise en place
Démarrage du démon zebra
Connexion au démon zebra
Prise en main de Zebra (principe)
Prise en main de Zebra (mise en pratique)
Problèmes rencontrés

Abstract

Le document décrit les principes du routage IP et l'architecture du routeur logiciel Zebra. Il propose une prise en main de Zebra et une mise en pratique du routage statique.

Introduction

Description et objectifs de la séquence. Une fois la séquence finie :

  1. vous saurez utiliser l'interface de configuration de Zebra ;

  2. saisir des routes statiques ;

  3. déboguer un routage incorrect.

Présentation des concepts importants

Routage, routeur, route

Imaginez que vous souhaitiez rendre visite à quelqu'un. Vous connaissez son adresse et, dans votre tête, vous avez la plupart des éléments importants pour vous diriger (sortir de la maison, prendre à droite, au feu tourner à gauche, marcher jusqu'au rond-point, tourner à droite, etc.).

Dans l'univers informatique, c'est sensiblement différent. Lorsqu'un ordinateur émet un paquet de données à destination d'un ordinateur situé dans un autre réseau, il ne sait pas quelle route il va prendre. La seule chose connue est l'adresse de destination du paquet ainsi que l'adresse d'une machine à proximité, située dans son réseau, et qui joue le rôle de la porte. On l'appelle la passerelle. Elle oriente le paquet vers le prochain carrefour. A ce carrefour, il y a un appareil qui oriente le paquet vers le prochain carrefour. A ce nouveau carrefour, il y a un nouvel appareil qui oriente le paquet vers le prochain carrefour. Et ainsi de suite jusqu'à arriver à la passerelle du réseau de destination qui remet le paquet dans le réseau.

L'appareil dont nous parlons s'appelle un routeur (la passerelle est également un routeur). Le routage consiste à faire circuler de routeur en routeur les paquets de données. L'administration d'un routeur consiste à configurer les routes d'un routeur. Une route est définie par un réseau de destination et l'adresse d'un routeur voisin, prochaine étape vers le réseau de destination. Une table de routage est une liste de routes utilisée par le routeur pour prendre des décisions quant à la direction à donner pour un paquet reçu sur l'une de ses interfaces. Le routage statique par opposition au routage dynamique, consiste à saisir manuellement les routes dans le routeur.

Prise de décision

Lorsqu' un routeur reçoit un paquet sur l'une de ses interfaces. Il extrait l'adresse IP de destination. En appliquant le masque réseau, il détermine le préfixe réseau de cette adresse. Il recherche ce préfixe dans sa table de routage. Si le préfixe est trouvé, il émet le paquet sur l'interface réseau adapté. Si le préfixe n'est pas trouvé, deux cas peuvent se présenter. S'il connaît un routeur par défaut, il lui transmet le paquet, sinon il le détruit (sans en informer l'émetteur).

Architecture de Zebra

Zebra fonctionne sous Linux et BSD. C'est un routeur multi-protocole composé d'une suite de démons, un par protocole de routage dynamique plus un démon central (zebra) utilisé pour le routage statique. De plus, lorsque le routage dynamique est mis en oeuvre, il est chargé de synthétiser dans une table de routage unique, les informations rapportées par les autres démons.

Figure 70.1. Architecture de Zebra

Architecture de Zebra

Topologie de travail

Figure 70.2. Topologie 1

Topologie 1

Mise en place

Nous avons besoin de trois routeurs disposant chacun de trois interfaces réseau. Sur une interface, un réseau local sera connecté. Les liens représentés par des éclairs correspondent à un réseau étendu. Ils sont simulés avec un câble croisé Ethernet. Les routeurs sont directement reliés de carte réseau à carte réseau par le câble croisé.

Vous devez installer trois ordinateurs avec trois cartes réseau dans chacun. Ensuite, installez le système d'exploitation puis Zebra. Pour les distributions RedHat et Mandrake, il est possible de télécharger les binaires sur http:\\rpmfind.net. Sinon, les sources sont accessibles sur www.zebra.org.

Les cartes réseau doivent être actives, mais ne configurez pas les adresses des cartes réseau, vous pourrez le faire directement à partir de Zebra. Si vous faites un ifconfig vous devez obtenir :

[root@linux root]# ifconfig
eth0      Lien encap:Ethernet  HWaddr 00:50:56:40:C0:63
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:100
          RX bytes:0 (0.0 b)  TX bytes:38159 (0.0 b)
          Interruption:9 Adresse de base:0x1060

eth1      Lien encap:Ethernet  HWaddr 00:50:56:40:C0:64
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:100
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interruption:11 Adresse de base:0x1080

eth2      Lien encap:Ethernet  HWaddr 00:50:56:40:C0:65
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:100
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interruption:10 Adresse de base:0x10a0

lo        Lien encap:Boucle locale
          inet adr:127.0.0.1  Masque:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Les trois cartes Ethernet activées mais sans adresse réseau.

Démarrage du démon zebra

Zebra ne peut pas démarrer sans un fichier de configuration minimal qu'il faudra saisir sur chaque routeur. Editez un fichier /etc/zebra/zebra.conf :

Linux# vi /etc/zebra/zebra.conf
hostname Zebra
password foo

Ensuite, chargez le démon zebra :

Linux# zebra -d

Vous obtiendrez peut-être l'avertissement suivant :

2003/02/19 01:08:17 ZEBRA: 
   can't create router advertisement socket: 
   Address family not supported by protocol

Zebra supporte IPv6, mais ce protocole n'est pas activé sur votre noyau. Ce n'est pas gênant pour la suite de l'activité.

Connexion au démon zebra

Zebra dispose d'une interface telnet pour chaque démon. Pour configurer le démon zebra, il faut se connecter sur le port 2601. Par exemple, sur Routeur3 :

[root@linux root]# telnet localhost 2601
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is zebra (version 0.91a).
Copyright 1996-2001 Kunihiro Ishiguro.


User Access Verification

Password:
Zebra>

A l'invite Password:, saisissez le mot de passe que vous avez indiqué dans le fichier /etc/zebra/zebra.conf (aucun caractère n'apparaît lors de la saisie, c'est " normal "). L'invite devient Zebra> (Zebra est le nom par défaut que vous changerez plus tard).

Prise en main de Zebra (principe)

Voyons les principaux éléments de l'environnement de Zebra.

L'invite

L'invite (prompt) a une importance capitale. A la suite du nom de l'appareil, on peut savoir dans quel " méandre " de l'arborescence des menus de configuration on se trouve.

Une invite terminée par un > indique que vous êtes dans le mode VIEW : c'est le mode activé lorsque l'on se connecte. Comme son nom l'indique, il s'agit d'un mode de visualisation de l'état du routeur. Par exemple :

Zebra>

Une invite terminée par un # indique que vous êtes dans le mode ENABLE : c'est le mode privilégié qui permet de modifier la configuration du routeur. On y accède à partir du mode VIEW en tapant la commande enable. Par exemple :

Zebra> enable
Zebra#

Ensuite, vous travaillerez essentiellement avec deux sous-modes :

- le mode "terminal de configuration". On y accède à partir du mode ENABLE en tapant la commande configure terminal. Dans ce mode, on peut (entre autre) saisir des routes statiques. Par exemple :

Zebra# configure terminal
Zebra(config)# 

- le mode "interface". On y accède à partir du mode "terminal de configuration" en tapant la commande interface suivi du nom de l'interface réseau. Dans ce mode, on peut (entre autre) saisir l'adresse IP et le masque de l'interface. Par exemple :

Zebra(config)# interface eth0
Zebra(config-if)#

L'aide en ligne

Retenez les éléments suivants, ils vous seront d'un grand secours :

  1. - comme dans l'interpréteur de commandes Linux, le logiciel complète toutes les commandes lorsque vous appuyez sur la touche TAB (par exemple : shTAB devient show);

  2. - un simple appui sur ? indique toutes les commandes disponibles dans le mode dans lequel vous êtes;

  3. - enfin, la commande list donne la liste de toutes les commandes disponibles disponibles dans le mode dans lequel vous êtes et de leurs paramètres.

Prise en main de Zebra (mise en pratique)

Si vous n'êtes pas dans le mode view, tapez end puis disable :

Zebra(config-if)# end
Zebra# disable
Zebra>

Utilisation de l'aide en ligne

- listez l'ensemble des commandes disponibles à ce stade (tapez simplement un point d'interrogation) :

Zebra> ?
  enable    Turn on privileged mode command
  exit      Exit current mode and down to previous mode
  help      Description of the interactive help system
  list      Print command list
  quit      Exit current mode and down to previous mode
  show      Show running system information
  terminal  Set terminal line parameters
  who       Display who is on vty

- listez toutes les commandes disponibles à ce stade avec tous leurs paramètres :

Zebra> list
  enable
  exit
  help
  list
  quit
  show debugging zebra
  show history
  show interface [IFNAME]
  show ip forwarding
  show ip route
  show ip route (bgp|connected|kernel|ospf|rip|static)
  show ip route A.B.C.D
  show ip route A.B.C.D/M
...

- listez tous les paramètres de la commande qui permet d'afficher la configuration (show ?) :

Zebra> show ?
  debugging  Zebra configuration
  history    Display the session command history
  interface  Interface status and configuration
  ip         IP information
  ipv6       IPv6 information
  memory     Memory statistics
  table      default routing table to use for all clients
  version    Displays zebra version

Affichage de l'état du routeur

- Listez les interfaces disponibles sur votre routeur avec la commande show interface (n'oubliez pas qu'un simple shTAB intTAB suffit !) :

Zebra> sh int
Interface lo
  index 1 metric 1 mtu 16436 >UP,LOOPBACK,RUNNING>
  inet 127.0.0.1/8
    input packets 152, bytes 9574, dropped 0, multicast packets 0
    input errors 0, length 0, overrun 0, CRC 0, frame 0, fifo 0, missed 0
    output packets 152, bytes 9574, dropped 0
    output errors 0, aborted 0, carrier 0, fifo 0, heartbeat 0, window 0
    collisions 0
Interface eth0
  index 2 metric 1 mtu 1500 >UP,BROADCAST,RUNNING,MULTICAST>
  HWaddr: 00:50:56:40:c0:63
    input packets 0, bytes 0, dropped 0, multicast packets 0
    input errors 0, length 0, overrun 0, CRC 0, frame 0, fifo 0, missed 0
    output packets 0, bytes 0, dropped 0
    output errors 0, aborted 0, carrier 0, fifo 0, heartbeat 0, window 0
    collisions 0
Interface eth1
  index 3 metric 1 mtu 1500 >UP,BROADCAST,RUNNING,MULTICAST>
  HWaddr: 00:50:56:40:c0:64
    input packets 0, bytes 0, dropped 0, multicast packets 0
    input errors 0, length 0, overrun 0, CRC 0, frame 0, fifo 0, missed 0
    output packets 0, bytes 0, dropped 0
    output errors 0, aborted 0, carrier 0, fifo 0, heartbeat 0, window 0
    collisions 0
Interface eth2
  index 4 metric 1 mtu 1500 >UP,BROADCAST,RUNNING,MULTICAST>
  HWaddr: 00:50:56:40:c0:65
    input packets 0, bytes 0, dropped 0, multicast packets 0
    input errors 0, length 0, overrun 0, CRC 0, frame 0, fifo 0, missed 0
    output packets 0, bytes 0, dropped 0
    output errors 0, aborted 0, carrier 0, fifo 0, heartbeat 0, window 0
    collisions 0

Vous avez quatre interfaces (lo et trois Ethernet), aucune ne possède pour l'instant d'adresse IP.

- Visionnez le contenu de votre table de routage : shTAB ip roTAB :

Zebra> sh ip ro
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       B - BGP, > - selected route, * - FIB route

C>* 127.0.0.0/8 is directly connected, lo

Elle est vide ! sauf 127.0.0.0/8 qui correspond à l'adresse de bouclage logiciel. Cette table étant vide, le routeur n'a aucune idée de la façon d'acheminer les paquets de données vers tel ou tel réseau.

Le but de ce TP est de configurer correctement les interfaces et les tables de routage pour que l'ensemble des appareils des stations puissent s'atteindre au travers des trois routeurs.

Configuration générale du routeur

- Toute configuration nécessite de passer en mode privilégié :


Zebra> enable
Zebra#

Le # indique que vous êtes en mode privilégié.

- Listez les commandes disponibles :

Zebra# ?
  configure  Configuration from vty interface
  copy       Copy configuration
  debug      Debugging functions (see also 'undebug')
  disable    Turn off privileged mode command
  end        End current mode and change to enable mode.
  exit       Exit current mode and down to previous mode
  help       Description of the interactive help system
  list       Print command list
  no         Negate a command or set its defaults
  quit       Exit current mode and down to previous mode
  show       Show running system information
  terminal   Set terminal line parameters
  who        Display who is on vty
  write      Write running configuration to memory, network, or terminal

Les commandes importantes à ce stade sont : copy pour enregistrer la configuration et configure pour accéder au terminal de configuration des interfaces réseau et des routes.

Affichage de la configuration actuelle

La commande write term permet de consulter à tout moment la configuration actuelle du routeur :


Zebra# write term

Current configuration:
!
hostname Zebra
password foo
!
interface lo
!
interface eth0
!
interface eth1
!
interface eth2
!
line vty
!
end

Passage au mode "terminal de configuration"

Zebra# conf term
Zebra(config)#

Définition du nom du routeur. Cela se fait par la commande hostname. Attribuez à chaque routeur un nom significatif. Par exemple, pour le routeur 3 :

Zebra(config)# hostname Routeur3(Zebra)
Routeur3(Zebra)(config)#

Sécurisation du routeur. L'accès au routeur et à son mode de configuration doit être protégé.

  1. - Activez le chiffrement des mots de passe : Lorsque nous avons utilisé la commande write term, nous avons pu constater que le mot de passe n'était pas chiffré. Résolvons ce problème :

    Routeur3(Zebra)(config)# service password-encryption
    
  2. - Attribuez un mot de passe pour l'accès au mode VIEW du routeur (en remplacement de "foo"). Il doit commencer par une lettre ou un chiffre :

    Routeur3(Zebra)(config)# password ******

  3. - Attribuez un mot de passe pour l'accès au mode ENABLE du routeur. Il doit commencer par une lettre ou un chiffre :

    Routeur3(Zebra)(config)# enable password ******

Consultez la configuration

Routeur3(Zebra)(config)# w t

Current configuration:
!
hostname Routeur3(Zebra)
password 8 kZujW/HWOwF4o
enable password 8 1b5pHVyKjR.5w
service password-encryption
!
interface lo
!
interface eth0
!
interface eth1
!
interface eth2
!
line vty
!
end

Les mots de passe sont chiffrés maintenant.

Enregistrement de la configuration

Il faut revenir au mode enable. N'oubliez pas de sauvegarder régulièrement !

Routeur3(Zebra)(config)# end
Routeur3(Zebra)# copy running-config startup-config
Configuration saved to /etc/zebra/zebra.conf

Configuration des interfaces réseau

Il faut attribuer une adresse IP et un masque à chaque carte réseau. Pour cela, il faut se placer dans le mode "configuration d'interface" puis utiliser une commande ip address. Enfin, il faut activer l'interface avec une commande no shutdown. Par exemple, pour l'interface eth0 du routeur 3 :

Routeur3(Zebra)# conf t
Routeur3(Zebra)(config)# int eth0
Routeur3(Zebra)(config-if)# ip addr 192.168.3.254/8
Routeur3(Zebra)(config-if)# no shut

- Faites la même manipulation, en adaptant, pour les autres interfaces de ce routeur.

Consultez la configuration :

Routeur3(Zebra)(config)# wr t

Current configuration:
!
hostname Routeur3(Zebra)
password 8 kZujW/HWOwF4o
enable password 8 1b5pHVyKjR.5w
service password-encryption
!
interface lo
!
interface eth0
 ip address 192.168.3.254/24
!
interface eth1
 ip address 12.0.0.2/8
!
interface eth2
!
line vty
!
end

L'interface eth2 n'a pas d'adresse pour l'instant.

Faites ces configurations sur les trois routeurs.

Configuration des routes

Allez dans le shell Linux du routeur3 et listez sa table de routage :

[root@linux root]# route
Table de routage IP du noyau
Destination     GW  Genmask         Indic Metric Ref    Use Iface
192.168.3.0     *   255.255.255.0   U     0      0        0 eth0
12.0.0.0        *   255.0.0.0       U     0      0        0 eth1
127.0.0.0       *   255.0.0.0       U     0      0        0 lo

Cet appareil connaît les adresses des réseaux directement connecté. Ainsi, Routeur3 peut communiquer avec l'interface de Routeur2 situé dans le même réseau :


[root@linux root]# ping 12.0.0.1 -c 2
PING 12.0.0.1 (12.0.0.1) from 12.0.0.2 : 56(84) bytes of data.
Warning: time of day goes back, taking countermeasures.
64 bytes from 12.0.0.1: icmp_seq=0 ttl=255 time=4.352 msec
64 bytes from 12.0.0.1: icmp_seq=1 ttl=255 time=1.819 msec

--- 12.0.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/mdev = 1.819/3.085/4.352/1.267 ms

Tous les appareils peuvent pinger leurs voisins immédiats, mais pas au-delà. Par exemple, Routeur3 ne peut pas atteindre Routeur1 :

[root@linux root]# ping 11.0.0.1
connect: Network is unreachable

Normal, puisque le réseau 11.0.0.0 ne figure pas dans sa table de routage. Le routage statique va consister à intégrer manuellement les routes dans la table de routage du routeur. Ouvrez un session telnet avec zebra puis allez dans le mode "configuration de terminal".

La saisie des routes se fait avec la commande ip route. Son format général est :


ip route <adresse_reseau_destination> <adresse_ip_prochain_routeur>

Par exemple, sur Routeur3 pour atteindre Routeur1, il faudra indiquer 11.0.0.0/8 en réseau de destination et l'adresse IP de l'interface de Routeur2 qui est située du côté de Routeur3 :

Routeur3(Zebra)(config)# ip route 11.0.0.0/8 12.0.0.1

Tentons à nouveau un ping dans le shell Linux :


Routeur3(Zebra)(config)# end
Routeur3(Zebra)# quit
Connection closed by foreign host.
[root@linux root]# ping 11.0.0.1
PING 11.0.0.1 (11.0.0.1) from 12.0.0.2 : 56(84) bytes of data.

CTRL-C

--- 11.0.0.1 ping statistics ---
13 packets transmitted, 0 packets received, 100% packet loss

Il faut interrompre la commande car elle restait bloquée. Cela ne marche donc pas. Pourquoi ?

Pour comprendre, nous allons utiliser la commande Linux tcpdump qui affiche tous les paquets passant par une interface. Sur Routeur3 :

[root@linux root]# tcpdump -i eth1
tcpdump: listening on eth1
03:44:45.507835 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)
03:44:46.507835 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)
03:44:47.507835 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)

Le routeur émet des paquets mais on constate qu'il n'y a pas de retour. Le problème peut venir de Routeur2 ou de Routeur1. Suivons la chaîne et connectons-nous dans le shell de Routeur2. Utilisons tcpdump sur l'interface du côté de Routeur3 :

[root@linux root]# tcpdump -i eth2
tcpdump: listening on eth2
03:52:20.017855 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)
03:52:21.017855 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)
03:52:22.027855 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)

Les paquets sont bien reçus. Faisons la même manipulation, toujours sur Routeur2 mais sur l'interface du côté de Routeur1 :


[root@linux root]# tcpdump -i eth1
tcpdump: listening on eth1
03:52:46.027855 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)
03:52:47.017855 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)
03:52:48.017855 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)

Les paquets sont bien transmis d'une interface à l'autre. Routeur2 fait son travail. Passons sur Routeur1, faisons un tcpdump sur l'interface côté Routeur 2 :

[root@linux root]# tcpdump -i eth2
tcpdump: listening on eth2
03:53:53.224868 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)
03:53:54.224868 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)
03:53:55.234868 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)

Les paquets sont bien reçus sur Routeur1. Mais il n'est pas capable d'y répondre. D'où vient le problème alors ? Il n'y a qu'une solution. Il vient de la table de routage. Routeur1 ne sait pas comment répondre à Routeur3 car il n'a aucune idée de l'endroit où il se trouve puisqu'il n'est pas directement relié à lui. Connectons-nous au démon zebra sur Routeur1 puis visionnons sa table de routage :

Routeur1(Zebra)> sh ip ro
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       B - BGP, > - selected route, * - FIB route

C>* 11.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

Elle ne contient aucune entrée pour 12.0.0.0/8, le réseau auquel est connecté Routeur3. Réparons cette erreur en informant Routeur1 sur la façon d'atteindre 12.0.0.0/8. Il faut passer par son voisin Routeur2 dont l'adresse est 11.0.0.2. Sur le routeur (en mode "terminal de configuration"), il faut saisir :

Routeur1(Zebra)(config)# ip route 12.0.0.0/8 11.0.0.2

Affichons à nouveau la table de routage :

Routeur1(Zebra)(config)# end
Routeur1(Zebra)# sh ip ro
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       B - BGP, > - selected route, * - FIB route

C>* 11.0.0.0/8 is directly connected, eth2
S>* 12.0.0.0/8 [1/0] via 11.0.0.2, eth2
C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.1.0/24 is directly connected, eth0

La route apparaît. Elle est notée S pour Statique.

Revenons dans le shell Linux de Routeur1. La commande tcpdump nous montre que maintenant, Routeur sait répondre à Routeur3 :

[root@linux root]# tcpdump -i eth2
tcpdump: listening on eth2
03:59:51.904868 12.0.0.2 >> 11.0.0.1: icmp: echo request (DF)
03:59:51.904868 11.0.0.1 > 12.0.0.2: icmp: echo reply
03:59:52.864868 12.0.0.2 > 11.0.0.1: icmp: echo request (DF)
03:59:52.864868 11.0.0.1 > 12.0.0.2: icmp: echo reply

Si l'on revient sur Routeur3, le ping fonctionne désormais sans problème :

[root@linux root]# ping 11.0.0.1 -c 2
PING 11.0.0.1 (11.0.0.1) from 12.0.0.2 : 56(84) bytes of data.
Warning: time of day goes back, taking countermeasures.
64 bytes from 11.0.0.1: icmp_seq=0 ttl=254 time=8.090 msec
64 bytes from 11.0.0.1: icmp_seq=1 ttl=254 time=3.986 msec

--- 11.0.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/mdev = 3.986/6.038/8.090/2.052 ms

Résumé

1. Le routage est une chaîne : les paquets sont transmis au routeur voisin, qui transmet au routeur voisin, etc.

2. Il faut penser à configurer tous les routeurs pour l'aller ET le retour des paquets.

Configuration des routeurs

Maintenant que vous savez tout, saisissez sur chaque routeur l'ensemble minimal des routes qu'il a besoin de connaître. Le cahier des charges est le suivant : les stations de chaque réseau ont besoin de communiquer avec les stations de tous les autres réseaux. Les stations n'ont pas besoin de communiquer avec les routeurs.

D'abord, commencez par détruire les routes statiques que nous venons de saisir pour les besoins de la démonstration. Par exemple, sur Routeur3 pour détruire la route 11.0.0.0/8 :


Routeur3(Zebra)> en
Password:
Routeur3(Zebra)# conf t
Routeur3(Zebra)(config)# no ip route 11.0.0.0/8 12.0.0.1
Routeur3(Zebra)(config)#

Dernier point : n'oubliez pas de configurer la passerelle par défaut sur les stations, sans quoi elles ne sauraient pas comment faire sortir leurs paquets de LAN. La passerelle par défaut de chaque LAN est le routeur le plus proche. Par exemple sur une station du premier réseau local (192.168.1.0/24), en supposant que celle-ci est sous Windows :

Figure 70.3. Topologie 1

Topologie 1

Solution

Ci-dessous, vous trouverez la configuration complète des trois routeurs. Vos routes statiques doivent être strictement identiques à celles indiquées. Ci ce n'est pas le cas, vous n'avez pas complètement compris le principe du routage, relisez la partie introductive de ce document.

Pour Routeur1 :


Routeur1(Zebra)# sh run

Current configuration:
!
hostname Routeur1(Zebra)
password 8 .A2UkN/mYwExA
enable password 8 J7XQRuHNCKhOA
service password-encryption
!
interface lo
!
interface eth0
 ip address 192.168.1.254/24
!
interface eth1
!
interface eth2
 ip address 11.0.0.1/8
!
ip route 192.168.2.0/24 11.0.0.2
ip route 192.168.3.0/24 11.0.0.2
!
line vty
!
end

Pour Routeur2 :

Routeur2(Zebra)# sh run

Current configuration:
!
hostname Routeur2(Zebra)
password 8 wcw4qNEU1QPy.
enable password 8 fqdY3GaicS4XQ
service password-encryption
!
interface lo
!
interface eth0
 ip address 192.168.2.254/24
!
interface eth1
 ip address 11.0.0.2/8
!
interface eth2
 ip address 12.0.0.1/8
!
ip route 192.168.1.0/24 11.0.0.1
ip route 192.168.3.0/24 12.0.0.2
!
line vty
!
end

Pour Routeur3 :

Routeur3(Zebra)# sh ru

Current configuration:
!
hostname Routeur3(Zebra)
password 8 kZujW/HWOwF4o
enable password 8 1b5pHVyKjR.5w
service password-encryption
!
interface lo
!
interface eth0
 ip address 192.168.3.254/24
!
interface eth1
 ip address 12.0.0.2/8
!
interface eth2
!
ip route 192.168.1.0/24 12.0.0.1
ip route 192.168.2.0/24 12.0.0.1
!
line vty
!
end

Problèmes rencontrés

Q - Je ne sais pas retirer les adresses IP déjà configurées sous Linux

R - Editez le contenu des fichiers /etc/sysconfig/network-scripts/ifcfg-ethx (avec x = numéro de la carte) et supprimez les lignes contenant l'adresse et le masque. Ensuite, redémarrez.

Q - Je n'arrive pas ouvrir de session Telnet.

R - Soit vous n'indiquez pas le numéro de port (2601) après l'adresse IP, soit le démon zebra n'est pas lancé. Faites un ps -ax pour vérifier. S'il n'apparaît pas, faites un zebra -d

Q - J'ai oublié un mot de passe.

R - Bravo. Editez le fichier /etc/zebra/zebra.conf et retirez les lignes password et service password-encryption

Q - J'ai saisi une mauvaise commande et je ne sais pas la supprimer :

R - Vous devez faire exactement comme si vous vouliez saisir à nouveau cette commande mais vous faites précéder le tout de no. Exemple : J'ai saisi une mauvaise adresse (99.0.0.9/8) sur l'interface eth0 de mon routeur :

Routeur1(Zebra)> enable
Password:
Routeur1(Zebra)# conf t
Routeur1(Zebra)(config)# int eth0
Routeur1(Zebra)(config-if)# no ip address 99.0.0.9/8
Routeur3(Zebra)(config-if)#