6. Interconnexion et routage

En l'absence de routage dynamique, il est nécessaire d'implanter des routes par défaut, des routes statiques et de la traduction d'adresses source sur les routeurs de la topologie étudiée. Dans cette section, on veut s'assurer que les communications entre les différents réseaux fonctionnent correctement.

Dans cette partie, on considère que le routage est déjà activé au niveau noyau. Voir Section 3.3, « Activation du routage dans le noyau Linux ».

6.1. Tables de routage du routeur Hub

Selon la représentation simplifiée de la topologie ci-dessus, les tables de routage routeur Hub doivent contenir les éléments suivants.

  • Des routes par défaut IPv4 et IPv6 vers le cœur de réseau pour accéder à l'Internet.

  • La traduction des adresses IPv4 source en sortie de l'interface de connexion au cœur de réseau.

  • Des routes statiques IPv4 et IPv6 vers les réseaux d'extrémité desservis par le routeur Spoke.

Q31.

Comment ajouter les routes par défaut vers le cœur de réseau ?

Consulter l' Antisèche réseau ou les pages de manuels man ip-route et rechercher la syntaxe relative aux route par défaut sachant que les adresses de passerelle sont données à la Section 3, « Topologie Hub & Spoke - Protocole PPPoE ».

Pour les réseaux IPv4, la syntaxe est la suivante.

# ip route add default via 172.16.16.2
# ip route ls dev eth0.4
default via 172.16.16.2
172.16.16.0/20 proto kernel scope link src 172.16.16.59
# ip route get 9.9.9.9
9.9.9.9 via 172.16.16.2 dev eth0.4 src 172.16.16.59 uid 1000

Pour les réseaux IPv6, la syntaxe est la suivante.

# ip -6 route add default via 2001:678:3fc:4::2
# ip -6 route ls dev eth0.4
2001:678:3fc:4::/64 proto kernel metric 256 pref medium
fe80::/64 proto kernel metric 256 pref medium
default via 2001:678:3fc:4::2 metric 1024 pref medium
# ip route get 2620:fe::fe
2620:fe::fe from :: via 2001:678:3fc:4::2 dev eth0.4 src 2001:678:3fc:4::3b metric 1024 pref medium

Q32.

Comment activer la traduction des adresses source IPv4 des paquets sortant par l'interface située sur le VLAN d'accès au coeur de réseau ?

Consulter les pages de manuels de la commande iptables.

La traduction des adresses source IPv4 s'applique dans la chaîne POSTROUTING de la table nat et le traitement est appelé MASQUERADE. La syntaxe est la suivante.

# iptables -t nat -A POSTROUTING -o eth0.4 -j MASQUERADE

On vérifie la présence de la règle de traduction d'adresse à l'aide de la commande suivante.

# iptables -t nat -vnL POSTROUTING
Chain POSTROUTING (policy ACCEPT 50 packets, 3000 bytes)
 pkts bytes target     prot opt in     out     source               destination
  587 41926 MASQUERADE  all  --  *      eth0.4  0.0.0.0/0            0.0.0.0/0

On consulte la table des enregistrements de suivi d'état à l'aide de la commande conntrack fournie avec le paquet du même nom.

# conntrack -L | grep icmp
icmp     1 29 src=192.168.1.30 dst=9.9.9.9 type=8 code=0 id=30606 \
                        src=9.9.9.9 dst=172.16.16.59 type=0 code=0 id=30606 mark=0 use=1
conntrack v1.4.5 (conntrack-tools): 36 flow entries have been shown.

Q33.

Comment assurer le routage des paquets vers le réseau local d'extrémité Branch desservi par le routeur Spoke ?

Consulter l' Antisèche réseau ou les pages de manuels man ip-route et rechercher la syntaxe relative aux route statiques.

Comme les communications entre les routeurs Hub et Spoke se font via un lien point à point, on peut utiliser directement le nom d'interface pour la prise décision sur l'acheminement des paquets.

Pour le réseau IPv4, la syntaxe est la suivante.

# ip route add 10.2.6.0/28 dev ppp0

On valide ensuite les communications à destination de l'interface fictive dummy0 du routeur Spoke depuis le routeur Hub.

# ping -qc2 10.2.6.1
PING 10.2.6.1 (10.2.6.1) 56(84) bytes of data.

--- 10.2.6.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 1.043/1.133/1.224/0.096 ms

Pour le réseau IPv6, la syntaxe est la suivante.

# ip -6 route add 2001:678:3fc:1a::/64 dev ppp0

On valide ensuite les communications de la même façon que pour les paquets IPv4.

# ping -qc2 2001:678:3fc:1a::1
PING 2001:678:3fc:1a::1(2001:678:3fc:1a::1) 56 data bytes

--- 2001:678:3fc:1a::1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 3ms
rtt min/avg/max/mdev = 1.186/1.246/1.306/0.060 ms

6.2. Tables de routage du routeur Spoke

Selon la représentation simplifiée de la topologie ci-dessus, les tables de routage routeur Spoke ne doivent contenir que des routes par défaut.

Q34.

Comment ajouter les routes par défaut vers le routeur Hub ?

Consulter l' Antisèche réseau ou les pages de manuels man ip-route et rechercher la syntaxe relative aux route par défaut.

Comme les communications entre les routeurs Spoke et Hub se font via un lien point à point, on peut utiliser directement le nom d'interface pour la prise décision sur l'acheminement des paquets.

Pour les réseaux IPv4, la syntaxe est la suivante.

# ip route add default dev ppp0
# ip route ls dev ppp0
default scope link
192.168.1.29 proto kernel scope link src 192.168.1.30
# ip route get 9.9.9.9
9.9.9.9 dev ppp0 src 192.168.1.30 uid 0

Pour les réseaux IPv6, la syntaxe est la suivante.

# ip -6 route add default dev ppp0
# ip -6 route ls dev ppp0
none fe80::/10 metric 1 pref medium
fe80::/10 proto kernel metric 256 pref medium
default metric 1024 pref medium
# ip route get 2620:fe::fe
2620:fe::fe from :: dev ppp0 src 2001:678:3fc:1a::1 metric 1024 pref medium

Q35.

Comment les routes par défaut sont attribuées vis-à-vis de l'établissement d'une session PPP ?

Consulter les pages de manuels du démon pppd et rechercher dans l'arborescence des scripts de ce même démon, les options ou les commandes de manipulation des routes par défaut.

Pour IPv4, la réponse est fournie par les options du démon pppd paramétrées dans le fichier /etc/ppp/peers/pppoe-provider. Ce fichier contient la directive defaultroute qui attribue la route par défaut lors de l'établissement de la session PPP.

Pour IPv6, il n'existe pas de paramètre qui permet d'établir la route par défaut avec la session PPP. Il faut donc créer un script qui est appelé lors de l'établissement de session. Le répertoire dédié à ces opérations est nommé /etc/ppp/ipv6-up.d/. Voici un exemple de script appelé /etc/ppp/ipv6-up.d/defaultroute qui ajoute la route par défaut à chaque nouvelle session.

# cat /etc/ppp/ipv6-up.d/defaultroute
#!/bin/sh -e

if [ -z "${CONNECT_TIME}" ]; then
        ip -6 route add default dev ${PPP_IFACE}
fi

Attention ! Ce script doit être exécutable.

# chmod +x /etc/ppp/ipv6-up.d/defaultroute