User Tools

Site Tools


informatique:fortinet:bgp

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

# diag conf et process BGP
get router bgp
get router info bgp summary
 
# voir le status des protocoles de routages
get router info protocols
 
# voir les routes apprises en BGP
get router info routing-table bgp
# afficher les réseaux annoncés par le routeur
get router info bgp networks
 
# 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

Best-practices

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
informatique/fortinet/bgp.txt · Last modified: 2018/08/28 08:43 by pteu