Configuration

Toute implémentation demande à minima à ce que les lignes suivantes soient configurées afin de définir un environnement basique de coopération avec le système.

protocol kernel {  
  persist; # Don't remove routes on BIRD shutdown
  scan time 20; # Scan kernel routing table every 20 seconds
  export all; # Default is export none
  learn; # Learn all alien routes from the kernel
  preference 254; # Protect kernel routes with a high preference
}    
protocol

device {

 
  scan time 10; # Scan interfaces every 10 seconds
}

   

 

Nous ne nous attarderons pas ici sur le détail de chaque ligne de configuration. Si vous désirez en obtenir des explications exhaustives, consultez la documentation en ligne de BIRD à l’adresse :

http://bird.network.cz/?get_doc&f=bird.html.

 

Les notions les plus importantes sont celle d'instance de protocole et celle de filtre.

Une instance de protocole peut être soit BGP soit RIP soit OSPF et définit une configuration appropriée. On peut définir plusieurs instances, éventuellement pour un même protocole.

Chaque instance de protocole est connectée à une table de routage interne à BIRD. Cette connexion est contrôlée par deux filtres qui peuvent accepter, refuser ou modifier les routes.

Le filtre d'exportation contrôle les routes transmises de la table de routage interne à BIRD vers le protocole, le filtre d'importation fait de même dans l'autre sens.

 

Attention à mettre en œuvre un filtrage précis des routes. L’utilisation d’export ou d’import complets de routes (par exemple, import all;) entre instances de protocole peut avoir des effets destructeurs.

Règles de syntaxe

- Le texte sur la ligne placé après # est un commentaire

- Le texte entouré de /* et */ est un commentaire

- Les blocs de plusieurs options sont placés entre accolades {}

- Chaque option se termine par un point-virgule ;

- La configuration est sensible à la casse.

 

La configuration suivante comporte deux erreurs de syntaxes.

 
1router id 192.168.97.219; 
2  
3protocol kernel 
4{ 
5persist;# Don't remove routes on bird shutdown
6scan time 20; # Scan kernel routing table every 20 seconds
7export all; # Default is export none
8 } 
9  
10protocol device 
11 { 
12scan time 10;# Scan interfaces every 10 seconds
13  
14protocol static 
15 { 
16route 0.0.0.0/0 via 10.200.0.1; 
17 route 172.16.0.0/24 drop 
18 } 
 

 

Message d’erreur 1


V50XXA0D0000073>enbird
bird: /usr/Firewall/ConfigFiles/Bird/bird.conf, line 14: syntax error

Si une accolade de fermeture de bloc est oubliée, l’erreur mentionnera la première ligne du bloc suivant, ligne ne correspondant pas à une commande autorisée du bloc non fermé.

Il faut donc insérer le caractère « } » en ligne 13

 

Message d’erreur 2


V50XXA0D0000073> enbird
bird: /usr/Firewall/ConfigFiles/Bird/bird.conf, line 18: syntax error

Il faut donc insérer le caractère « ; » à la fin de la ligne 17 sur l’exemple.

Interaction avec le routage Stormshield Network

Grâce à la configuration fournie par défaut sur les firewalls Stormshield Network, le routage du firewall est prioritaire sur le routage dynamique (préférence maximale de 254).

ATTENTION : limitation connue
Pendant la reconfiguration des routes du firewall, celles-ci sont temporairement effacées et BIRD/BIRD6 peut alors configurer ses propres routes. Il faut donc protéger le routage du firewall grâce à un filtre d'export sur le pseudo-protocole kernel.

 

Voici un exemple de filtre qui va protéger la route par défaut et la route statique 1.2.3.0/24 :


filter protect_Stormshield_routes
{
if (net = 0.0.0.0/0) || (net = 1.2.3.0/24)
then reject;
else accept;
}

protocol kernel
{
(...)
export filter protect_Stormshield_routes;
}

 

Routage dynamique prioritaire sur le routage Stormshield Network

Si l'on veut que le routage dynamique soit prioritaire sur le routage Stormshield Network, il faut que les routes obtenues par routage dynamique (protocole BGP, OSPF ou RIP) aient une valeur de préférence plus élevée que les routes obtenues par le système (pseudo-protocole kernel).

Il faut donc diminuer la valeur de préférence de kernel, par exemple à 1:


protocol kernel
{
(...)
preference 1;
}

 

Routage des interfaces du firewall

Si les interfaces du firewall sont configurées avec des sous-réseaux différents, et que l'on souhaite transmettre les sous-réseaux des interfaces via BIRD, on utilise le pseudo-protocole direct.

Par défaut, toutes les interfaces sont prises en compte. On peut restreindre l'ensemble des interfaces prises en compte grâce à l'attribut interface.


protocol direct
{
interface "-vlan*", "*"; # Exclut les VLANs
}