{{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 : ...//