critical] Ajout de borg.md

ceph
_shirenn 2022-08-03 17:05:08 +02:00
parent 611e83e4f5
commit 83667eefb4
1 changed files with 101 additions and 86 deletions

View File

@ -1,22 +1,19 @@
# Bird # Bird
Bird est un daemon de routage. Il supporte de nombreux protocoles de routages Bird est un daemon de routage. Il supporte de nombreux protocoles de routages
comme BGP and OSPF. Au crans on l'utilise pour faire de l'échange de route avec comme BGP and OSPF. Au crans on l'utilise pour faire de l'échange de route avec
notre FAI grace au protocole BGP. C'est donc le seul que je détaillerais ici notre FAI grace au protocole BGP. C'est donc le seul que je détaillerais ici
pour le moment. pour le moment.
## Principe ## Principe
### L'IANA, le RIPE et le CRANS, les IPs et les numéros d'AS ### L'IANA, le RIPE et le CRANS, les IPs et les numéros d'AS
Après l'adoption du protocole IP, il a été décidé que ce serait à l'IANA Après l'adoption du protocole IP, il a été décidé que ce serait à l'IANA
(Internet Assigned Number Authority) de se charger de l'allocation des (Internet Assigned Number Authority) de se charger de l'allocation des adresses
adresses IPs. Elle délègue cependant cette responsabilité à des entités IPs. Elle délègue cependant cette responsabilité à des entités régionales
régionales appelées RIR pour Regional Internet Registry. En Europe, c'est le appelées RIR pour Regional Internet Registry. En Europe, c'est le RIPE (pour
RIPE (pour Réseaux IP Européens, cocorico) qui remplit cette office. Les gens à Réseaux IP Européens, cocorico) qui remplit cette office. Les gens à qui un RIR
qui un RIR alloue des ressources est appelée un LIR pour Local Internet alloue des ressources est appelée un LIR pour Local Internet Registery. Et vous
Registery. Et vous savez quoi, depuis 2017 le crans est un LIR à part entière savez quoi, depuis 2017 le crans est un LIR à part entière \o/. Et le RIPE
\o/. Et le RIPE (notre RIR) nous a assigné les ressources suivantes : (notre RIR) nous a assigné les ressources suivantes :
- 185.230.76.0/22 - 185.230.76.0/22
- 2a0c:700::/32 - 2a0c:700::/32
- 204515 - 204515
@ -33,20 +30,19 @@ crans. Un numéro d'AS est identifiant unique alloué par un RIR et est utilisé
dans certains protocoles internet entre AS comme le protocole BGP. dans certains protocoles internet entre AS comme le protocole BGP.
### Le protocole BGP ### Le protocole BGP
Le protocole BGP est un protocole de routage qui permet l'échange de route entre Le protocole BGP est un protocole de routage qui permet l'échange de route entre
deux AS. TODO deux AS. J'avoue avoir un peu la flemme de rentrer dans les détails de comment
marche le protocole (si ça vous intéresse aller lire la RFC). Mais l'idée
### La bdd du RIPE générale est que deux AS pairs dans le réseaux vont s'échanger des routes qui
décrivent ce qu'ils sont capables d'atteindre. Si un AS recoit deux chemins
TODO différents pour la même route, il choisira celle qui a l'AS path le plus court,
c'est à dire celle qui passe par le moins d'AS différent avant d'arriver à bon
port.
## Installation ## Installation
On tire bird2 des repository debian : `sudo apt install bird2`.
On tire bird des repository debian : `sudo apt install bird`.
## Configuration ## Configuration
Le logiciel n'inclut pas de page de manuel détaillant les différentes options de Le logiciel n'inclut pas de page de manuel détaillant les différentes options de
configuration mais le [https://bird.network.cz/](site internet de bird) est très configuration mais le [https://bird.network.cz/](site internet de bird) est très
bien fourni en explication. bien fourni en explication.
@ -56,12 +52,9 @@ fonction des différents protocoles configurées en plus de quelques options de
configurations fournis générales. configurations fournis générales.
### Options de configurations générales ### Options de configurations générales
Les sockets sont définis au niveau de la configuration générale du logiciel avec Il est nécessaire de définir l'identifiant du routeur sur le lien. Cet
la directive `listen bgp [address ADDRESS] [port PORT]` où le comportement par identifiant en ipv6 comme en ipv4 doit être une adresse ipv4 qui pointe vers le
défaut est d'écouter sur toutes les adresses et sur le port 179 qui est le port routeur pour assurer son unicité.
prévue par l'IANA pour le protocole BGP. Il est aussi nécessaire de définir
l'identifiant du routeur sur le lien. Cet identifiant en ipv6 comme en ipv4 doit
être une adresse ipv4 qui pointe vers le routeur pour assurer son unicité.
### Le protocole kernel ### Le protocole kernel
Le protocole kernel permet de définir la politique que bird va utiliser pour Le protocole kernel permet de définir la politique que bird va utiliser pour
@ -70,25 +63,31 @@ définir quels routes bird va importer de la table de routage et exporter vers l
table de routage. Au crans, on choisit assez simplement d'insérer toutes les table de routage. Au crans, on choisit assez simplement d'insérer toutes les
routes que bird connait dans le noyau et de ne rien importer du noyau. L'option routes que bird connait dans le noyau et de ne rien importer du noyau. L'option
scan time permet de régler la fréquence à laquelle bird lira le contenu de la scan time permet de régler la fréquence à laquelle bird lira le contenu de la
table de routage du kernel. table de routage du kernel. Il est possible d'être plus précis⋅e sur les routes
importé et exporté du protocol en utilisant des filtres.
``` ```
protocol kernel { protocol kernel {
scan time 60; ipv4 {
import none; import none;
export all; export all;
};
}
protocol kernel {
ipv6 {
import none;
export all;
};
} }
``` ```
### Le protocole device ### Le protocole device
C'est pas vraiment un protocole, il permet simplement à bird de lister les C'est pas vraiment un protocole, il permet simplement à bird de lister les
interfaces du routeur. L'option `scan time` permet de régler la fréquence entre interfaces du routeur.
deux listings des interfaces disponibles.
``` ```
protocole device { protocole device {}
scan time 60;
}
``` ```
### Le protocole static ### Le protocole static
@ -105,29 +104,45 @@ route vers les éléments de ce bloc d'ips. Par exemple,
``` ```
protocol static { protocol static {
route 185.230.76.0/22 reject; ipv4;
route 185.230.76.0/22 reject;
}
protocol static {
ipv6;
route 2a0c:700::/32 unreachable;
} }
``` ```
### Le protocol BGP ### Le protocol BGP
Comme expliqué au dessus, le protocole BGP permet de faire de l'échange de Comme expliqué au dessus, le protocole BGP permet de faire de l'échange de
routes entre différents AS. Il faut spécifier notre numéro d'AS, le numéro d'AS routes entre différents AS. Il faut spécifier notre numéro d'AS, le numéro d'AS
du paire et l'adresse sur laquelle on souhaite le contacter. Il est possible de du pair et l'adresse sur laquelle on souhaite le contacter. Il est possible de
préciser avec quelle adresse on peut le contacter et régler le nombre de fois préciser avec quelle adresse on veut le contacter. On peut là aussi définir des
qu'on autorise notre numéro d'AS à apparaitre dans un AS path. On peut là aussi filtres d'import et d'exports de routes. Par exemple,
définir des filtres d'import et d'exports de routes. Par exemple,
``` ```
protocol bgp zayo { protocol bgp aurore4 {
# Définit le numéro d'AS local et l'ip avec laquelle on souhaite contacter description "BGP4 session with example";
# notre pair (optionel) local 203.0.113.1 as crans_asn;
local 185.230.79.253 as 204515; neighbor 203.0.113.2 as example_asn;
# Permet à notre numéro d'AS d'apparaitre au plus une fois dans l'AS path strict bind;
allow local as 1;
# Définit l'adresse et le numero d'AS du pair avec qui on souhaite échanger ipv4 {
# des routes import all;
neighbor 158.255.113.72 as 8218; export where source ~ [ RTS_STATIC ];
import all; };
export all; }
protocol bgp aurore6 {
description "BGP6 session with example";
local 2001:db8:28::1 as crans_asn;
neighbor 2001:db8::28::2 as example_asn;
strict bind;
ipv6 {
import all;
export where source ~ [ RTS_STATIC ];
};
} }
``` ```