wiki/HowtoOpenBSD/OSPF.md

265 lines
7.8 KiB
Markdown
Raw Normal View History

2016-12-29 11:25:39 +01:00
**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
# Howto OSPF sous OpenBSD
<http://www.openbsd.org/papers/linuxtag06-network.pdf>
IPv4 :
<http://man.openbsd.org/OpenBSD-current/man8/ospfd.8>
<http://man.openbsd.org/OpenBSD-current/man5/ospfd.conf.5>
IPv6 :
<http://man.openbsd.org/OpenBSD-current/man8/ospf6d.8>
<http://man.openbsd.org/OpenBSD-current/man5/ospf6d.conf.5>
OSPF est un IGP grâce auquel chaque routeur a une vue complète de la topologie du réseau.
## Configuration
OSPFD est installé par défaut sous OpenBSD. En IPv4, il se configure dans /etc/ospfd.conf. En IPv6, on passera par /etc/ospf6d.conf.
Pour lancer définitivement OSPFD, on modifiera /etc/rc.conf.local :
~~~
2017-01-03 23:47:22 +01:00
# rcctl enable ospfd ospf6d
2016-12-29 11:25:39 +01:00
~~~
### Exemple de configuration
Prenons 3 routeurs, placés tous les trois dans la zone 0.0.0.0, dite de backbone.
Ces 3 routeurs ont un lien entre eux via l'interface em0, et 2 d'entre eux ont une interface externe CARP partagée pour le réseau 192.0.0.0/24.
~~~
130.0.0.1/24
+---em1---+
| |
| |
| |
+---em0---+
.1
10.0.0.0/24
.2 .3
+---em0---+ +---em0---+
| | | |
| | | |
| BACKUP | | MASTER |
+---------+ +---------+
| |
+-----carp0-----+
192.0.0.1/24
~~~
Voici le _ospfd.conf_ du routeur ayant l'adresse IP 10.0.0.1 :
~~~
# global configuration
router-id 10.0.0.1
fib-update yes
rfc1583compat no
spf-delay msec 1000
spf-holdtime msec 5000
# area
area 0.0.0.0 {
auth-type crypt
auth-md 1 "PASS"
auth-md-keyid 1
interface em0 {
metric 10
retransmit-interval 5
router-dead-time 40
hello-interval 10
router-priority 1
transmit-delay 1
}
interface em1 {
metric 10
passive
}
}
~~~
Voici le _ospfd.conf_ du routeur ayant l'adresse IP 10.0.0.2 :
~~~
# global configuration
router-id 10.0.0.2
fib-update yes
rfc1583compat no
spf-delay msec 1000
spf-holdtime msec 5000
# area
area 0.0.0.0 {
auth-type crypt
auth-md 1 "PASS"
auth-md-keyid 1
interface em0 {
metric 10
retransmit-interval 5
router-dead-time 40
hello-interval 10
router-priority 1
transmit-delay 1
}
interface carp0 {
metric 10
passive
}
}
~~~
Et voici le _ospfd.conf_ du routeur ayant l'adresse IP 10.0.0.3 :
~~~
# global configuration
router-id 10.0.0.3
fib-update yes
rfc1583compat no
spf-delay msec 1000
spf-holdtime msec 5000
# area
area 0.0.0.0 {
auth-type crypt
auth-md 1 "PASS"
auth-md-keyid 1
interface em0 {
metric 10
retransmit-interval 5
router-dead-time 40
hello-interval 10
router-priority 1
transmit-delay 1
}
interface carp0 {
metric 10
passive
}
}
~~~
L'authentification n'est possible que sous IPv4, puisqu'on passera par IPsec pour IPv6.
Ici, le 3ème routeur sera le DR (router-id le plus élevé) et le 2ème sera le BDR. Cela signifie que chaque routeur enverra ses routes aux DR et BDR, avant que le DR ne les redistribue à tout le monde.
Si on veut garder les adresses IP des machines comme router-id tout en ne désignant pas celui qui a le router-id le plus élevé comme DR, on peut changer l'option router-priority.
Les interfaces em0 sont donc celles sur lesquels les paquets OSPF sont envoyés afin d'établir des adjacences.
Toutes les interfaces externes sont annoncées en tant que passives pour qu'aucun paquet ne soit envoyé en dehors de notre réseau. Les interfaces carp n'ont pas besoin d'être explicitées comme passives car OSPFD les verra toujours comme telles.
Du côté CARP, disons que le routeur 10.0.0.3 est master et 10.0.0.2 est backup. Alors OSPFD verra l'état CARP et seul le master enverra le réseau 192.0.0.0/24 aux autres routeurs.
Les paramètres globaux fib-update, rfc1583compat, spf-delay, spf-holdtime et les paramètres d'interfaces metric, retransmit-interval, router-dead-time, hello-interval, router-priority et transmit-delay sont laissés à leur valeur par défaut et n'ont donc pas obligatoirement besoin d'être donnés.
### Utilisation
Voir un résumé des infos d'OSPFD :
~~~
# ospfctl show
Router ID: 10.0.0.1
Uptime: 00:01:10
RFC1583 compatibility flag is disabled
SPF delay is 1000 msec(s), hold time between two SPFs is 5000 msec(s)
Number of external LSA(s) 0 (Checksum sum 0x0)
Number of areas attached to this router: 1
Area ID: 0.0.0.0
Number of interfaces in this area: 2
Number of fully adjacent neighbors in this area: 2
SPF algorithm executed 4 time(s)
Number LSA(s) 4 (Checksum sum 0x1ea2c)
~~~
Voir un résumé des infos sur les voisins :
~~~
# ospfctl show neighbor
ID Pri State DeadTime Address Iface Uptime
10.0.0.2 1 FULL/BCKUP 00:00:31 10.0.0.2 em0 00:00:41
10.0.0.3 1 FULL/DR 00:00:31 10.0.0.3 em0 00:00:43
~~~
Voir la FIB (Forwarding Information Base) :
~~~
# ospfctl show fib
flags: * # valid, O OSPF, C # Connected, S Static
Flags Prio Destination Nexthop
*C 4 10.0.0.0/26 link#6
*O 32 192.0.0.0/24 10.0.0.3
*C 4 130.0.0.0/24 link#5
*C 0 127.0.0.0/8 link#0
*S 8 127.0.0.0/8 127.0.0.1
* 1 127.0.0.1/32 127.0.0.1
*S 8 224.0.0.0/4 127.0.0.1
~~~
En particulier la ligne **O 32 192.0.0.0/24 10.0.0.3* indiquant que l'on passe par le master pour joindre le réseau 192.0.0.0/24 obtenu par OSPF.
Voir seulement les routes OSPF de la FIB :
~~~
# ospfctl show fib ospf
flags: * # valid, O OSPF, C # Connected, S Static
Flags Prio Destination Nexthop
*O 32 192.0.0.0/24 10.0.0.3
~~~
Il est également possible de n'afficher que les routes statiques en remplaçant _ospf_ par _static_, ou encore d'utiliser les mots clefs _connected_ ou _interface_, ou de spécifier directement une adresse de destination.
Voir l'état des interfaces :
Sur 10.0.0.1, sans carp :
~~~
# ospfctl show interfaces
Interface Address State HelloTimer Linkstate Uptime nc ac
em1 130.0.0.1/24 DOWN - active 00:00:00 0 0
em0 10.0.0.1/24 OTHER 00:00:08 active 00:18:06 2 2
~~~
Sur 10.0.0.2, avec un carp backup :
~~~
# ospfctl show interfaces
Interface Address State HelloTimer Linkstate Uptime nc ac
carp0 192.0.0.1/24 DOWN - backup 00:00:00 0 0
em0 10.0.0.2/24 BCKUP 00:00:08 active 00:18:06 2 2
~~~
Sur 10.0.0.3, avec un carp master :
~~~
# ospfctl show interfaces
Interface Address State HelloTimer Linkstate Uptime nc ac
carp0 192.0.0.1/24 DOWN - master 00:00:00 0 0
em0 10.0.0.3/24 DR 00:00:08 active 00:18:06 2 2
~~~
En remplaçant ospfctl par ospf6ctl pour vérifier les paramètres IPv6.
Pour que les adjacences se fassent, penser à ajouter la règle dans pf.conf afin que le traffic des multicast soit autorisé.
En IPv4, ils communiquent de leur adresse ip em0 vers les multicast 224.0.0.5 et 224.0.0.6 :
~~~
pass quick on em0 proto ospf from 10.0.0.0/24 to {224.0.0.5 224.0.0.6}
~~~
En IPv6, ils communiquent de leur adresse ip link-local em0 vers les multicast ff02::5 et ff02::6 :
~~~
pass quick on em0 proto ospf from fe80::/64 to {ff02::5 ff02::6}
2017-01-03 23:47:22 +01:00
~~~