7. Réseau
d'hébergement de conteneurs
À ce stade des manipulations, le routeur Spoke utilise la session PPP et le routage IPv4 pour accéder à tous les réseaux.
On peut le vérifier en affichant les tables de routage
IPv4 et IPv6.
Dans la table de routage IPv4, on trouve la route par défaut.
ip route ls
default dev ppp0 scope link
10.4.41.1 dev ppp0 proto kernel scope link src 10.4.41.2
Dans la table de routage IPv6, on ne trouve que des entrées de lien
local correspondant au préfixe fe80::/10
.
ip -6 route ls
fe80::d1b3:8c16:93d1:8370 dev ppp0 proto kernel metric 256 pref medium
fe80::f118:5b7b:cfb5:7b54 dev ppp0 proto kernel metric 256 pref medium
fe80::/64 dev enp0s1 proto kernel metric 256 pref medium
fe80::/64 dev enp0s1.441 proto kernel metric 256 pref medium
fe80::/64 dev enp0s1.440 proto kernel metric 256 pref medium
fe80:1b8::/64 dev enp0s1.440 proto kernel metric 256 pref medium
Dans cette partie, nous devons ajouter un commutateur pour
raccorder les services hébergés sur le site distant et compléter la
configuration du routage pour assurer les accès IPv4 et IPv6.
7.1. Ajouter
un commutateur virtuel
Dans le scénario étudié, les services sont hébergés dans un
réseau de conteneurs propre au routeur Spoke. La mise en œuvre de cette configuration
passe par l'installation d'un commutateur virtuel appelé
asw-host
. On utilise Open vSwitch pour configurer ce
commutateur.
Q42.
|
Quel est le paquet à installer pour ajouter
un commutateur virtuel au routeur Spoke ?
Rechercher le mot clé openvswitch dans la liste des paquets.
|
|
Voici un exemple de recherche.
apt search ^openvswitch
C'est le paquet openvswitch-switch qui nous intéresse. On
l'installe.
sudo apt -y install openvswitch-switch |
Q43.
|
Comment déclarer un commutateur à l'aide de
l'outil netplan.io ?
Consulter la documentation de Netplan
pour obtenir les informations sur la configuration des commutateurs
virtuels openvswitch à l'adresse
Netplan documentation.
On peut aussi rechercher les informations dans les fichiers
exemples fournis avec le paquet netplan.io.
|
|
Voici un exemple de recherche.
find /usr/share/doc/netplan* -type f -iname "openvswitch*"
/usr/share/doc/netplan/examples/openvswitch.yaml |
Q44.
|
Quelles sont les modifications à apporter
au fichier de déclaration YAML
/etc/netplan/enp0s1.yaml pour créer
le commutateur asw-host ?
|
|
Voici une copie du fichier /etc/netplan/enp0s1.yaml qui contient les
instructions de création du commutateur asw-host seul.
network:
version: 2
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: []
On applique les nouvelles déclarations.
sudo netplan apply
On vérifie que le nouveau commutateur a bien été créé dans la
base Open vSwitch .
sudo ovs-vsctl show
e288cc30-e290-44ae-8ed1-5e2a8d184033
Bridge asw-host
fail_mode: standalone
Port asw-host
Interface asw-host
type: internal
ovs_version: "3.4.0" |
Q45.
|
Comment ajouter une nouvelle interface
virtuelle commutée (Switched Virtual
Interface) qui servira de passerelle par défaut pour tous les
hôtes du réseau d'hébergement du site distant ?
Rechercher dans la documentation Netplan des exemples de déclarations
d'interfaces de type SVI
appartenant à des VLANs.
|
|
Voici une nouvelle copie du fichier /etc/netplan/enp0s1.yaml auquel on ajouté la
déclaration d'une interface vlan40
avec les adresses IPv4 et
IPv6 conformes au contexte de la
maquette utilisée pour la rédaction de ce document.
network:
version: 2
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: []
vlan40: # VLAN vert
id: 40
link: asw-host
addresses:
- 203.0.113.1/24
- fda0:7a62:28::1/64
- fe80:28::1/64 |
7.2. Routage du réseau
d'hébergement
L'objectif de cette section est de rendre le réseau
d'hébergement accessible depuis le routeur Hub et que le protocole IPv6 soit utilisable depuis le routeur
Spoke.
Pour rendre le réseau d'hébergement du site distant accessible
depuis le routeur Hub, il est nécessaire
d'ajouter des routes statiques IPv4 et IPv6
à l'ouverture de la session PPP.
Pour utiliser IPv6 depuis le
routeur Spoke, il faut ajouter une route
par défaut IPv6 aussi à
l'ouverture de session PPP.
On commence par l'ajout de routes statiques IPv4 et IPv6
côté routeur Hub.
Q46.
|
Comment ajouter manuellement les routes
IPv4 et IPv6 vers le réseau desservi par le routeur
vert ?
Consulter les pages de manuel sur le routage avec la
commande : man
ip-route .
|
|
Sachant que le site distant est raccordé via une liaison point à
point unique, on choisit de désigner la destination par l'interface
de la liaison.
sudo ip route add 203.0.113.0/24 dev ppp0
sudo ip -6 route add fda0:7a62:28::/64 dev ppp0 |
Q47.
|
Comment appliquer ces routes statiques dans
la configuration système pour qu'elles soient activées à chaque
établissement de session PPP ?
Il faut parcourir l'arborescence du répertoire /etc/ppp/ pour repérer les scripts exécutés lors
de l'ouverture de session. Créer un script pour chaque protocole de
couche réseau qui ajoute la route statique voulue.
|
|
-
Pour IPv4, le répertoire est
/etc/ppp/ip-up.d/ . Voici comment
créer le script exécutable staticroute .
cat << 'EOF' | sudo tee /etc/ppp/ip-up.d/staticroute
#!/bin/sh
if [ -z "${CONNECT_TIME}" ]; then
ip route add 203.0.113.0/24 dev ${PPP_IFACE}
fi
EOF
sudo chmod +x /etc/ppp/ip-up.d/staticroute
-
Pour IPv6, le répertoire est
/etc/ppp/ipv6-up.d/ . Voici comment
créer le script exécutable staticroute .
cat << 'EOF' | sudo tee /etc/ppp/ipv6-up.d/staticroute
#!/bin/sh
if [ -z "${CONNECT_TIME}" ]; then
ip -6 route add fda0:7a62:28::/64 dev ${PPP_IFACE}
fi
EOF
sudo chmod +x /etc/ppp/ipv6-up.d/staticroute
|
Q48.
|
Comment tester l'ajout de ces routes
statiques et les communications vers le réseau d'hébergement depuis
le routeur Hub ?
Afficher les tables de routage après réinitialisation d'une
session PPP et lancer des tests
ICMP vers les adresses de l'interface
virtuelle commutée du routeur Spoke.
|
|
En redémarrant le service pppoe-server sur le routeur Hub ou le service ppp sur le routeur Spoke, on provoque un renouvellement de session
PPP.
On peut ensuite afficher les tables de routage du routeur
Hub.
ip route ls
default via 192.168.104.129 dev enp0s1.360 proto static
10.4.41.2 dev ppp0 proto kernel scope link src 10.4.41.1
192.168.104.128/29 dev enp0s1.360 proto kernel scope link src 192.168.104.130
203.0.113.0/24 dev ppp0 scope link
ip -6 route ls
2001:678:3fc:168::/64 dev enp0s1.360 proto kernel metric 256 pref medium
2001:678:3fc:168::/64 dev enp0s1.360 proto ra metric 512 expires 2591839sec pref high
fda0:7a62:28::/64 dev ppp0 metric 1024 pref medium
fe80::d580:e038:8d05:636e dev ppp0 proto kernel metric 256 pref medium
fe80::dcfe:544d:d6ac:8b0f dev ppp0 proto kernel metric 256 pref medium
fe80::/64 dev enp0s1 proto kernel metric 256 pref medium
fe80::/64 dev enp0s1.441 proto kernel metric 256 pref medium
fe80::/64 dev enp0s1.440 proto kernel metric 256 pref medium
fe80::/64 dev enp0s1.360 proto kernel metric 256 pref medium
fe80:1b8::/64 dev enp0s1.440 proto kernel metric 256 pref medium
default via fe80:168::1 dev enp0s1.360 proto static metric 1024 onlink pref medium
On peut aussi afficher la solution de routage pour une adresse
destination.
ip route get 203.0.113.1
203.0.113.1 dev ppp0 src 10.4.41.1 uid 1000
cache
ip -6 route get fda0:7a62:28::1
fda0:7a62:28::1 from :: dev ppp0 src 2001:678:3fc:168:baad:caff:fefe:5 metric 1024 pref medium |
On peut maintenant passer au routeur Spoke pour effectuer le même travail sur les
routes par défaut.
Q49.
|
Comment ajouter des routes par défaut dans
la configuration système pour qu'elles soient activées à chaque
établissement de session PPP ?
Il faut parcourir l'arborescence du répertoire /etc/ppp/ pour repérer les scripts exécutés lors
de l'ouverture de session. Créer un script pour chaque protocole de
couche réseau qui ajoute la route statique voulue.
|
|
-
Pour IPv4, le répertoire est
/etc/ppp/ip-up.d/ . Voici comment
créer un script exécutable appelé 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, le répertoire est
/etc/ppp/ipv6-up.d/ . Voici comment
créer un script exécutable aussi 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
|
Q50.
|
Comment tester l'ajout des routes par
défaut et les communications IPv6 depuis le routeur Spoke ?
Afficher les tables de routage après réinitialisation d'une
session PPP et lancer des tests
ICMP depuis les adresses de l'interface
virtuelle commutée du routeur Spoke.
|
|
En redémarrant le service pppoe-server sur le routeur Hub ou le service ppp sur le routeur Spoke, on provoque un renouvellement de session
PPP.
On peut ensuite afficher les tables de routage du routeur
Spoke.
ip route ls default
default dev ppp0 scope link
ip -6 route ls default
default dev ppp0 metric 1024 pref medium
Il ne reste plus que le test ICMPv6 pour qualifier le routage complet au
niveau du routeur Spoke.
ping -c2 2620:fe::fe
PING 2620:fe::fe (2620:fe::fe) 56 data bytes
64 bytes from 2620:fe::fe: icmp_seq=1 ttl=58 time=54.3 ms
64 bytes from 2620:fe::fe: icmp_seq=2 ttl=58 time=41.2 ms
--- 2620:fe::fe ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 41.208/47.735/54.262/6.527 ms |
7.3. Adressage
automatique dans le réseau d'hébergement
Pour que les hôtes du réseau de conteneurs obtiennent
automatiquement une configuration IPv4 et IPv6, il faut ajouter le service dnsmasq
sur le routeur Spoke. Il fournit les services DHCPv4 et SLAAC en un seul et unique fichier de
configuration.
On débute par l'installation du paquet.
sudo apt -y install dnsmasq
Q51.
|
Comment remplacer le fichier de
configuration fourni lors de l'installation du paquet par notre
propre fichier de configuration ?
Consulter le contenu du fichier /etc/dnsmasq.conf et extraire les options de
configuration utiles au contexte de ces manipulations.
|
|
Voici la commande de copie du fichier issu de
l'installation.
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.dist
Voici un exemple de configuration adaptée à la maquette.
cat << EOF | sudo tee /etc/dnsmasq.conf
# Specify Container VLAN interface
interface=vlan40
# Enable DHCPv4 on Container VLAN
dhcp-range=203.0.113.20,203.0.113.200,3h
# Enable IPv6 router advertisements
enable-ra
# Enable SLAAC
dhcp-range=::,constructor:vlan40,ra-names,slaac
# Optional: Specify DNS servers
dhcp-option=option:dns-server,172.16.0.2,9.9.9.9
dhcp-option=option6:dns-server,[2001:678:3fc:3::2],[2620:fe::fe]
# Avoid DNS listen port conflict between dnsmasq and systemd-resolved
port=0
EOF
|
Avertissement |
Il faut impérativement changer le numéro de VLAN ainsi que les
adresses IPv4 de l'exemple
ci-dessus par les informations données dans le plan d'adressage des
travaux pratiques.
De plus, une fois le fichier créé, il ne faut pas oublier de
redémarrer le service et de contrôler l'état de son
fonctionnement.
|
sudo systemctl restart dnsmasq
systemctl status dnsmasq |