6. Publier les routes par défaut via OSPF

Dans la topologie logique étudiée, le routeur R1 dispose d'un lien montant vers l'Internet. On peut donc considérer que ce lien est la route par défaut vers tous les réseaux non connus de l'aire OSPF contenant les trois routeurs.

Il est possible de publier une route par défaut via le protocole OSPF depuis le routeur R1 vers les routeurs R2 et R3.

Voici, pour mémoire, une copie des bases de données OSPFv2 et OSPFv3 avant la mise en place de la publication de route par défaut. On reconnaît les LSAs (Link State Advertisement)) de type 1 et 2 qui correspondent respectivement aux annonces de routeurs et de réseaux.

R1-rouge# sh ip ospf database

       OSPF Router with ID (7.0.4.1)

                Router Link States (Area 0.0.0.0)

Link ID         ADV Router      Age  Seq#       CkSum  Link count
7.0.4.1        7.0.4.1           73 0x80000009 0xe125 3
7.0.4.2        7.0.4.2          415 0x80000008 0x9a63 3
7.0.4.3        7.0.4.3          419 0x80000008 0xf302 3

                Net Link States (Area 0.0.0.0)

Link ID         ADV Router      Age  Seq#       CkSum
10.2.90.2      7.0.4.2          415 0x80000001 0x5c76
10.2.91.3      7.0.4.3          420 0x80000001 0x4f7f
10.2.93.3      7.0.4.3          420 0x80000001 0x4388
R1-rouge# sh ipv6 ospf6 database

        Area Scoped Link State Database (Area 0)

Type LSId           AdvRouter       Age   SeqNum                        Payload
Rtr  0.0.0.0        7.0.6.1         182 80000005                7.0.6.2/0.0.0.6
Rtr  0.0.0.0        7.0.6.1         182 80000005                7.0.6.3/0.0.0.6
Rtr  0.0.0.0        7.0.6.2         530 80000003                7.0.6.2/0.0.0.6
Rtr  0.0.0.0        7.0.6.2         530 80000003                7.0.6.3/0.0.0.7
Rtr  0.0.0.0        7.0.6.3         534 80000003                7.0.6.3/0.0.0.6
Rtr  0.0.0.0        7.0.6.3         534 80000003                7.0.6.3/0.0.0.7
Net  0.0.0.6        7.0.6.2         529 80000001                        7.0.6.2
Net  0.0.0.6        7.0.6.2         529 80000001                        7.0.6.1
Net  0.0.0.6        7.0.6.3         534 80000001                        7.0.6.3
Net  0.0.0.6        7.0.6.3         534 80000001                        7.0.6.1
Net  0.0.0.7        7.0.6.3         538 80000001                        7.0.6.3
Net  0.0.0.7        7.0.6.3         538 80000001                        7.0.6.2
INP  0.0.0.0        7.0.6.1        3600 80000003          2001:678:3fc:124::/64
INP  0.0.0.0        7.0.6.2         530 80000003          2001:678:3fc:126::/64
INP  0.0.0.0        7.0.6.3         534 80000003          2001:678:3fc:127::/64

        I/F Scoped Link State Database (I/F enp0s2.290 in Area 0)

Type LSId           AdvRouter       Age   SeqNum                        Payload
Lnk  0.0.0.7        7.0.6.1         577 80000001        fe80::baad:caff:fefe:64
Lnk  0.0.0.6        7.0.6.2         579 80000001        fe80::baad:caff:fefe:65

        I/F Scoped Link State Database (I/F enp0s2.291 in Area 0)

Type LSId           AdvRouter       Age   SeqNum                        Payload
Lnk  0.0.0.8        7.0.6.1         577 80000001        fe80::baad:caff:fefe:64
Lnk  0.0.0.6        7.0.6.3         579 80000001        fe80::baad:caff:fefe:66

        AS Scoped Link State Database

Type LSId           AdvRouter       Age   SeqNum                        Payload

Q15.

Quelle est la condition préalable à respecter pour que le routeur R1 soit en mesure de publier une route par défaut via le protocole de routage OSPF ?

À partir des tables de routage relevées dans la Section 5, « Configurer les démons OSPFv2 et OSPFv3 », repérer le routeur qui dispose d'un accès vers un réseau qui n'appartient pas à la topologie triangle.

ip route ls default
ip -6 route ls default
sh ip route kernel
sh ipv6 route kernel

Une route par défaut doit exister avant d'être injectée dans une aire OSPF. Dans notre cas, une route statique par défaut suffit à respecter la condition préalable.

Sur la maquette, on valide la présence des routes par défaut à l'aide la commande ip au niveau système.

etu@R1-rouge:~$ ip route ls default
default via 10.141.0.161 dev enp0s2.300 onlink
etu@R1-rouge:~$ ip -6 route ls default
default via 2001:678:3fc:12c::1 dev enp0s2.300 metric 1024 onlink pref medium

Au niveau de la console vtysh, ces même routes correspondent aux entrées marquées K pour kernel.

R1-rouge# sh ip route kernel
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

K>* 0.0.0.0/0 [0/0] via 10.141.0.161, enp0s2.300 onlink, 00:15:22
R1-rouge# sh ipv6 route kernel
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

K>* ::/0 [0/1024] via 2001:678:3fc:12c::1, enp0s2.300 onlink, 00:17:04

Q16.

Quelle est l'instruction à utiliser pour publier une route par défaut via le protocole de routage OSPFv2 ?

Parmi toutes les méthodes de redistribution de routes disponibles avec le protocole OSPFv2, il en existe une dédiée à l'injection de route par défaut dans une aire normale. Consulter le guide FRRouting User Guide.

Rechercher le mot clé redistribution dans la section OSPF route-map.

L'instruction qui correspond à la redistribution de route par défaut à destination des autres routeurs de l'aire OSPF est la suivante.

default-information originate

On doit l'appliquer dans la section router ospf de la configuration du routeur R1.

R1-rouge# conf t
R1-rouge(config)# router ospf
R1-rouge(config-router)# default-information originate
R1-rouge(config-router)# ^Z
R1-rouge#

Une fois cette instruction exécutée, le rôle du routeur R1 change. Il devient Autonomous System Boundary Router ou ASBR. Les bases de données sont complétées avec des LSAs de type 5.

R1-rouge# sh ip ospf database external

       OSPF Router with ID (7.0.4.1)

                AS External Link States

  LS age: 353
  Options: 0x2  : *|-|-|-|-|-|E|-
  LS Flags: 0xb
  LS Type: AS-external-LSA
  Link State ID: 0.0.0.0 (External Network Number)
  Advertising Router: 7.0.4.1
  LS Seq Number: 80000001
  Checksum: 0xe5d6
  Length: 36

  Network Mask: /0
        Metric Type: 2 (Larger than any link state path)
        TOS: 0
        Metric: 10
        Forward Address: 0.0.0.0
        External Route Tag: 0

On voit apparaître une nouvelle rubrique baptisée AS External Link States. Ce nouveau rôle pour le routeur R1 apparaît aussi lorsque l'on affiche l'état de l'instance de routage OSPFv2.

R1-rouge# sh ip ospf
 OSPF Routing Process, Router ID: 7.0.4.1
 Supports only single TOS (TOS0) routes
 This implementation conforms to RFC2328
 RFC1583Compatibility flag is disabled
 OpaqueCapability flag is disabled
 Initial SPF scheduling delay 0 millisec(s)
 Minimum hold time between consecutive SPFs 50 millisec(s)
 Maximum hold time between consecutive SPFs 5000 millisec(s)
 Hold time multiplier is currently 1
 SPF algorithm last executed 8m33s ago
 Last SPF duration 93 usecs
 SPF timer is inactive
 LSA minimum interval 5000 msecs
 LSA minimum arrival 1000 msecs
 Write Multiplier set to 20
 Refresh timer 10 secs
 Maximum multiple paths(ECMP) supported  256
 This router is an ASBR (injecting external routing information)
 Number of external LSA 1. Checksum Sum 0x0000e5d6
 Number of opaque AS LSA 0. Checksum Sum 0x00000000
 Number of areas attached to this router: 1
 All adjacency changes are logged
 Area ID: 0.0.0.0 (Backbone)
   Number of interfaces in this area: Total: 2, Active: 2
   Number of fully adjacent neighbors in this area: 2
   Area has no authentication
   SPF algorithm executed 11 times
   Number of LSA 6
   Number of router LSA 3. Checksum Sum 0x0002501c
   Number of network LSA 3. Checksum Sum 0x0000e980
   Number of summary LSA 0. Checksum Sum 0x00000000
   Number of ASBR summary LSA 0. Checksum Sum 0x00000000
   Number of NSSA LSA 0. Checksum Sum 0x00000000
   Number of opaque link LSA 0. Checksum Sum 0x00000000
   Number of opaque area LSA 0. Checksum Sum 0x00000000

Le routeur R1, est maintenant à la frontière entre deux systèmes autonomes. Il est responsable de l'émission des LSAs de type 5 à destination des autres routeurs de l'aire.

Ici, R1 possède une route statique définie au niveau système vers l'Internet. Cette route statique est redistribuée R2 et R3. Cette route apparaît comme une entrée de type E2 dans les tables de routage de ces routeurs.

L'indicateur E2 correspond au type par défaut des routes apprises par le biais de la redistribution. La métrique est un point important à considérer avec les routes de type E2. Ces routes ne présentent que le coût du chemin allant du routeur ASBR vers le réseau de destination ; ce qui ne correspond pas au coût réel du chemin à l'intérieur de l'aire OSPF.

Q17.

Quelle est l'instruction à utiliser pour publier une route par défaut via le protocole de routage OSPFv3 ?

Reprendre la même démarche de la question précédente avec le protocole OSPFv3. Consulter le guide FRRouting User Guide.

Rechercher le mot clé redistribution dans la section OSPF6 route-map.

L'instruction est identique pour les deux versions du protocole OSPF.

default-information originate

On doit l'appliquer dans la section router ospf6 de la configuration du routeur R1.

R1-rouge# conf t
R1-rouge(config)# router ospf6
R1-rouge(config-ospf6)# default-information originate
R1-rouge(config-ospf6)# ^Z
R1-rouge#

Une fois cette instruction exécutée, le rôle du routeur R1 change. Il devient Autonomous System Boundary Router ou ASBR. Les bases de données sont complétées avec des LSAs de type 5.

R1-rouge# sh ipv6 ospf6 database as-external

        AS Scoped Link State Database

Type LSId           AdvRouter       Age   SeqNum              Payload
ASE  0.0.0.1        7.0.6.1         797 80000001                   ::

On voit apparaître une nouvelle rubrique baptisée AS Scoped Link State Database. Ce nouveau rôle pour le routeur R1 apparaît aussi lorsque l'on affiche l'état de l'instance de routage OSPFv3.

R1-rouge# sh ipv6 ospf6
 OSPFv3 Routing Process (0) with Router-ID 7.0.6.1
 Running 00:56:23
 LSA minimum arrival 1000 msecs
 Maximum-paths 256
 Initial SPF scheduling delay 0 millisec(s)
 Minimum hold time between consecutive SPFs 50 millsecond(s)
 Maximum hold time between consecutive SPFs 5000 millsecond(s)
 Hold time multiplier is currently 1
 SPF algorithm last executed 00:24:40 ago, reason R+, R-
 Last SPF duration 0 sec 156 usec
 SPF timer is inactive
 Number of AS scoped LSAs is 1
 Number of areas in this router is 1
 All adjacency changes are logged

 Area 0
     Number of Area scoped LSAs is 8
     Interface attached to this area: enp0s2.290 enp0s2.291
SPF last executed 1480.916201s ago

Q18.

Comment la publication de route par défaut apparaît-elle sur les autres routeurs de la topologie triangle ?

Relevez, dans la console vtysh, la métrique de la route par défaut sur les routeurs qui n'ont pas une connexion directe vers l'Internet.

Les instructions à utiliser pour traiter cette question entrent dans la liste suivante.

show ip route A.B.C.D/MM
show ipv6 route A:B:C::D/MM
show ip ospf route
show ipv6 ospf6 route

En prenant l'exemple du routeur R2, on retrouve les informations suivantes.

  • Vue de la table de routage :

    R2-vert# sh ip route 0.0.0.0
    Routing entry for 0.0.0.0/0
      Known via "ospf", distance 110, metric 10, best
      Last update 00:29:15 ago
      * 10.2.90.1, via enp0s2.290, weight 1
    R2-vert# sh ipv6 route ::/0
    Routing entry for ::/0
      Known via "ospf6", distance 110, metric 10, best
      Last update 00:30:32 ago
      * fe80::baad:caff:fefe:64, via enp0s2.290, weight 1
  • Vue de la base de topologie OSPF :

    R2-vert# sh ip ospf route
    ============ OSPF network routing table ============
    N    10.2.90.0/29          [1] area: 0.0.0.0
                               directly attached to enp0s2.290
    N    10.2.91.0/29          [2] area: 0.0.0.0
                               via 10.2.90.1, enp0s2.290
                               via 10.2.93.3, enp0s2.293
    N    10.2.93.0/29          [1] area: 0.0.0.0
                               directly attached to enp0s2.293
    N    10.2.94.0/24          [1] area: 0.0.0.0
                               directly attached to sw-vlan294
    N    10.2.95.0/24          [2] area: 0.0.0.0
                               via 10.2.93.3, enp0s2.293
    
    ============ OSPF router routing table =============
    R    7.0.4.1               [1] area: 0.0.0.0, ASBR
                               via 10.2.90.1, enp0s2.290
    
    ============ OSPF external routing table ===========
    N E2 0.0.0.0/0             [1/10] tag: 0
                               via 10.2.90.1, enp0s2.290
    R2-vert# sh ipv6 ospf6 route
    *N E2 ::/0                           fe80::baad:caff:fefe:64   enp0s2.290 00:32:43
    *N IA 2001:678:3fc:126::/64          ::                        sw-vlan294 01:04:23
    *N IA 2001:678:3fc:127::/64          fe80::baad:caff:fefe:66   enp0s2.293 01:03:38

Avec les copies d'écran ci-dessus, on vérifie bien que les routes par défaut ont été apprises via le protocole OSPF.

Q19.

Comment assurer la traduction d'adresses source sur l'interface de sortie du routeur R1-rouge vers l'Internet ?

Reprendre la section Rôle routeur du support Routage inter-VLAN contexte cloud.

Dans le cas de la maquette, c'est l'interface enp0s2.300 qui assure l'interconnexion avec l'Internet. Voici une copie de chaque fichier de configuration après installation du paquet iptables-persistent.

etu@R1-rouge:~$ sudo apt install iptables-persistent
etu@R1-rouge:~$ sudo mkdir -p /etc/iptables
etu@R1-rouge:~$ aptitude versions iptables-persistent
i   1.0.15                    testing                   500
etu@R1-rouge:~$ cat << EOF | sudo tee /etc/iptables/rules.v4
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o enp0s2.300 -j MASQUERADE
COMMIT
EOF
etu@R1-rouge:~$ cat << EOF | sudo tee /etc/iptables/rules.v6
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o enp0s2.300 -j MASQUERADE
COMMIT
EOF
etu@R1-rouge:~$ sudo sh -c "iptables-restore < /etc/iptables/rules.v4"
etu@R1-rouge:~$ sudo sh -c "ip6tables-restore < /etc/iptables/rules.v6"

Une fois le jeu de règles en place, on peut vérifier leur utilisation à partir du relevé des compteurs de paquets traités.

etu@R1-rouge:~$ sudo iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 520 packets, 35528 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 8 packets, 1023 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 192 packets, 12619 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 29 packets, 2112 bytes)
 pkts bytes target     prot opt in     out     source               destination
  671 44852 MASQUERADE  all  --  *      enp0s2.300  0.0.0.0/0            0.0.0.0/0
etu@R1-rouge:~$ sudo ip6tables -t nat -vnL
Chain PREROUTING (policy ACCEPT 1174 packets, 129K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 163 packets, 25980 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 23 packets, 2324 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 20 packets, 1976 bytes)
 pkts bytes target     prot opt in     out     source               destination
  122 10096 MASQUERADE  all      *      enp0s2.300  ::/0                 ::/0