Configuration de Bird
Pour commencer, je joins à mon article Patrice Conil qui m’a grandement aidé pour configurer ce service qui dispose juste d’une doc sur internet (ici), c’est pour cela que je me suis dit qu’il serait bien de mettre à disposition un exemple de configuration qui fonctionne.
Petite explication:
J’ai un réseau local en 192.168.160.0 et deux sous réseaux (192.168.210.0 et 192.168.220.0) dont une machine qui fait office de routeur avec 3 interfaces connectées sur les 3 réseaux.
Mon problème, quand je suis sur une machine du réseau local, je ne peux pas accéder aux machines des 2 sous-réseaux, donc il faut que je précise la route sur ma machine local, mais cela est simple si la route est toujours la même mais si prochainement j’ ajoute un nouveau sous réseau, il faut ajouter une nouvelle route donc la meilleure solution est d’installer un démon qui récupère tout seul la meilleure route à prendre pour accéder aux sous-réseaux.
Donc sous les conseils de Patrice Conil, j’installe « Bird » sur la machine routeur (qui va faire un broadcast sur le réseau pour distribuer les routes vers les sous-réseaux) et sur la machine locale (qui va écouter sur le réseau pour récupérer les routes vers les sous-réseaux).
Coté machine routeur (Debian4) :
# apt-get install bird
Dans /etc/bird.conf
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
}
protocol device {
scan time 10; # Scan interfaces every 10 seconds
}
protocol direct {
export all;
}
protocol rip {
export all;
import all;
port 1520;
authentication plaintext;
password « text »;
honor always;
interface « eth* »{ mode broadcast; };
}
Démarrer le service:
# /etc/init.d/bird start
Coté machine locale (Ubuntu 8.04) :
# sudo apt-get install bird
Je veux récupérer toutes les routes sauf la route pour mon réseau local (192.168.160.0), car elle passe par un autre routeur.
# sudo gedit /etc/bird.conf
log « /var/log/bird.log » all;
debug protocols all;
protocol kernel{
learn;
import all;
export all;
}
protocol device{
}
protocol rip {
import filter {
if net ~ [ 192.168.160.0/24 ] then { # Only remote networks
reject;
}
else accept;
};
# export all;
port 1520;
authentication plaintext;
password « text »;
honor neighbor;
interface « eth* »{mode broadcast;};
}
On démarre le service Bird et on fait un tail sur le fichier log de bird et au bout de 30s, et on voit
qu’il écoute bien sur le réseau et qu’il récupère bien les routes.
# sudo /etc/init.d/bird start
# tail -f /var/log/bird.log
10-02-2009 18:28:34 <TRACE> rip1: Listening on eth0, port 1520, mode broadcast (192.168.160.255)
10-02-2009 18:28:42 <TRACE> rip1: Broadcasting routing table to eth0
10-02-2009 18:28:44 <TRACE> device1: Scanning interfaces
10-02-2009 18:28:49 <TRACE> rip1: Broadcasting routing table to eth0
10-02-2009 18:28:51 <TRACE> rip1: block: 192.168.160.61 tells me: 192.168.160.0/24 available, metric 1…
10-02-2009 18:28:51 <TRACE> rip1 > added [best] 192.168.160.0/24 via 192.168.160.61 on eth0
10-02-2009 18:28:51 <TRACE> kernel1 < added 192.168.160.0/24 via 192.168.160.61 on eth0
10-02-2009 18:28:51 <TRACE> rip1 < forced accept by protocol 192.168.160.0/24 via 192.168.160.61 on eth0
10-02-2009 18:28:51 <TRACE> rip1 < added 192.168.160.0/24 via 192.168.160.61 on eth0
10-02-2009 18:28:51 <TRACE> rip1: block: 192.168.160.61 tells me: 192.168.210.0/24 available, metric 1…
10-02-2009 18:28:51 <TRACE> rip1 > added [best] 192.168.210.0/24 via 192.168.160.61 on eth0
10-02-2009 18:28:51 <TRACE> kernel1 < added 192.168.210.0/24 via 192.168.160.61 on eth0
5)
10-02-2009 18:28:51 <WARN> Netlink: No such process
10-02-2009 18:28:51 <TRACE> rip1 < forced accept by protocol 192.168.210.0/24 via 192.168.160.61 on eth0
10-02-2009 18:28:51 <TRACE> rip1 < added 192.168.210.0/24 via 192.168.160.61 on eth0
10-02-2009 18:28:51 <TRACE> rip1: block: 192.168.160.61 tells me: 192.168.220.0/24 available, metric 1…
10-02-2009 18:28:51 <TRACE> rip1 > added [best] 192.168.220.0/24 via 192.168.160.61 on eth0
10-02-2009 18:28:51 <TRACE> kernel1 < added 192.168.220.0/24 via 192.168.160.61 on eth0
10-02-2009 18:28:51 <WARN> Netlink: No such process
10-02-2009 18:28:51 <TRACE> rip1 < forced accept by protocol 192.168.220.0/24 via 192.168.160.61 on eth0
10-02-2009 18:28:51 <TRACE> rip1 < added 192.168.220.0/24 via 192.168.160.61 on eth0
Puis pour vérifier nous tapons la commande route:
# sudo route
192.168.220.0 192.168.160.61 255.255.255.0 UG 0 0 0 eth0
192.168.160.0 * 255.255.255.0 U 0 0 0 eth0
192.168.110.0 192.168.160.61 255.255.255.0 UG 0 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth0
default router-ebm 0.0.0.0 UG 0 0 0 eth0
Merci encore à Patrice Conil pour son aide.
J’espère que cet article pourra aider quelques personnes.
