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.
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.