GNU/Linux >> Tutoriels Linux >  >> Linux

Introduction aux principes fondamentaux du routage IP Linux (Partie 1)

Vous savez probablement comment vérifier les routes existantes (ou même ajouter/modifier des routes) sous Linux à l'aide de la commande route ou netstat. Vous avez peut-être fait cela sans comprendre grand-chose au fonctionnement du routage IP.

Cet article vous aidera à comprendre les principes du routage IP et son fonctionnement.

Ceci est la 1ère partie de la série d'articles Routage IP.

Le routage IP implique la transmission de datagrammes IP. C'est un processus simple dans lequel l'hôte envoie le datagramme IP directement à la destination si l'hôte de destination est connecté. Par exemple, via une liaison point à point ou via un réseau partagé. Si l'hôte de destination n'est pas directement connecté, l'hôte envoie le datagramme IP au routeur par défaut et laisse le routeur décider où envoyer le datagramme IP.

Principes de routage

Une différence fondamentale entre un hôte normal et un routeur est qu'un hôte ne transmet jamais un datagramme d'une interface à une autre alors qu'un routeur peut transmettre un datagramme.

Aujourd'hui, la plupart des systèmes multi-utilisateurs peuvent être configurés pour agir comme un routeur. Ainsi, un algorithme de routage commun peut être spécifié qui peut être utilisé aussi bien par le routeur que par un hôte. Lorsqu'un hôte peut agir comme un routeur, on dit généralement que l'hôte a une fonctionnalité de routeur intégrée. Un tel hôte qui a une fonctionnalité de routeur intégrée ne devrait jamais transmettre de datagrammes tant qu'il n'est pas configuré pour le faire, c'est-à-dire configuré pour agir comme un routeur.

La couche IP maintient une table de routage qu'elle utilise tout en prenant des décisions sur ce qu'il faut faire avec le datagramme reçu. Lorsque le gramme de données est reçu du réseau, la couche IP vérifie d'abord son adresse IP pour voir si l'adresse IP est la sienne ou non.

Dans le cas où l'adresse IP de destination dans le datagramme est la sienne, le datagramme est envoyé au protocole approprié au niveau de la couche de transport, mais si l'adresse de destination n'est pas la sienne, le datagramme est transmis si l'hôte a été configuré pour agir comme un routeur sinon le datagramme est rejeté.

Les données de la table de routage se présentent généralement sous la forme d'entrées. Une entrée de table de routage typique contient les entrées principales suivantes :

  • Adresse IP de destination  : ce champ représente l'adresse IP de la destination. Cette adresse IP peut être l'adresse d'un seul hôte ou celle d'un réseau. Si cette entrée contient l'adresse IP d'un hôte, elle est signifiée par un ID d'hôte non nul dans l'adresse tandis que si l'entrée contient l'adresse IP d'un réseau, elle est signifiée par une valeur d'ID d'hôte de 0.
  • Adresse IP du prochain routeur :Pourquoi avons-nous utilisé le terme « suivant », c'est parce que ce n'est pas toujours le routeur final, mais il pourrait très bien s'agir d'un routeur intermédiaire. Cette entrée donne l'adresse IP du prochain routeur qui décide comment envoyer plus loin un gramme de données IP reçu sur son interface.
  • Drapeaux :Ce champ fournit un autre ensemble d'informations vitales telles que l'adresse IP de destination (spécifiée ci-dessus) est une adresse hôte ou une adresse réseau. De plus, les drapeaux indiquent si le routeur suivant (spécifié ci-dessus) est vraiment un routeur suivant ou une interface directement connectée.
  • Spécifications de l'interface réseau  :Certaines spécifications concernant l'interface réseau doivent être transmises au datagramme pour une transmission ultérieure.

Comment fonctionne le routage de base ?

Donc, si nous essayons brièvement de visualiser le processus de routage maintenant, nous voyons que dès qu'un datagramme d'un réseau est reçu au niveau de la couche IP d'un hôte (qui est configuré pour agir comme un routeur), puis après avoir vérifié que l'adresse IP de destination l'adresse dans le paquet n'est pas celle de cet hôte les tables de routage sont consultées.

Toute entrée dont le premier champ correspond à l'adresse IP de destination complètement (un hôte) ou partiellement (un réseau) signalera l'adresse IP du routeur suivant. Il s'agit des informations vitales dont un hôte (agissant comme un routeur) aurait besoin pour transférer un paquet, car ces informations indiquent directement sur quel routeur suivant le datagramme doit être transféré. Tous les autres champs de l'entrée facilitent la prise de décision en fournissant plus d'informations pour le routage.

Dans le paragraphe ci-dessus, nous construisons une compréhension de base, mais si nous essayons d'approfondir le niveau, les points suivants donnent des informations détaillées sur l'algorithme de la table de routage :

  • Tout d'abord, la table de routage est recherchée pour une entrée dont le champ "Adresse IP de destination" correspond complètement à l'adresse IP de destination du datagramme. Par complètement, cela signifie que l'ID hôte et l'ID réseau des adresses IP correspondent. S'il est trouvé, le datagramme est envoyé à cette interface ou au routeur intermédiaire.
  • Si aucune correspondance complète n'est trouvée, une recherche d'ID de réseau correspondant est effectuée. S'il est trouvé, le datagramme est transmis au routeur indiqué. Nous voyons donc que tous les hôtes de ce réseau sont gérés par cette seule entrée dans la table de routage.
  • Si aucune des deux réponses ci-dessus n'est vraie, le datagramme est transmis à un "routeur par défaut".
  • Si l'étape ci-dessus échoue également, c'est-à-dire qu'il n'y a pas de routeur par défaut, le datagramme finit par ne pas être livré. Tout datagramme non livrable produirait un hôte ICMP inaccessible ou Réseau ICMP inaccessible erreur et cette erreur est renvoyée à l'application qui a généré ce datagramme.

Parfois, on se demande pourquoi il y a deux types d'entrées dans la table de routage ou, pour être plus précis, pourquoi des entrées liées au réseau sont nécessaires dans un routeur ? Eh bien, avoir des entrées dans la table de routage correspondant aux réseaux présente un gros avantage. L'avantage est qu'en ayant une entrée liée à un réseau complet, on évite d'avoir un grand nombre d'entrées distinctes de chaque hôte sur ce réseau. Cela ramène la taille de la table de routage à un niveau significatif, ce qui est toujours bon.

Commande pour lister les tables de routage

Vous pouvez utiliser la commande netstat pour répertorier les tables de routage comme indiqué ci-dessous.

$ netstat -rn
Kernel IP routing table
Destination  Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.2.0  0.0.0.0         255.255.255.0   U         0 0        0    eth0
169.254.0.0  0.0.0.0         255.255.0.0     U         0 0        0    eth0
0.0.0.0      192.168.2.1     0.0.0.0         UG        0 0        0    eth0

La sortie fournit des informations détaillées sur les adresses IP de destination et leurs passerelles. Le drapeau « U » suggère que la route est active et le drapeau « G » suggère que le routeur est vers une passerelle (routeur). Si cet indicateur n'est pas défini, on peut supposer que la destination est directement connectée.


Linux
  1. Introduction à la commande Linux chown

  2. Introduction à Nmap sur Kali Linux

  3. Introduction à la commande alternatives sous Linux

  4. Fondamentaux des signaux Linux - Partie I

  5. Introduction aux threads Linux – Partie I

Une introduction à la détection de mouvement de base sous Linux

Une introduction au navigateur Vivaldi sous Linux

Introduction à la gestion des conteneurs Linux

Tout est un fichier sous Linux - Partie 2

Tout est un fichier sous Linux - Partie 1

Introduction aux cgroups d'un administrateur système Linux