Un guide d’utilisation de la commande arping sous Linux

Un guide d’utilisation de la commande arping sous Linux

La commande Linux  arpingest similaire à ping, mais uniquement pour les réseaux locaux. Son avantage est qu’il fonctionne à une couche réseau inférieure, obtenant parfois des réponses alors pingqu’il ne le peut pas. Voici comment l’utiliser.

Protocole ARP

Une adresse IP est une désignation numérique pour un périphérique réseau. Il est utilisé comme adresse afin que le trafic réseau approprié soit acheminé vers le bon appareil. Mais la plupart des appareils sur les réseaux locaux ont des adresses IP dynamiques. C’est-à-dire que leur adresse IP peut très bien changer au prochain démarrage.

Pour pouvoir acheminer correctement le trafic réseau vers le périphérique approprié, vous devez utiliser un schéma qui mappe les adresses IP aux adresses MAC (Media Access Control). L’adresse MAC est un identifiant unique attribué au moment de la fabrication de l’appareil. Une adresse IP est une adresse logique. L’adresse MAC est une adresse physique.

Le protocole de résolution d’adresse est un proxy qui mappe les adresses IP aux adresses MAC. Le périphérique responsable du regroupement et du transfert des paquets réseau sur votre réseau, généralement un routeur, crée et gère une table ARP qui associe les adresses IP aux adresses MAC.

Si le routeur doit transmettre des données à un appareil qu’il ne connaît pas, il envoie une requête ARP pour obtenir l’adresse MAC du nouvel appareil.

Lorsqu’un nouvel appareil rejoint votre réseau, une adresse IP lui est attribuée, mais pas suffisamment pour diriger le trafic vers celui-ci. Le routeur doit obtenir l’adresse MAC, qui est la pièce manquante du puzzle. Mais comme l’adresse IP seule n’est pas une information suffisante pour acheminer les paquets vers l’appareil, Catch-22 ne peut pas utiliser l’adresse IP pour interroger le matériel afin d’obtenir l’adresse MAC.

Le modèle d’interconnexion des systèmes ouverts regroupe les technologies qui composent un réseau de travail en une série de couches. Les couches supérieures ne peuvent pas fonctionner sans les couches inférieures. Le modèle OSI se compose de sept couches.

  • La couche 7 est la couche supérieure, la couche application. Il fournit des informations à l’utilisateur de l’ordinateur et reçoit des informations de sa part.
  • La couche 6 est la couche de présentation. Cela garantit que les données sont dans le format ou l’état correct lors du déplacement dans et hors du format réseau. Le cryptage et le décryptage ont lieu à ce niveau.
  • La couche 5 est la couche de session. Une session est une connexion réseau entre deux appareils ou plus. Cette couche traite des problèmes tels que l’initiation de la connexion, l’établissement de liaison, les délais d’attente et l’arrêt des connexions qui ne sont plus nécessaires.
  • La couche 4 est la couche de transport. Il s’agit de la couche qui déplace les données sur le réseau de manière coordonnée. Ce niveau est lié à des éléments tels que les taux de transfert et les volumes de données. Le protocole de contrôle de transmission – TCP dans TCP/IP – opère à cette couche.
  • La couche 3 est la couche réseau. C’est là que le routage et le transfert des paquets ont lieu. C’est la couche au niveau de laquelle le protocole Internet opère – IP dans TCP/IP.
  • La couche 2 est la couche liaison de données. Il est utilisé pour envoyer des paquets entre les appareils avec un adressage direct en utilisant la diffusion vers chaque appareil ou la monodiffusion vers des adresses MAC spécifiques.
  • La couche 1 est la couche physique. Cela s’applique à l’infrastructure physique, y compris les câbles, les routeurs et les commutateurs réseau. Les ondes radio utilisées dans le Wi-Fi entrent également dans cette catégorie.

Lorsqu’un routeur reçoit un paquet pour une adresse IP qui n’est pas dans sa table, il envoie un paquet de diffusion à l’ensemble du réseau. Il demande en fait « Qui a cette adresse IP? » Il s’agit d’un message de deuxième couche, il est donc indépendant du routage IP.

L’appareil avec l’adresse correspondante répond en renvoyant son adresse MAC. L’adresse IP et l’adresse MAC de cet appareil peuvent être ajoutées à la table de mappage. Le trafic IP normal peut maintenant être acheminé vers l’appareil puisque l’association entre son adresse IP et son adresse MAC est établie et enregistrée.

L’équipe Arping

Toutes les opérations ARP intelligentes sont effectuées automatiquement en arrière-plan, créant et maintenant la table ARP. La commande arpingapporte certaines des fonctionnalités de la requête ARP à la fenêtre du terminal. Il fonctionne au niveau de la deuxième couche OSI et peut demander une réponse à l’appareil lorsqu’il pingne le fait pas.

Il était déjà installé sur Fedora 36 arping, ​​mais nous devions l’installer sur Manjaro 21 et Ubuntu 22.04.

Sur Ubuntu la commande est :

sudo apt install arping

Sur Manjaro vous devez taper :

sudo pacman -Sy arping

La façon la plus simple de l’utiliser arpingest avec une adresse IP. Il doit s’agir de l’adresse d’un appareil directement adressable connecté au réseau local. Puisqu’il arpingopère à la deuxième couche, le routage n’est pas possible. Vous devrez utiliser sudoavec arping.

sudo arping 192.168.1.17

Appuyez sur Ctrl+C pour arrêter. Les informations renvoyées sont l’adresse MAC de l’appareil qui répond, le arpingnuméro de séquence de la demande et le temps d’aller-retour pour terminer la arpingdemande.

Comparez la sortie avec la sortie pingde la commande ci-dessous. La commande pingrenvoie des informations supplémentaires sur le temps d’aller-retour d’un paquet réseau. La commande arpingdonne moins de statistiques temporelles mais inclut l’adresse MAC de l’appareil.

ping 192.168.1.17

Vous pouvez également utiliser le nom de réseau de l’appareil avec l’extension arping.

sudo arping fedora-36.local

Vous pouvez utiliser l’ -coption (nombre) arping pour vous arrêter après un certain nombre de requêtes. Cette commande dit arpingessayez deux fois puis arrêtez.

sudo arping -c 2 192.168.1.18

Si vous disposez de plusieurs interfaces réseau sur votre ordinateur, vous pouvez utiliser l’ -Ioption (interface) pour spécifier arpingl’interface à utiliser.

Vous pouvez utiliser cette ip linkcommande pour obtenir une liste des interfaces réseau.

ip link

Cet ordinateur a trois interfaces. L’interface virtuelle loest utilisée comme une boucle pour les connexions internes entre les programmes sur le même ordinateur. Nous n’en avons pas besoin ici. Nous pouvons utiliser soit une connexion Ethernet, enp3s0soit une interface sans fil wlan0.

Cette commande nous dit d’ arping utiliser l’interface que nous avons choisie, de ne pas faire notre propre choix.

sudo arping -c 2 -I enp3s0 manjaro-21.local

Utiliser l’arpège dans les scripts

En enveloppant arpingla boucle dans un script, nous pouvons la faire fonctionner avec une plage d’adresses IP. Copiez le texte de ce script et enregistrez-le dans un fichier nommé « scan-range.sh ».

Vous devrez modifier le script et remplacer toutes les occurrences de 192.168.1 par l’adresse IP de votre réseau.

Le script prend deux paramètres de ligne de commande. Ils sont utilisés comme dernier octet des adresses IP dans la plage que vous souhaitez utiliser arping. Ainsi, si vous transmettez 20 et 30 au script, la boucle commencera à 192.168.1.20 et se terminera après avoir utilisé l’adresse IP 192.168.1.30.

Les paramètres à l’intérieur d’un script sont accessibles de la même manière $1que $2. Ils sont utilisés dans forla boucle de style C. Chaque rotation de la forboucle $devicedéfinit l’adresse IP suivante dans la plage.

Le script utilise le même arping -cformat que nous avons déjà vu, mais cette fois, nous ne demandons qu’une seule requête ARP à envoyer par appareil de la gamme.

La sortie arpingde la commande est acheminée via grep.

La syntaxe greppeut être simplifiée dans votre script. greprecherche l’une des deux chaînes : « 1 ​​réponse » ou « 1 paquet reçu ». En effet, les ordinateurs de test avaient des versions différentes arpinget utilisaient une terminologie différente. S’il greptrouve l’une de ces phrases, sa valeur de sortie sera zéro.

Une fois que vous savez quelle phrase arpingest utilisée dans votre version, vous pouvez simplifier la grepsyntaxe en supprimant l’autre phrase.

L’opérateur ifvérifie la $?variable contenant le code de sortie du dernier processus qui s’est terminé pour voir si elle est nulle. Si c’est le cas, il utilise echopour imprimer un message de réussite dans la fenêtre du terminal. Si le test échoue, grepaucune des chaînes n’a été trouvée, ce qui signifie que la requête ARP a échoué.

Rendez votre script exécutable avec une chmodcommande et +xun paramètre.

chmod +x scan-range.sh

Nous allons l’exécuter et analyser une plage d’adresses IP de 15 à 20. Il n’y a aucun appareil connecté à certaines de ces adresses, nous devrions donc voir quelques plantages. N’oubliez pas d’utiliser sudo. Nous essaierons également de nous connecter à l’ pingappareil au 192.168.1.15.

sudo. /scan-range.sh 15 20ping 192.168.1.15

Nous obtenons un mélange de succès et d’échecs, comme n’importe quel réseau. Mais notez que si le périphérique à 192.168.1.15 répond à une requête ARP de couche 2, il ne répond pas à  pingune requête de couche 3.

Si vous deviez envoyer un ping à l’appareil et constater une panne, vous seriez probablement tenté de vérifier s’il est connecté au réseau et si vous pouvez pingquitter l’appareil 192.168.1.15.

Mais avec de l’aide arping, vous pouvez vous assurer qu’il est connecté, en ligne et accessible sur le réseau. Cela vous aidera à commencer à résoudre les problèmes de routage et de tables ARP.

Compréhension plus approfondie

Il y a plusieurs couches dans un arc net. Si pingvous n’allez nulle part, déposez le calque et voyez ce qu’il arpingpeut vous dire.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *