Un guide d’utilisation de la commande arping sous Linux
La commande Linux arping
est 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 ping
qu’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 arping
apporte 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 ping
ne 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 arping
est avec une adresse IP. Il doit s’agir de l’adresse d’un appareil directement adressable connecté au réseau local. Puisqu’il arping
opère à la deuxième couche, le routage n’est pas possible. Vous devrez utiliser sudo
avec 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 arping
numéro de séquence de la demande et le temps d’aller-retour pour terminer la arping
demande.
Comparez la sortie avec la sortie ping
de la commande ci-dessous. La commande ping
renvoie des informations supplémentaires sur le temps d’aller-retour d’un paquet réseau. La commande arping
donne 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’ -c
option (nombre) arping
pour vous arrêter après un certain nombre de requêtes. Cette commande dit arping
essayez 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’ -I
option (interface) pour spécifier arping
l’interface à utiliser.
Vous pouvez utiliser cette ip link
commande pour obtenir une liste des interfaces réseau.
ip link
Cet ordinateur a trois interfaces. L’interface virtuelle lo
est 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, enp3s0
soit 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 arping
la 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 $1
que $2
. Ils sont utilisés dans for
la boucle de style C. Chaque rotation de la for
boucle $device
définit l’adresse IP suivante dans la plage.
Le script utilise le même arping -c
format 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 arping
de la commande est acheminée via grep
.
La syntaxe grep
peut être simplifiée dans votre script. grep
recherche 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 arping
et utilisaient une terminologie différente. S’il grep
trouve l’une de ces phrases, sa valeur de sortie sera zéro.
Une fois que vous savez quelle phrase arping
est utilisée dans votre version, vous pouvez simplifier la grep
syntaxe en supprimant l’autre phrase.
L’opérateur if
vé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 echo
pour imprimer un message de réussite dans la fenêtre du terminal. Si le test échoue, grep
aucune 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 chmod
commande et +x
un 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’ ping
appareil au 192.168.1.15.
sudo. /scan-range.sh 15 20
ping 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 à ping
une 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 ping
quitter 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 ping
vous n’allez nulle part, déposez le calque et voyez ce qu’il arping
peut vous dire.
Laisser un commentaire