Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| 050-manips-ipv4:040-un-routeur [le 05/04/2025 à 16:40] – supprimée - modification externe (Date inconnue) 127.0.0.1 | 050-manips-ipv4:040-un-routeur [le 11/09/2025 à 13:04] (Version actuelle) – [Conclusion] prof | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Ajout d'un routeur ====== | ||
| + | Attention, ça se complique... | ||
| + | Nous voudrions maintenant que notre réseau expérimental '' | ||
| + | |||
| + | Nous bricolons donc notre plateforme expérimentale de la façon suivante: | ||
| + | {{ 050-manips-ipv4: | ||
| + | - Ajout d'une interface Ethernet dans le '' | ||
| + | auto lo | ||
| + | iface lo inet loopback | ||
| + | |||
| + | <span class=" | ||
| + | iface enp1s0 inet static | ||
| + | address 192.168.60.252/ | ||
| + | gateway 192.168.60.254</ | ||
| + | |||
| + | |||
| + | allow-hotplug enp7s0 | ||
| + | iface enp7s0 inet static | ||
| + | address 192.168.61.1/ | ||
| + | </ | ||
| + | - Branchement de cette interface dans le réseau 192.168.60.0/ | ||
| + | |||
| + | PING www.debian.org(klecker.debian.org (2001: | ||
| + | 64 bytes from klecker.debian.org (2001: | ||
| + | |||
| + | --- www.debian.org ping statistics --- | ||
| + | 1 packets transmitted, | ||
| + | rtt min/ | ||
| + | </ | ||
| + | |||
| + | - Le kernel Linux sait parfaitement effectuer du routage entre interfaces réseau, encore faut-il activer cette fonction qui ne l'est pas par défaut pour des raisons de sécurité (administrateur requis):< | ||
| + | |||
| + | Théoriquement, | ||
| + | ping -c1 192.168.60.254 | ||
| + | La réponse n'est pas sympathique: | ||
| + | ping: connect: Le réseau n'est pas accessible | ||
| + | |||
| + | ====== Tracer les routes ====== | ||
| + | |||
| + | Vérifions d' | ||
| + | < | ||
| + | <b>ip route list</ | ||
| + | |||
| + | default via 192.168.60.254 dev enp1s0 onlink | ||
| + | 192.168.60.0/ | ||
| + | 192.168.61.0/ | ||
| + | </ | ||
| + | - Il sait comment aller sur '' | ||
| + | - il sait comment aller sur '' | ||
| + | - il sait comment aller ailleurs en passant par '' | ||
| + | Est-ce que '' | ||
| + | |||
| + | Sur '' | ||
| + | < | ||
| + | <b>ip roule list</ | ||
| + | |||
| + | 192.168.61.0/ | ||
| + | </ | ||
| + | |||
| + | La seule route qu'il connaît est celle qui permet d' | ||
| + | ip route add default via 192.168.61.1 | ||
| + | Et vérifions: | ||
| + | < | ||
| + | <b>ip route list</ | ||
| + | |||
| + | <span class=" | ||
| + | 192.168.61.0/ | ||
| + | </ | ||
| + | Voilà qui est mieux. Essayons encore... | ||
| + | < | ||
| + | < | ||
| + | |||
| + | PING 192.168.60.254 (192.168.60.254) 56(84) bytes of data. | ||
| + | |||
| + | --- 192.168.60.254 ping statistics --- | ||
| + | <span class=" | ||
| + | </ | ||
| + | Dans les cas désespérés, | ||
| + | < | ||
| + | No. Source | ||
| + | 1 192.168.61.100 | ||
| + | </ | ||
| + | Nous devrions voir cet '' | ||
| + | |||
| + | ** Le routeur ne route pas...** | ||
| + | Il fallait savoir que si le kernel Linux sait faire le routage, cette fonction est désactivée par défaut pour des raisons de sécurité. La commande '' | ||
| + | |||
| + | Vérifions: | ||
| + | < | ||
| + | < | ||
| + | |||
| + | <span class=" | ||
| + | </ | ||
| + | Il faut mettre ce paramètre à '' | ||
| + | < | ||
| + | < | ||
| + | |||
| + | <span class=" | ||
| + | </ | ||
| + | Essayons encore en laissant Wireshark | ||
| + | < | ||
| + | No. Source | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | Il y a du mieux. Le paquet traverse bien le routeur, mais aucune réponse n' | ||
| + | |||
| + | Au final, nous avons bien une route qui permet d' | ||
| + | ====== Les solutions de retour ====== | ||
| + | Il y a deux solutions plus ou moins simples, plus ou moins élégantes. | ||
| + | ===== Virer le routeur de la Box ===== | ||
| + | {{050-manips-ipv4: | ||
| + | |||
| + | Le routeur R1 assure les mêmes fonctions que celui qui est intégré dans la Box, à ceci près que nous pouvons lui ajouter une route vers 192.168.61.0/ | ||
| + | |||
| + | Mais nous ne détaillerons pas d' | ||
| + | ===== Faire du «masquerade» ===== | ||
| + | C' | ||
| + | |||
| + | C'est cette solution que nous allons adopter. Prenons pour l' | ||
| + | iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE | ||
| + | |||
| + | ===== Et admirer... ===== | ||
| + | ping -c1 192.168.60.254 | ||
| + | Donne à présent: | ||
| + | PING 192.168.60.254 (192.168.60.254) 56(84) bytes of data. | ||
| + | 64 bytes from 192.168.60.254: | ||
| + | Nous avons la réponse au ping. Un coup de sniffeur pour vérifier tout ça nous donne en résumé classé de façon chronologique: | ||
| + | < | ||
| + | No. Time | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | Les trames jaunes sont capturées sur '' | ||
| + | |||
| + | Nous voyons sur la trame n°1 (ping request): | ||
| + | * l' | ||
| + | * l' | ||
| + | Dans la trame n°3 nous retrouvons le ping request mais: | ||
| + | * l' | ||
| + | * l' | ||
| + | Dans la trame n°4, nous avons le «ping reply» de 192.168.60.254 qui est envoyée à 192.168.60.252 ('' | ||
| + | Dans la trame n°2, nous retrouvons le «ping reply», mais cette fois-ci adressée à 192.168.61.101 c' | ||
| + | |||
| + | Dans les faits, la Box fait également du masquage d' | ||
| + | ====== Conclusion ====== | ||
| + | |||
| + | Est-ce que dans ce cas, 192.168.61.0/ | ||
| + | |||
| + | < | ||
| + | ping -c1 51.68.121.59 | ||
| + | PING 51.68.121.59 (51.68.121.59) 56(84) bytes of data. | ||
| + | <span class=" | ||
| + | </ | ||
| + | |||
| + | Yesssssssssssssssss! | ||
| + | |||
| + | Dans ce genre de situation, il faut toujours vérifier que: | ||
| + | - Le routeur intermédiaire a bien une interface dans chaque réseau, | ||
| + | - qu'il est configuré pour effectuer le routage, | ||
| + | - que les routes de retour existent bien, d'une manière ou d'une autre, | ||
| + | - que tous les éléments des réseaux sachent à quel routeur s' | ||
| + | - lorsque quelque chose ne fonctionne pas comme prévu, les sondes d' | ||
| + | |||
| + | Notre réseau virtuel 192.168.61.0/ | ||
| + | |||
| + | Ceci dit, tous les aménagements de configuration que nous avons bricolé l'ont été de manière temporaire: | ||
| + | - la route par défaut pour les clients du réseau 192.168.61.0/ | ||
| + | - l' | ||
| + | - le masquage d' | ||
| + | |||
| + | Pour activer le routage de façon permanente il faut créer dans le répertoire ''/ | ||
| + | net.ipv4.ip_forward=1 | ||
| + | Au prochain démarrage, '' | ||
| + | |||
| + | Pour le serveur DHCP, revenons sur son fichier de configuration | ||
| + | < | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ] | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | } | ||
| + | ], | ||
| + | <span class=" | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | | ||
| + | } | ||
| + | ] | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | Il suffit d' | ||
| + | |||
| + | Après redémarrage de '' | ||
| + | < | ||
| + | <b>ip route list</ | ||
| + | <span class=" | ||
| + | 192.168.60.0/ | ||
| + | 192.168.61.0/ | ||
| + | </ | ||
| + | Le serveur connaît la route par défaut, celle qui mène à l' | ||
| + | |||
| + | < | ||
| + | < | ||
| + | <span class=" | ||
| + | </ | ||
| + | Le kernel a retenu qu'il devait effectuer le routage. | ||
| + | |||
| + | < | ||
| + | < | ||
| + | Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) | ||
| + | pkts bytes target | ||
| + | | ||
| + | </ | ||
| + | Le masquage d' | ||
| + | |||
| + | Du côté du '' | ||
| + | < | ||
| + | <b>ip route ls</ | ||
| + | <span class=" | ||
| + | 192.168.61.0/ | ||
| + | </ | ||
| + | Et voilà le travail ! | ||
| + | |||
| + | Nous verrons plus loin que tout ceci devient obsolète si l'on utilise exclusivement IPv6, mais ce n'est pas encore possible. | ||
Ajout d'un routeur: Dernière modification le: 01/01/1970 à 00:00 par