Pour faire le partage de routes avec Zayo, on utilise le protocole BGP. Pour cela, on utilise le logiciel Bird sur routeur-aurore.auro.re, à la fois en IPv4 et en IPv6.
La configuration du logiciel se trouve dans /etc/bird/bird.conf pour l'IPv4 et dans /etc/bird/bird6.conf pour l'IPv6. Dans la section générale de la configuration, on se contente de définir l'identifiant du routeur comme demandé par le protocole et la liste d'IP/ports sur lequel Bird va écouter.
router id 45.66.111.254;
listen bgp address 2001:1b48:2:103::d7:2 port 179;
Ensuite, la configuration est consituté d'une liste de protocoles. Dans chacun d'entres eux, on peut définir une règle import et export qui définit respectivement quelles routes bird importe du protocole et quelles routes bird exporte au protocole. On peut préciser un des trois all et none qui fonctionne comme leur nom l'indique et filter qui permet de faire des règles plus précises.
Le protocole kernel (noyau) régule quelles routes sont effectivement écrites dans le noyau :
protocol kernel {
persist; # permet de conserver les routes dans le noyau si le logiciel s'arrète
scan time 60;
import none;
export all;
}
Le protocole static permet de définir des routes pour les partager après :
protocol static {
route 2a09:6840::/29 reject;
}
Le protocole BGP permet d'établir une connexion avec un pair BGP pour faire de l'échange de route. Ici, on déclare notre numéro d'AS (43619), et on indique vouloir pairer avec Zayo qui a pour numéro d'AS 8218 sur l'IP 2001:1b48:2:103::d7:1, et on importe toutes les routes que Zayo veut nous donner (ie. les routes vers le reste du monde) tandis que notre routeur exporte les routes que nous connaissons (ici 2a09:6840::/29, déclarée dans le protocole static
).
protocol bgp zayo {
local as 43619;
neighbor 2001:1b48:2:103::d7:1 as 8218;
import all;
export all;
}
En IPv4, le fonctionnement est le même, sauf que nous écoutons sur l'adresse 83.167.52.69, on exporte la route statique 45.66.108.0/22 et Zayo a pour IP 83.167.52.68.
Dans le cadre de la convention Crans-Aurore, les routeurs de chacun échangent également leurs routes via le protocole BGP.
On indique alors écouter sur la bonne adresse :
listen bgp address 2a0c:700:2001::1 port 179;
Et on ajoute le protocole correspondant :
protocol bgp crans {
local as 43619;
neighbor 2a0c:700:2001::2 as 204515;
import all;
export all;
}
La configuration reste fortement similaire à celle de Zayo : on importe toutes les routes que le Crans nous communique (a priori 2a0c:700::/32 ou des sous-préfixes) et on exporte toutes celles connues, données par Zayo. Puisque tout est exporté vers Zayo, les routes annoncées par le Crans seront donc retransmises à Zayo, et ainsi le reste du monde saura qu'on peut passer par Aurore pour aller au Crans.
Point sécurité : Zayo n'accepte pas l'annonce de n'importe quel préfixe, afin d'éviter d'annoncer de fausses routes et complètement détruire le trafic Internet. Le Crans a donc autorisé l'AS d'Aurore dans la base de données du RIPE à annoncer ses préfixes, voir notamment le résultat de
whois 2a0c:700::/32
ouwhois 185.230.76.0/22
. Après contact auprès de leur part, Zayo a ajouté manuellement sur leur routeur BGP une règle autorisant Aurore à annoncer les routes vers le Crans.
Aurore fait entièrement confiance au Crans lors de l'annonce des routes, et suppose aucune action malveillante visant à annoncer de fausses routes à Aurore. Si Zayo n'accepterait pas l'export de telles routes, la configuration actuelle permet d'autoriser l'import de toutes les routes annoncées. Il est possible de filtrer quelles routes sont autorisées à être annoncées par un routeur, mais cela compliquerait la configuration.