{{tag>réseau}}
====== Routage sous Linux ======
Le routage est fort utile pour créer un sous-réseau et cacher ainsi des ordinateurs derrière un seul.
__**Ce que ne présente pas cet article**__ :
* Il n'est pas question de routage dynamique (utilisation de RIP, OSPF, etc. et du démon routed), pour le routage dynamique voir la page [[:routage_dynamique]].
* Il n'est pas non plus question de routage multimédia. Pour le routage des flux [[:audio]], [[:vidéo]] ou [[:MIDI]] du système, voir le logiciel [[:pipewire#routage|PipeWire]].
===== Pré-requis =====
Pour faire un routeur de votre ordinateur, il vous faut :
* deux cartes réseau installées (si vous voulez séparer les réseaux)
* deux réseaux différents à relier (vous pouvez les créer vous-même)
* activer le routage dans le fichier /etc/sysctl.conf
Il n'est pas obligatoire d'utiliser 2 cartes réseau ou plus afin de séparer les réseaux. L'utilisation de plusieurs cartes réseau transforme juste votre ordinateur en **bastion**.
Cette façon de faire est recommandée si vous voulez séparer physiquement 2 réseaux distincts et permet un contrôle total au niveau de votre ordinateur des échanges entre les 2 réseaux.
===== Installation d'un réseau =====
Pour créer un réseau, il suffit d'associer une adresse IP à une des interfaces de votre système.
Par exemple, je peux associer l'adresse IP **190.1.1.173** à mon interface **eth0**.
Il suffit de taper la commande suivante :
sudo ifconfig eth0 add 190.1.1.173
Pour vérifier votre association tapez :
ifconfig
Avec les nouvelles commandes debian cela donne:
sudo ip addr add 190.1.1.173 dev eth0
ip -c add
les noms des interfaces par défaut ont également changé. Au lieu de __eth0__ vous trouverez plus certainement quelque chose du type __enp2s0f1__
Vous pouvez associer autant de réseaux que vous souhaitez à une interface. (c'est ça la fameuse magie du noyau Linux ^_^ )
Vous pouvez maintenant communiquer avec toutes les machines qui sont sur le même réseau que vous (ayant une **__autre adresse IP du réseau__** et **__reliées__** directement ou indirectement à votre carte réseau)
Si vous voulez que Ubuntu se souvienne de votre association au redémarrage de l'ordinateur, il vous faut modifier le fichier **/etc/network/interfaces**, en mettant la commande up suivie de votre nouvelle route.
Par exemple, pour supprimer la route default, rajoutez dans le fichier interface :
ip route del default
__Indication__ : Lorsque vous associez une adresse IP à une interface, la table de routage est **automatiquement mise à jour**.
Pour que les paquets puissent aller d'une carte réseau à une autre, il est indispensable d'activer le forward. Cette procédure est expliquée dans : [[partage_de_connexion_internet#avec_le_transfert_d_ip|Comment partager une connexion internet ?]] dans la section Activation du partage
===== Description du routage =====
Demander la table de routage actuelle : route -n
{{:table_routage.png}}
Le tableau ci-dessus s'affiche avec une ligne par route.
Les colonnes indiquent chacune une information sur la route paramétrée.
- La **destination** (Réseau) : c'est une adresse IP qui indique __quels sont les paquets__ de données qui vont suivre cette route selon leur destination.
- La **passerelle** (Gateway) : c'est une adresse IP qui indique __par où les paquets vont passer__ pour arriver à destination. Ils seront envoyés à cette adresse.
- Le **masque de sous-réseau** (Genmask) : c'est une suite de 4 octets (comme une adresse IP) qui permet d'indiquer quelle est la taille de chaque partie de l'adresse IP (partie réseau et partie hôte). Par exemple, 255.255.255.0 comme ci-dessus indique que les 3 premiers octets seront utilisés pour le réseau et le dernier pour les adresses d'hôtes (ici la première ligne correspond à toutes les adresses comprises entre 193.17.1.1 et 193.17.1.254).
- Les **indicateurs** : Ils correspondent à l'état de la route (ici **U** signifie que la route est active (Up) et **G** que la route est une passerelle (Gateway). Il existent d'autres indicateurs mais ils sont moins courants (tapez man route pour les découvrir)
- Les **sauts** (Metric) : C'est un nombre qui indique combien d'intermédiaires il reste avant d'arriver à la destination. //Cette information n'est plus utilisée (sauf par des programmes comme routed (RIP)).//
- Les **références** (Ref) : C'est un nombre qui indique le nombre de références associées à cette route. //Cette information n'est pas utilisée.//
- L'**utilisation** (Use) : C'est un compteur d'utilisation de la route.
- L'**interface réseau** (Iface) : C'est le nom de l'interface réseau qui sera utilisée pour cette route. (pour avoir la liste des interfaces disponibles tapez ifconfig)
Nous pouvons voir que cette table de routage :
* Envoie à l'adresse //190.1.1.1// tous les paquets qui sont destinés au réseau //193.17.1.0// (de 193.17.1.1 à 193.17.1.254) ainsi que ceux destinés au réseau //10.226.7.0// (de 10.226.7.1 à 10.226.7.254) en passant par l'interface //eth0//. (**lignes 1 et 3**)
* Envoie à l'adresse //190.1.1.249// tous les paquets qui sont destinés au réseau //192.22.1.0// (de 192.22.1.1 à 192.22.1.254) en passant par l'interface //eth0//. (**ligne 2**)
* Envoi tous les paquets destinés au réseau //190.1.1.0// (de 190.1.1.1 à 190.1.1.254) **__directement__** aux adresses concernées en passant par l'interface //eth0//. (**ligne 4**)
* Envoie tous les paquets destinés au réseau //169.254.0.0// (de 169.254.0.1 à 169.254.255.254) **__directement__** aux adresses concernées en passant par l'interface //eth0//. (**ligne 5**)
* Envoie tous les paquets __**ne correspondant pas**__ à l'une des routes précédentes vers l'adresse //190.1.1.245// en passant par l'interface //eth0//. (**dernière ligne**)
Indication : La dernière ligne correspond à ce que l'on nomme plus couramment la **passerelle par défaut** (vous comprenez pourquoi ! :-) )
===== Modification du routage =====
Nous allons maintenant voir comment mettre en œuvre le routage entre 2 réseaux.
C'est en utilisant la commande **ifconfig**
==== Objectif ====
Nous voulons pouvoir faire communiquer 2 ordinateurs qui ne sont pas sur le même réseau mais qui sont tous les 2 connectés au même routeur.
ajouter l'@ aux ordinateurs pour accéder aux partages qui sont développés par ubuntu
==== Données ====
* Le réseau A : **190.1.1.0/255.255.255.0** (de 190.1.1.1 à 190.1.1.254)
* L'**adresse IP du poste A** sur le réseau A : **190.1.1.2**
* Le réseau B : **193.17.1.0/255.255.255.0** (de 193.17.1.1 à 193.17.1.254)
* L'**adresse IP du poste B** sur le réseau B : **193.17.1.2**
==== Solution ====
Il faut tout d'abord avoir une adresse IP sur le réseau de destination afin de communiquer avec par le biais de l'interface qui y est connectée.
Attention de ne pas prendre une adresse IP déjà utilisée !
- Sur le routeur, paramétrez votre interface réseau connectée au réseau A comme [[routage#installation_d_un_reseau|dit précedemment]]. (par exemple : **190.1.1.1**)
- Sur le routeur, paramétrez votre interface réseau connectée au réseau B. (par exemple : **193.17.1.1**)
- Si besoin est, configurez la table de routage du poste A :
sudo route add -net 193.17.1.0 netmask 255.255.255.0 gw 190.1.1.1
ou sudo ip route add 193.17.1.0/24 via 190.1.1.1
- Si besoin est, configurez la table de routage du poste B :
sudo route add -net 190.1.1.0 netmask 255.255.255.0 gw 193.17.1.1
ou sudo ip route add 190.1.1.0/24 via 193.17.1.1
__Astuce__ : Il est possible de ne pas toucher aux tables de routage des postes clients si le routeur est déjà leur **route par défaut**.
[[http://example.com|Lien externe]]
Maintenant, si vous faites un ping du poste A ou du poste B vers son homologue du réseau opposé vous pouvez remarquer qu'ils peuvent maintenant __communiquer entre eux__.
La commande **route sous Windows "route print"** n'est que similaire. Renseignez-vous sur la commande à taper.
[[https://openclassrooms.com/fr/courses/857447-apprenez-le-fonctionnement-des-reseaux-tcp-ip/854659-le-routage]]
----
//Contributeurs : ...//