Exercice BGP n°1 – mise en œuvre de sessions eBGP

 

Nous allons mettre en œuvre des sessions eBGP entre chaque routeur de la salle et le routeur « backbone » étant raccordé à l’Internet. Comme il n’y a qu’une seule liaison ce montage ne serait pas indispensable. Avant de démarrer il faut que chaque table dispose d’un numéro de système autonome :

-         table 1 : AS 1 ;

-         table 2 : AS 2 ;

-         etc…

Le système autonome utilisé par le routeur « backbone » est l’AS 16.

 

Le mode opératoire de l’exercice est le suivant :

 

1.      Détruisez la configuration OSPF de votre routeur et arrêtez vos interfaces série (« shutdown »), nous utiliserons seulement les prises Ethernet.

 

2.      Vérifiez qu’il n’y ait plus de routes OSPF (« sh ip route »).

 

3.      Supprimez toutes les routes statiques de votre notamment, et notamment la route par défaut.

 

4.      Vérifiez qu’il n’y ait plus de routes statiques (« sh ip route »).

 

5.      Vous allez annoncer à votre voisin BGP le réseau Ethernet où est connecté votre PC. Notez l’identification de ce réseau.

 

Adresse IP du réseau :                        Masque :

 

6.      Les sessions BGP seront établies comme proposé sur le schéma ci-joint. Les adresses IP utilisées sur le « backbone t3 » sont les suivantes :

Table 1 : 84.201.95.1/24

Table 2 : 84.201.95.2/24

etc…

Backbone : 84.201.95.254/24

 

Configurez maintenant votre interface Ethernet avec l’adresse IP et le masque proposés. Vérifiez (avec ping) que vous arrivez bien à joindre le routeur backbone, et pourquoi pas les routeurs des autres tables. Vérifiez également que vous n’arrivez pas à joindre les réseaux locaux des autres tables ou l’Internet.

 

7.      Configurez BGP sur votre routeur afin d’ouvrir une session avec le routeur « backbone ». Dans un premier temps vous n’annoncez pas encore de réseau dans la table BGP. Prenez contact avec l’administrateur du routeur « backbone » pour qu’il configure à son tour la session BGP avec votre routeur. Quelques commandes pour vous aider :

 

R# config t

Enter configuration commands, one per line.  End with CNTL/Z.

R(config)# ip bgp-community new-format

R(config)# router bgp 1                                      // Utiliser votre numéro d’AS

R(config-router)# network 192.168.3.0 mask 255.255.255.240   // Utilisez votre réseau IP

 

R(config-router)# no synchronisation                         // Ces deux commandes sont utiles dans

R(config-router)# no auto-summary                            // votre configuration de base

 

Le protocole BGP est maintenant configuré sur votre routeur, mais vous n’échangez de routes avec personne.

 

8.      Manipulez la table BGP et la table de routage de votre équipement. Que constatez-vous ? Utilisez les commandes « sh ip bgp », « sh ip route », « sh ip bgp sum ».

Toutes les tables doivent faire cette manipulation de façon simultanée (avant de passer à l’étape suivante de l’exercice).

Vous allez maintenant, à tour de rôle et lorsque l’instructeur vous le demandera annoncer dans le routeur BGP votre réseau local (l’interface Ethernet où est raccordé votre PC) :

R(config)# router bgp 1                                      // Utiliser votre numéro d’AS

R(config-router)# network 192.168.3.0 mask 255.255.255.240   // Utilisez votre réseau IP

 

Sur l’ensemble des tables consultez vos tables BGP : « sh ip bgp », que constatez-vous. Répétez si nécessaire l’opération plusieurs fois jusqu’à changement (cela va prendre 30 secondes à 1 mn). Regardez ensuite la table de routage « sh ip route ». Que voyez-vous maintenant ?


Arrivez-vous à joindre le réseau que vous venez d’apprendre ? Pourquoi ? Que faut-il faire pour que vous arriviez à joindre ce réseau ?

 

(Nous allons maintenant répéter cette opération avec une 2ème table, puis l’ensemble des tables feront la même manipulation).

9.      Regardez le contenu de la table BGP du routeur « backbone ».

10.  L’instructeur va maintenant à son tour vous annoncez des réseaux extérieurs pour simuler l’Internet (toutes ces routes seront cependant dans l’AS 16). Constatez le remplissage de votre table BGP puis de votre table de routage système.

Avez-vous maintenant accès à l’Internet de votre poste de travail ? Pourquoi cela fonctionne-t-il ?

11.  Annoncez (par erreur, mais volontairement) un « /28 » extrait du réseau de votre voisin de droite ou de gauche. Comment ce réseau est-il routé depuis les autres tables ? Comment votre voisin reçoit-il ce réseau ?

Quelle sécurité pouvez-vous mettre en œuvre pour éviter d’apprendre vos propres réseaux en provenance de l’Internet ? Mettez en œuvre le filtre adéquat, redémarrez les sessions BGP et constatez le progrès.

12.  Définissez des filtres pour lister ce que vous envoyez et ce que vous allez accepter

 

R(config)# ip prefix-list mes-routes seq 10 permit 192.168.3.0/24

R(config)# ip prefix-list mes-routes seq 20 deny   0.0.0.0/0 le 32

 

R(config)# ip prefix-list ses-routes seq 10 permit 192.168.18.0/24

R(config)# ip prefix-list ses-routes seq 20 deny   0.0.0.0/0 le 32

 


13.  Ajoutez des filtres pour ne pas envoyer ou recevoir n’importe quoi

 

R(config)# router bgp 1                                      // Utiliser votre numéro d’AS

R(config-router)# neighbor 192.168.8.2 prefix-list mes-routes out

R(config-router)# neighbor 192.168.8.2 prefix-list ses-routes in

^Z

R# clear ip bgp *                                            // Ou clear ip bgp soft-reconfig

 

Vous devez bien sûr utiliser les vrais numéros de réseau annoncés dans vos sessions BGP avec votre voisin. Vous pouvez vérifier le bon fonctionnement des filtres en annonçant des routes interdites et en constatant le bon filtrage. A chaque modification des filtres un « clear ip bgp » est indispensable.

 

14.  Regardez ce que votre voisin vous envoie (le routeur « backbone ») et comparez avec votre propre table BGP

 

R# sh ip bgp neighbor x.x.x.x advertised-routes

R# sh ip bgp

 

15.  Quelles routes avez-vous dans votre table BGP ?

 

R# sh ip bgp

R# sh ip bgp x.y.z.t/nn [longer-prefix]

               

16.  Supprimez maintenant le filtre en entrée, mais conservez par sécurité le filtre en sortie. Nous allons maintenant pouvoir passer à l’exercice suivant. Supprimez également l’annonce erronée du /28.

 

 

 

Quelques autres commandes BGP utiles :

 

R# sh ip bgp

R# sh ip bgp neighbor

R# sh ip bgp neighbor x.x.x.x received-routes  // Nécessite « soft-reconfig inbound »

 

 

 

Fin de l’exercice BGP n°1.


 

Exercice BGP n°2 – mise en œuvre d’un « multi-homing »

 

Pour terminer les exercices BGP nous allons mettre en œuvre une 2ème connexion avec un 2ème ISP pour chacun d’entre vous. Ce second ISP est la table située à votre droite (vous inverserez ensuite les rôles). Vous utilisez le port série de votre routeur pour effectuer le raccordement de vos deux tables.

 

Nous conservons la session BGP avec le routeur « backbone » telle qu’elle a été définie.

 

Le mode opératoire de l’exercice est le suivant :

 

1.      Il vous faut des adresses IP afin de configurer le raccordement entre vos deux tables. Décidez qui va les fournir (conseil : c’est au 2ème ISP de les fournir). Que doit faire celui qui les fournit ? Faites la re-configuration réseau qui est nécessaire à cette connexion.

Testez le bon fonctionnement de l’interconnexion entre les deux routeurs.

 

2.      Configurez maintenant la session BGP supplémentaire sur votre routeur. Observez ce qu’il se passe lorsque celle-ci « monte ». Quelles routes avez-vous dans votre table BGP ? Quels chemins ? Arrivez-vous encore à joindre votre voisin ? Pourquoi ?

 

3.      Corrigez la configuration BGP du voisin qui a du ré numéroter son réseau. Créez la route « Null0 » pour son /23 et observez ce qui se passe ensuite. Arrivez-vous maintenant à joindre votre voisin ?

 

4.      Votre 2ème ISP va maintenant couper sa liaison vers l’ISP principal (le routeur « backbone »). Vérifiez que votre connexion fonctionne toujours. Quels sont les changements dans les tables de routage ? Est-ce que sa connexion fonctionne encore ? Qu’auriez-vous du faire pour éviter qu’il vous utilise pour aller à l’extérieur.

 

Configurez (ISP « client ») votre routage BGP afin que votre 2ème ISP et votre ISP principal ne puissent pas vous utiliser pour faire du « transit ». Vous devez pour cela mettre en œuvre un filtrage des réseaux BGP que vous annoncez en utilisant des « as-path list ».

R(config)# ip as-path access-list 1 permit ^1$               // Votre numéro d’AS

R(config)# ip as-path access-list 1 permit .*                // Votre numéro d’AS

 

R(config)# router bgp 1                                      // Utiliser votre numéro d’AS

R(config-router)# neighbor 192.168.8.2 filter-list 1 out

R(config-router)# neighbor 192.168.8.2 filter-list 2 in

R# clear ip bgp *

R# sh ip bgp neighbor

 

Demandez à votre 2ème ISP de se remettre en panne. Qu’observez-vous cette-fois ? Les autres peuvent-ils passer par vous pour le joindre ?

Nous allons maintenant manipuler les « local-preferences » : pour l’instant votre routeur BGP prends le chemin le plus court pour joindre une destination. Nous allons affecter un poids à chaque ISP : votre 2ème ISP devient votre ISP préféré, votre 1er sert de secours.


R(config)# router bgp 1                                      // Utiliser votre numéro d’AS

R(config-router)# neighbor 1er-ISP local-preference 100

R(config-router)# neighbor 2ème-ISP local-preference 200



N’oubliez pas de redémarrer les sessions BGP. Que constatez-vous dans la table BGP ? Le routage obtenu est-il symétrique ? Comment pourrait-on modifier le trafic retour (provenant de l’Internet et allant chez-vous) ?

Manipulation de « as-path prepend ». Nous allons maintenant remplacer nos filtres par des « route-map » qui vont faire plusieurs choses : choisir « local-preference » en entrée, filtrer les préfixes (en sortie) et filtrer les AS (dans les deux sens) et éventuellement mettre un as-path prepend en sortie.

 

Exemples (à adapter) :

route-map prepend permit 10

   set as-path prepend 1       // Votre numéro d’AS

 

route-map localpref permit 10

   match as-path 4

   set local-preference 200

route-map localpref permit 20

   match as-path 5

   set local-preference 300

route-map localpref permit 30

   set local-preference 100

 

 

 

Fin de l’exercice BGP n°2.

 

Si le temps restant le permet, inversez les rôles : la table à votre gauche devient le 2ème ISP et la table de droite est l’ISP client.