4. Interconnexion IPv4 et IPv6

À ce stade des manipulations, les routeurs Spoke utilisent leur session PPP et le routage IPv4 pour accéder à tous les réseaux.

L'objectif de cette section est de valider les communications entre les routeurs Spoke, aussi bien avec le protocole réseau IPv4 qu'avec le protocole réseau IPv6.

Il s'agit donc de configurer les routes statiques vers les réseaux d'hébergement des deux sites distants côté routeur Hub et de valider ou d'ajouter les routes par défaut côté routeurs Spoke.

IPv6 nécessite une attention particulière. En effet, à la suite de l'établissement de session PPP, on ne dispose que d'adresses de lien local. Ces adresses ne permettent pas d'acheminer du trafic vers un autre réseau quel qu'il soit. Il est donc nécessaire de mettre en place des interfaces commutées virtuelles (SVI) avec des adresses IPv6 de type ULA (Unique Local Address) pour être en mesure d'échanger du trafic entre des réseaux différents.

Q99.

Comment connaître l'état actuel des communications entre les routeurs de la topologie Hub and Spoke ?

On doit lancer une série de tests ICMP pour chaque protocole de couche réseau et identifier les dysfonctionnements.

Protocole IPv4

Commençons par les tests des routeurs Spoke vers Internet. Comme les sessions PPP sont établies à la suite de la partie précédente, tous les paquets transitent avec succès.

etu@spoke1:~$ ping -qc2 9.9.9.9
PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data.

--- 9.9.9.9 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 29.534/35.666/41.798/6.132 ms
etu@spoke2:~$ ping -qc2 9.9.9.9
PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data.

--- 9.9.9.9 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 29.515/29.622/29.730/0.107 ms

Passons aux communications entre routeurs Spoke entre les extrémités des liaisons point à point. Là aussi, tout fonctionne puisque le routeur Hub détient le plan d'adressage.

etu@spoke2:~$ ip addr ls dev ppp0
5: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc fq_codel state UNKNOWN group default qlen 3
    link/ppp
    inet 10.44.3.2 peer 10.44.3.1/32 scope global ppp0
       valid_lft forever preferred_lft forever
    inet6 fe80::5826:d9cb:d027:4cc9 peer fe80::552:a7c:9fba:55af/128 scope link nodad
       valid_lft forever preferred_lft forever
etu@spoke2:~$ ping -qc2 10.44.1.2
PING 10.44.1.2 (10.44.1.2) 56(84) bytes of data.

--- 10.44.1.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 2.249/2.364/2.479/0.115 ms
etu@hub:~$ ip route ls
default via 192.168.104.129 dev enp0s1.360 proto static
10.44.1.2 dev ppp0 proto kernel scope link src 10.44.1.1
10.44.3.2 dev ppp1 proto kernel scope link src 10.44.3.1
192.168.104.128/29 dev enp0s1.360 proto kernel scope link src 192.168.104.130
Protocole IPv6

Pour IPv6, la configuration est clairement incomplète dans la mesure où il est impossible d'acheminer du trafic au-delà du lien local de chaque routeur Spoke.

etu@spoke1:~$ ip -6 route get 2620:fe::fe
RTNETLINK answers: Network is unreachable
etu@spoke1:~$ ip -6 route ls default

La route par défaut n'existe pas.

Pour conclure ces tests, nous devons mettre en place les réseaux d'hébergement de chaque routeur Spoke ainsi que les routes statiques pour avancer dans l'interconnexion des sites distants.

Q100.

Comment créer les routes par défaut IPv4 et IPv6 sur les deux routeurs Spoke ?

Créer les scripts exécutables defaultroute pour chaque protocole réseau et renouveler les sessions PPP.

Pour IPv4, c'est le répertoire est /etc/ppp/ip-up.d/ qui doit contenir le script exécutable defaultroute.

cat << 'EOF' | sudo tee /etc/ppp/ip-up.d/defaultroute
#!/bin/sh

if [ -z "${CONNECT_TIME}" ]; then
        ip route add default dev ${PPP_IFACE}
fi
EOF
sudo chmod +x /etc/ppp/ip-up.d/defaultroute

Pour IPv6, c'est le répertoire est /etc/ppp/ipv6-up.d/ qui doit contenir le script exécutable appelé defaultroute.

cat << 'EOF' | sudo tee /etc/ppp/ipv6-up.d/defaultroute
#!/bin/sh

if [ -z "${CONNECT_TIME}" ]; then
    ip -6 route add default dev ${PPP_IFACE}
fi
EOF
sudo chmod +x /etc/ppp/ipv6-up.d/defaultroute

Comme demandé, pas oublier de relancer les sessions PPP pour provoquer la création des routes par défaut sur chaque routeur Spoke.

sudo systemctl restart ppp.service

Une fois les sessions PPP renouvelées, on dispose d'une solution pour router les paquets IPv6 vers les autres réseaux.

ip -6 route get 2620:fe::fe
2620:fe::fe from :: dev ppp0 src fda0:7a62:14::1 metric 1024 pref medium

Malheureusement, ce n'est pas suffisant pour acheminer du trafic depuis le routeur Hub. Celui-ci n'a aucune connaissance des adresses réseau des réseaux d'hébergement des routeurs Spoke. L'ajout des routes statiques vers ces réseaux 'hébergement est justement l'objet de la question suivante.

Q101.

Comment créer les routes statiques vers les réseaux d'hébergement sur le routeur Hub ?

Créer un script exécutable par protocole réseau dans lequel on utilise les noms d'interfaces PPP dérivés des options -u utilisées dans les paramètres de configuration des deux serveurs PPPoE.

Pour IPv4, c'est le répertoire est /etc/ppp/ip-up.d/ qui doit contenir le script exécutable staticroute.

cat << 'EOF' | sudo tee /etc/ppp/ip-up.d/staticroute
#!/bin/bash

if [ -z "${CONNECT_TIME}" ]; then
    case "${PPP_IFACE}" in
        "ppp0")
            ip route add 10.0.10.0/24 dev ${PPP_IFACE}
            ;;
        "ppp1")
            ip route add 10.0.20.0/24 dev ${PPP_IFACE}
            ;;
    esac
fi
EOF
sudo chmod +x /etc/ppp/ip-up.d/staticroute

Pour IPv6, c'est le répertoire est /etc/ppp/ipv6-up.d/ qui doit contenir le script exécutable appelé staticroute.

cat << 'EOF' | sudo tee /etc/ppp/ipv6-up.d/staticroute
#!/bin/bash

if [ -z "${CONNECT_TIME}" ]; then
    case "${PPP_IFACE}" in
        "ppp0")
            ip -6 route add fda0:7a62:a::/64 dev ${PPP_IFACE}
            ;;
        "ppp1")
            ip -6 route add fda0:7a62:14::/64 dev ${PPP_IFACE}
            ;;
    esac
fi
EOF
sudo chmod +x /etc/ppp/ipv6-up.d/staticroute

Une fois de plus, il faut relancer les sessions PPP pour observer les résultats et lancer les tests ICMP.

Auparavant, on peut afficher les tables de routages IPv4 et IPv6 du routeur Hub pour vérifier la présence des nouvelles routes statiques.

  • En direction du premier routeur Spoke.

    ip route ls dev ppp0
    10.0.10.0/24 scope link
    10.44.1.2 proto kernel scope link src 10.44.1.1
    ip -6 route ls dev ppp0
    fda0:7a62:a::/64 metric 1024 pref medium
    fe80::2c4a:3bb9:eead:8fa5 proto kernel metric 256 pref medium
    fe80::cca6:346e:80d0:20cf proto kernel metric 256 pref medium
  • En direction du second routeur Spoke.

    ip route ls dev ppp1
    10.0.20.0/24 scope link
    10.44.3.2 proto kernel scope link src 10.44.3.1
    ip -6 route ls dev ppp1
    fda0:7a62:14::/64 metric 1024 pref medium
    fe80::b4d6:f38c:a930:c8f5 proto kernel metric 256 pref medium
    fe80::f0fe:10bd:88f0:cb26 proto kernel metric 256 pref medium

Q102.

Comment créer et configurer les interfaces commutées virtuelles sur chaque routeur Spoke ?

Après avoir installé le paquet openvswitchi-switch, compléter le fichier de configuration netplan.io pour déclarer un commutateur applé asw-host et l'interface SVI correspondant au réseau d'hébergement de site (VLAN vert)

On installe le paquet du commutateur virtuel.

sudo apt -y install openvswitch-switch

On créé le nouveau commutateur et l'interface commutée virtuel en respectant bien le plan d'adressage.

Voici un exemple de fichier de déclaration /etc/netplan/enp0s1.yaml pour le premier routeur Spoke.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s1:
      dhcp4: false
      dhcp6: false
      accept-ra: false

  openvswitch: {}

  bridges:
    asw-host:
      openvswitch: {}

  vlans:
    enp0s1.440: # VLAN violet
      id: 440
      link: enp0s1
      addresses:
        - fe80:1b8::2/64
    enp0s1.441: # VLAN orange
      id: 441
      link: enp0s1
      addresses: []
    vlan10:     # VLAN vert
      id: 10
      link: asw-host
      addresses:
        - 10.0.10.1/24
        - fda0:7a62:a::1/64
        - fe80:a::1/64

Le même travail doit être réalisé sur le second routeur Spoke pour que la configuration soit complète.

Q103.

Quels sont les tests ICMP à réaliser pour valider les communications entre les routeurs Spoke ?

Il faut valider les communications réseau entre les adresses des deux interfaces commutées virtuelles des deux routeurs Spoke.

Il faut aussi vérifier que ces mêmes routeurs Spoke communiquent avec le protocole IPv6 vers l'Internet.

On commence par tester avec succès les échanges entre le second routeur Spoke et le premier avec IPv4.

etu@spoke2:~$ ping -qc2 10.0.10.1
PING 10.0.10.1 (10.0.10.1) 56(84) bytes of data.

--- 10.0.10.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.799/1.943/2.088/0.144 ms

On poursuit dans le même sens avec IPv6.

etu@spoke2:~$ ping -qc2 fda0:7a62:a::1
PING fda0:7a62:a::1 (fda0:7a62:a::1) 56 data bytes

--- fda0:7a62:a::1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 2.146/2.272/2.398/0.126 ms

Enfin, on termine avec les communications IPv6 depuis les deux routeurs Spoke.

etu@spoke1:~$ ping -qc2 2620:fe::fe
PING 2620:fe::fe (2620:fe::fe) 56 data bytes

--- 2620:fe::fe ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 41.104/47.623/54.142/6.519 ms
etu@spoke2:~$ ping -qc2 2620:fe::fe
PING 2620:fe::fe (2620:fe::fe) 56 data bytes

--- 2620:fe::fe ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 40.897/47.183/53.470/6.286 ms

Au terme de cette partie, les tables de routage de routeurs de la topologie Hub and Spoke sont complètes et les communications IPv4 et IPv6 fonctionnent entre les routeurs d'extrémités.