Configurer le routage dynamique
La configuration de BIRD v2 est réalisée dans le module Configuration > Réseau > Routage dynamique > onglet BIRD v2 (INACTIF).
Toute mise en œuvre demande à minima à ce que les lignes suivantes soient configurées afin de définir un environnement basique de coopération avec le système.
# WARNING : There is no implicit filtering rules implemented in SNS which allow to use various BIRD protocols # There is more information in Technical Note > Bird Dynamic Routing # Enable extra logs # Possible values are : # off No extra log # all All extra log # adj Log neighbors state changes # route Log route addition/deletion # or a combination of adj and route separated by '|' # IE. sns_log adj|route; sns_log off; # default is "no extra log" # This pseudo-protocol watches all interface up/down events. protocol device { scan time 10; # Scan interfaces every 10 seconds } # The direct protocol automatically generates device routes to # all network interfaces. protocol direct { ipv4; # Minimal IPv4 default channel config } # This pseudo-protocol performs synchronization between BIRD's routing # tables and the kernel. protocol kernel { learn; # Learn all alien routes from the kernel persist; # Don't remove routes on bird shutdown scan time 20; # Scan kernel routing table every 20 seconds ipv4 { import all; # Default is import all export none; # THIS CONFIGURATION MUST BE ADJUSTED preference 254; # Protect existing routes }; } # This pseudo-protocol is used to configure static routes. protocol static MyStaticRoutes { ipv4; # route 0.0.0.0/0 via 173.1.1.1; # Default route # route 192.168.250.0/24 via "out"; # Declare network via username interface # route 192.168.251.0/24 via 173.1.1.2; # Declare network via specific gateway # route 192.168.252.0/24 via 173.1.1.3 bfd; # Declare network via specific gateway with BFD enabled }
Nous ne nous attardons 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 (anglais uniquement).
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. Vous pouvez éventuellement définir plusieurs instances 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.
IMPORTANT
Il est nécessaire d'être précis lors de la mise en œuvre d'un filtrage de routes.
L’utilisation d’export ou d’import complets de routes (par exemple, import all;) entre instances de protocole peut avoir des effets destructeurs.
Connaître les 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.
Vérifier une configuration
L'exemple décrit ci-dessous indique comment vérifier une configuration présentant deux erreurs de syntaxe.
La configuration suivante est saisie dans la fenêtre de configuration :
# WARNING : There is no implicit filtering rules implemented in SNS which allow to use various BIRD protocols # There is more information in Technical Note > Bird Dynamic Routing sns_log off; # default is "no extra log" router id 192.168.97.219; protocol kernel { persist; # Don't remove routes on bird shutdown scan time 20; # Scan kernel routing table every 20 seconds ipv4 { export all; # THIS CONFIGURATION MUST BE ADJUSTED preference 254; # Protect existing routes }; learn; # Learn all alien routes from the kernel protocol device { scan time 10 # Scan interfaces every 10 seconds }
Cliquez sur le bouton Vérifier la configuration. La console de vérification située au bas de l'écran indique la première erreur rencontrée.
Le numéro de ligne 15 s'affiche également en rouge dans la configuration.
Explication : si une accolade de fermeture de bloc est oubliée, l’erreur mentionne 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 fin de ligne précédente.
Une fois cette première erreur corrigée, cliquez de nouveau sur le bouton Vérifier la configuration pour afficher l'erreur de syntaxe suivante dans la console de vérification (avec le numéro de ligne correspondant à l'erreur surligné en rouge dans la configuration) :
Explication : il faut insérer le caractère « ; » à la fin de la ligne précédente (ligne 16 sur cet exemple).
Interagir 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
Pendant la reconfiguration des routes du firewall, celles-ci sont temporairement effacées et BIRD peut alors configurer ses propres routes. Vous devez protéger le routage du firewall grâce à un filtre d'export sur le pseudo-protocole kernel.
Voici un exemple de filtre qui protège 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) the reject; else accept; } protocol kernel { learn; # Learn all alien routes from the kernel persist; # Don't remove routes on bird shutdown scan time 20; # Scan kernel routing table every 20 seconds ipv4 { import all; # Default is import all export filter protect_Stormshield_routes;preference 254; # Protect existing routes }; }
Routage dynamique prioritaire sur le routage Stormshield Network
Dans la table du routage dynamique BIRD, si vous voulez 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). En revanche, cela n'impacte pas la table de routage du firewall lui-même (affichable par la commande netstat -r).
Vous devez donc diminuer la valeur de préférence de kernel, par exemple à 1 :
protocol kernel { (...) ipv4 { (...) preference 1; # Protect existing routes }; }
Routage des interfaces du firewall
Si les interfaces du firewall sont configurées avec des sous-réseaux différents, et que vous souhaitez transmettre les sous-réseaux des interfaces via BIRD, utilisez le pseudo-protocole direct.
Par défaut, toutes les interfaces sont prises en compte. Vous pouvez restreindre l'ensemble des interfaces prises en compte grâce à l'attribut interface.
protocol direct { interface "-vlan*","*"; }