infra / reseaux-tcp-ip
BGP et routage inter-domaines
Explication
Ce que vous allez apprendre
- Comprendre ce qu'est un Système Autonome (AS) et pourquoi Internet en est une fédération
- Comprendre en quoi BGP diffère d'un protocole de routage interne comme OSPF
- Lire l'ordre de préférence des routes BGP (LOCAL_PREF, AS_PATH, MED)
- Consulter des annonces BGP réelles avec des outils publics (RIPE, whois)
- Comprendre le risque de détournement de route (BGP hijack) et le rôle protecteur de RPKI
Dans quel contexte ?
Un ingénieur réseau constate qu'une partie du trafic destiné à son entreprise transite soudainement par un chemin inhabituel, avec une latence anormalement élevée. En consultant la table de routage BGP via vtysh -c "show bgp ipv4 unicast <préfixe>", il découvre qu'un AS tiers annonce désormais une route plus spécifique vers son propre préfixe IP — un scénario classique de détournement de route (BGP hijack), qui aurait pu être détecté plus tôt avec une surveillance RPKI active.
Internet n'est pas un seul réseau, mais un réseau de réseaux
Chaque entreprise, opérateur, ou grand fournisseur (Google, Cloudflare...) gère son propre réseau, appelé "Système Autonome" (AS), identifié par un numéro unique. Internet fonctionne parce que ces milliers de réseaux indépendants acceptent de s'échanger des informations sur "comment atteindre telle plage d'adresses IP". BGP (Border Gateway Protocol) est le protocole qui rend cet échange possible à l'échelle mondiale.
| Attribut BGP | Priorité | Rôle |
|---|---|---|
| LOCAL_PREF | 1 (le plus fort) | Préférence de politique interne à l'AS |
| AS_PATH | 2 | Nombre d'AS traversés (plus court préféré) |
| ORIGIN | 3 | Origine de la route (IGP > EGP > incomplete) |
| MED | 4 | Route préférée entre plusieurs liens vers le même AS voisin |
Prérequis
Cette leçon suppose que tu es à l'aise avec le routage interne (leçon 7) : BGP répond à un problème similaire (trouver un chemin), mais à l'échelle d'Internet entier plutôt qu'à l'intérieur d'un seul réseau.
Pourquoi BGP ne cherche pas "le chemin le plus court"
Contrairement à un protocole de routage interne comme OSPF (vu dans une leçon précédente), qui optimise généralement la distance ou le coût technique, BGP choisit une route selon des règles de politique et de préférence commerciale : quel voisin fait-on confiance, quel chemin coûte le moins cher contractuellement, quelle route respecte les accords entre opérateurs. C'est pourquoi BGP est dit "à vecteur de chemin" : il connaît la liste des réseaux traversés (AS_PATH), pas juste une distance chiffrée.
L'ordre de décision, une hiérarchie de préférences
Face à plusieurs routes possibles vers une même destination, BGP les compare selon un ordre de critères précis : d'abord la préférence locale définie par l'administrateur du réseau, puis le nombre de réseaux traversés (plus court est généralement préféré), puis d'autres attributs plus fins. Cette hiérarchie explique pourquoi deux chemins vers la même destination peuvent être choisis différemment par deux réseaux voisins.
Le risque de confiance mal placée
BGP repose historiquement sur la confiance : rien n'empêche techniquement un réseau d'annoncer, à tort ou par erreur, posséder une plage d'adresses qui ne lui appartient pas.
Piège dangereux
Un "détournement de route" (BGP hijack) peut rediriger du trafic entier vers un mauvais endroit, par erreur de configuration ou par malveillance — plusieurs incidents Internet majeurs en ont résulté. RPKI répond à ce problème en permettant de signer cryptographiquement quel réseau a le droit légitime d'annoncer quel préfixe : un réflexe de sécurité à activer pour tout AS qui gère ses propres préfixes.
Commandes & code
BGP et routage inter-domaines
# BGP (Border Gateway Protocol) : LE protocole qui fait tenir Internet, relie les Systèmes Autonomes (AS)
# Un AS = un réseau sous une administration unique, identifié par un numéro (ASN, 16 ou 32 bits)
# Exemple : Google AS15169, Cloudflare AS13335, un opérateur télécom AS...
# BGP est un protocole à VECTEUR DE CHEMIN (path-vector), pas à état de lien (contrairement à OSPF)
# Il choisit une route selon des ATTRIBUTS, pas juste la distance la plus courte# Consulter les annonces BGP réelles d'un préfixe (outils publics, aucune config locale requise)
whois -h whois.radb.net 203.0.113.0/24 # informations d'enregistrement du préfixe
curl -s "https://stat.ripe.net/data/routing-status/data.json?resource=8.8.8.0/24" | jq .
# Table de routage BGP typique (extrait, format Cisco-like pour la lecture)
# Network Next Hop AS Path
# 8.8.8.0/24 203.0.113.1 15169 i <- annoncé directement par l'AS 15169 (Google)
# 1.1.1.0/24 198.51.100.1 13335 i <- Cloudflare, un seul saut d'AS
# --- Attributs de sélection de route BGP (ordre de priorité simplifié) ---
# 1. LOCAL_PREF -> préférence interne la plus haute gagne (politique locale de l'AS)
# 2. AS_PATH -> le chemin le plus COURT en nombre d'AS traversés gagne
# 3. ORIGIN -> IGP préféré à EGP, préféré à incomplete
# 4. MED -> Multi-Exit Discriminator, indique la route préférée quand plusieurs liens existent
# vers le même AS voisin
# 5. eBGP > iBGP -> une route apprise d'un AS externe est préférée à une apprise en interne# Exemple de config BGP avec FRRouting (routeur logiciel open-source sur Linux)
router bgp 65001
neighbor 203.0.113.1 remote-as 65002
neighbor 203.0.113.1 description "Transit vers FAI A"
address-family ipv4 unicast
network 198.51.100.0/24
neighbor 203.0.113.1 route-map FILTRE-ENTRANT in
exit-address-family
route-map FILTRE-ENTRANT permit 10
match ip address prefix-list PREFIXES-AUTORISES# Vérifier l'état des sessions et routes BGP (FRR / vtysh)
vtysh -c "show bgp summary" # état des voisins BGP (Established, ou en échec)
vtysh -c "show bgp ipv4 unicast" # table de routage BGP complète
vtysh -c "show bgp ipv4 unicast 8.8.8.0/24" # détail des attributs pour un préfixe précis
# Route leak / hijack : un AS annonce à tort un préfixe qui ne lui appartient pas
# -> détournement possible de trafic, cause de nombreux incidents Internet majeurs
# RPKI (Resource Public Key Infrastructure) : signe cryptographiquement quel AS a le droit
# d'annoncer quel préfixe, pour s'en prémunir
sudo apt install routinator # validateur RPKI open-source
routinator vrps -f json # liste les enregistrements ROA validésRésumé
- BGP relie des Systèmes Autonomes entre eux ; la route choisie dépend d'attributs (LOCAL_PREF, AS_PATH, MED), pas de la distance physique.
- Un préfixe plus court en AS_PATH gagne par défaut, sauf si une politique locale (LOCAL_PREF) impose un autre choix.
- RPKI limite les détournements de route (BGP hijack) en signant cryptographiquement qui a le droit d'annoncer quel préfixe.
Exercices pratiques
Mission : départager deux routes BGP concurrentes et repérer un hijack
Objectif : Appliquer l'ordre de préférence des attributs BGP pour départager deux routes, et identifier un détournement de route suspect.
Contexte
Un routeur d'entreprise reçoit deux annonces BGP différentes pour le même préfixe de destination. Le réseau doit choisir laquelle utiliser selon les règles de préférence vues en cours (LOCAL_PREF, AS_PATH, ORIGIN, MED). Plus tard dans la journée, une annonce suspecte apparaît pour une plage d'adresses qui appartient légitimement à l'entreprise.