This is an old revision of the document!
Table of Contents
BGP
Configuration minimale
le minimum pour que ça marche
On suppose que notre Forti est connecté sur son port1 à un routeur, avec qui il doit monter une session BGP. Pour les besoins de notre test on va créer une interface de loopback lo0
(IP=10.0.0.1/32) que l'on annoncera dans le BGP et qui nous servira de router-id.
Paramètres :
- AS local = 65000
- IP interco local = 192.168.0.1/24
- AS distant = 65001
- IP interco distante (peer) = 192.168.0.2/24
# création des interfaces config system interface edit "port1" set vdom "root" set ip 192.168.0.1 255.255.255.0 set allowaccess ping set type physical set alias "vers routeur BGP" next edit "lo0" set vdom "root" set ip 10.0.0.1 255.255.255.255 set allowaccess ping set type loopback end end
On suppose que le routeur d'en face est correctement configuré avec la bonne IP, qu'il est UP et qu'on le PING (execute ping 192.168.0.2
).
Configuration BGP à proprement parlé :
config router bgp set as 65000 config neighbor edit "192.168.0.2" set remote-as 65001 next end # on déclare ici les réseaux qu'on annonce dans le BGP config network edit 1 set prefix 10.0.0.1 255.255.255.255 next end set router-id 10.0.0.1 end
Le router-id est un identifiant qui prend la même forme d'une adresse IP sans en être une, qu'il est conseillé de configurer sur l'équipement afin d'être sûr de ne pas avoir de doublon. C'est pour cela qu'on utilise l'IP de notre loopback.
Mot de passe MD5
Sécurité minimalisme, ça ne mange pas de pain de l'utiliser (à configurer sur les 2 peers pour que le BGP monte) ; ici on mettra le mot de passe “secreT” :
config router bgp set as 2200 config neighbor edit "192.168.0.2" set password "secreT" end
Redistribution de routes
Actuellement on redistribue déjà notre loopback lo0 (10.0.0.1/32) dans le BGP, via la directive config network
dans la section BGP. On peut également redistribuer automatiquement les routes présentent dans notre table de routage, en fonction de leur origine : connected, statique, ospf, etc
config router bgp set as 2200 # redistribuer toutes nos routes connected config redistribute "connected" set status enable end # redistribuer également toutes nos routes statiques config redistribute "static" set status enable end
Route-map
Par sécurité on peut filtrer les annonces entrantes/sortantes du BGP avec des route-map. Par exemple pour être sûr que notre peer ne nous annonce que des préfixes dans la plage 192.168.0.0/16 :
# on créer une liste de préfixe (sorte d'ACL) config router prefix-list edit "pref_BGP-in" config rule edit 1 set prefix 192.168.0.0 255.255.0.0 unset ge unset le end # on inclut cette liste dans une route-map config router route-map edit "rmap_BGP-in" config rule edit 1 set match-ip-address "pref_BGP-in" end # on l'ajoute dans notre configuration BGP pour filtrer les annonces reçues par notre peer config router bgp set as 65000 config neighbor edit "192.168.0.2" set remote-as 65001 set route-map-in "rmap_BGP-in" end
Les route-map sont utilisables également pour filtrer les annonces sortantes (set route-map-out
) ou les redistributions de routes (dans le paragraphe config redistribute xxx
).
Vérifications
Diagnostique et configuration du process BGP
get router bgp get router info bgp summary
Voir le status des protocoles de routage dynamiques
get router info protocols # [..] résultat de la commande limité au BGP Routing Protocol is "bgp 65425" IGP synchronization is disabled Automatic route summarization is disabled Default local-preference applied to incoming route is 100 Redistributing: Neighbor(s): Address AddressFamily FiltIn FiltOut DistIn DistOut RouteMapIn RouteMapOut Weight 10.55.200.94 unicast
Afficher les réseaux BGP annoncés et reçus par le routeur :
get router info bgp network BGP table version is 8, local router ID is 10.204.255.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.31.0.24/29 10.55.200.94 0 0 64200 65041 i *> 10.55.200.92/31 10.55.200.94 0 0 64200 ? *> 10.55.200.94/31 0.0.0.0 100 32768 i *> 10.55.200.254/31 10.55.200.94 0 0 64200 ? *> 10.143.0.24/29 10.55.200.94 0 0 64200 65041 i *> 10.143.6.8/29 10.55.200.94 0 0 64200 65547 i *> 10.143.8.8/29 0.0.0.0 100 32768 i *> 10.204.241.1/32 10.55.200.94 0 0 64200 65041 i *> 10.204.255.1/32 10.55.200.94 0 0 64200 65041 i *> 10.204.255.2/32 0.0.0.0 100 32768 i *> 10.204.255.3/32 10.55.200.94 0 0 64200 65547 i
Afficher les routes BGP présentes dans la table de routage
get router info routing-table bgp B 10.31.0.24/29 [20/0] via 10.55.200.94, port23, 6d23h40m B 10.55.200.92/31 [20/0] via 10.55.200.94, port23, 6d23h40m B 10.55.200.254/31 [20/0] via 10.55.200.94, port23, 1d22h05m B 10.143.6.8/29 [20/0] via 10.55.200.94, port23, 1d01h14m B 10.204.241.1/32 [20/0] via 10.55.200.94, port23, 6d23h40m B 10.204.255.1/32 [20/0] via 10.55.200.94, port23, 6d23h40m B 10.204.255.3/32 [20/0] via 10.55.200.94, port23, 1d22h05m
# Afficher les peers BGP get router info bgp neighbors # sniffer les packets BGP sur une interface diagnose sniffer packet any "tcp and port 179" 4 0 l # mettre en place un debug du processus BGP diagnose ip router bgp all enable
Tips
Remove private AS
Pour supprimer les numéros d'AS privés du champs AS-path :
config router bgp config neighbor edit "10.0.1.2" set remove-private-as enable set remove-private-as6 enable end
soft-reconfiguration
Si le routeur n'est pas surchargé en terme de mémoire, on peut activer l'option soft-reconfiguration
par neighbor, qui apporte plus d'informations pour les diagnostiques :
config router bgp config neighbor edit 10.55.202.92 set soft-reconfiguration enable end
On a ensuite accès à des commandes plus fines, comme les routes reçues ou envoyées à un voisin spécifique :
get router info bgp neighbors 10.55.200.94 received-route get router info bgp neighbors 10.55.200.94 advertised-routes