Comment utiliser la commande arping sous Linux

Publié: 2022-07-28
Ordinateur portable Linux affichant une invite bash
fatmawati achmad zaenuri/Shutterstock.com

La commande Linux arping est similaire à ping , mais uniquement pour les réseaux locaux. Son avantage est qu'il fonctionne à un niveau de réseau inférieur, obtenant parfois des réponses lorsque le ping ne le peut pas. Voici comment l'utiliser.

Le protocole ARP

Une adresse IP est une étiquette numérique pour un appareil en réseau. Il est utilisé comme adresse afin que le trafic réseau approprié arrive au bon périphérique. Mais la plupart des appareils sur les réseaux locaux ont des adresses IP dynamiques . Autrement dit, leur adresse IP pourrait bien changer au prochain démarrage.

Pour pouvoir acheminer correctement le trafic réseau vers le périphérique approprié, un schéma doit être utilisé qui mappe les adresses IP aux adresses MAC (Media Access Control). L'adresse MAC est une identité unique établie au point de fabrication d'un appareil. Une adresse IP est une adresse logique . L'adresse MAC est une adresse physique .

Qu'est-ce qu'un paquet de données ?
CONNEXION Qu'est-ce qu'un paquet de données ?

Le protocole de résolution d'adresse est l'intermédiaire qui mappe les adresses IP aux adresses MAC. Le périphérique responsable du marshaling et de la direction des paquets réseau dans votre réseau, généralement le routeur, crée et gère une table ARP qui relie les adresses IP aux adresses MAC.

Si le routeur doit acheminer des données vers un périphérique dont il ne connaît pas l'existence, il effectue une requête ARP pour obtenir l'adresse MAC du nouveau périphérique.

Lorsqu'un nouvel appareil est connecté à votre réseau, une adresse IP lui est attribuée, mais cela ne suffit pas pour acheminer 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 à elle seule ne suffit pas pour acheminer les paquets vers l'appareil, le 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 de 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. Il y a sept couches dans le modèle OSI.

  • La couche 7 est la couche la plus élevée, la couche d' 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 bon format ou dans le bon état lorsqu'elles se déplacent vers et depuis le format réseau. Le chiffrement et le déchiffrement ont lieu au niveau de cette couche.
  • La couche 5 est la couche de session . Une session est une connexion réseau entre deux appareils ou plus. Cette couche s'occupe de questions telles que l'établissement d'une connexion, l'établissement d'une liaison, les délais d'attente et la rupture des connexions qui ne sont plus nécessaires.
  • La couche 4 est la couche de transport . C'est la couche qui déplace les données sur le réseau de manière coordonnée. Cette couche concerne 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) fonctionne à cette couche.
  • La couche 3 est la couche réseau . C'est là que le routage et le transfert de paquets ont lieu. C'est la couche sur laquelle le protocole Internet (l'IP dans TCP/IP) opère.
  • La couche 2 est la couche liaison de données . Il est utilisé pour envoyer des paquets entre des périphériques directement adressables en utilisant des diffusions vers chaque périphérique ou des monodiffusions vers des adresses MAC spécifiques.
  • La couche 1 est la couche physique . Cela concerne l'infrastructure physique, y compris le câblage, les routeurs et les commutateurs réseau. Les ondes radio utilisées dans le Wi-Fi entreraient également dans cette catégorie.

Lorsque le 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 effectivement "Qui a cette adresse IP?" Il s'agit d'un message de couche deux, il ne repose donc pas sur le 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 désormais être acheminé vers l'appareil car la relation entre son adresse IP et son adresse MAC a été établie et enregistrée.

CONNEXION : La fondation d'Internet : TCP/IP fête ses 40 ans

La commande d'arpège

Tous les trucs ARP intelligents se déroulent automatiquement en arrière-plan, construisant 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 deux de la couche OSI et peut solliciter une réponse d'un périphérique lorsque le ping ne le fait pas.

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

Sur Ubuntu la commande est :

 sudo apt install arping 

Installer l'arping sur Ubuntu

Sur Manjaro vous devez taper :

 sudo pacman -Sy arping 

Installation d'arping sur Manjaro

La façon la plus simple d'utiliser arping est avec une adresse IP. Il doit s'agir de l'adresse d'un équipement directement adressable, connecté au réseau local. Parce que arping fonctionne à la couche deux, aucun routage n'est possible. Vous devrez utiliser sudo avec arping .

 sudo arping 192.168.1.17 

Utiliser l'arping avec une adresse IP

Appuyez sur Ctrl+C pour arrêter. Les informations renvoyées sont l'adresse MAC de l'appareil qui répond, le numéro d'index de la demande d' arping et le temps d'aller-retour pour que la demande d' arping soit terminée.

Comparez la sortie à celle de la commande ping , ci-dessous. La commande ping renvoie plus d'informations sur la synchronisation de l'aller-retour du paquet réseau. La commande arping vous donne moins de statistiques de synchronisation, mais elle inclut l'adresse MAC de l'appareil.

 ping 192.168.1.17 

Utiliser ping avec une adresse IP

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

 sudo arping fedora-36.local 

Utiliser l'arping avec une adresse IP

Vous pouvez utiliser l'option -c (count) pour indiquer à l' arping de s'arrêter après un nombre défini de requêtes. Cette commande indique à l' arping d'essayer deux fois puis de s'arrêter.

 sudo arping -c 2 192.168.1.18 

Utilisation de l'option -c pour dire à l'arping de s'arrêter après avoir fait deux requêtes

Si vous avez plusieurs interfaces réseau sur votre ordinateur, vous pouvez utiliser l'option -I (interface) pour indiquer à arping quelle interface utiliser.

Vous pouvez utiliser la commande ip link pour répertorier vos interfaces réseau.

 lien IP 

Utilisation du lien ip pour lister les interfaces réseau

Cet ordinateur a trois interfaces. L'interface virtuelle lo est utilisée comme un bouclage pour les connexions internes entre les logiciels sur le même ordinateur. Cela ne nous sert à rien ici. Nous pouvons utiliser la connexion Ethernet enp3s0 ou l'interface sans fil wlan0 .

Cette commande indique à l' arping d'utiliser l'interface que nous choisissons et de ne pas faire sa propre sélection.

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

Utilisation de l'option -I pour indiquer à arping d'utiliser une interface réseau spécifique

Utiliser l'arpège dans les scripts

En enveloppant arping dans une boucle dans un script, nous pouvons le faire fonctionner sur une plage d'adresses IP. Copiez le texte de ce script et enregistrez-le dans un fichier appelé "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.

 #!/bin/bash for (( device = $1 ; device <= $2 ; device ++ )) do arping -c 1 192.168.1. $device | grep -E "1 response|1 packets received" > /dev/null if [ $? == 0 ] ; then echo "192.168.1. $device responded." else echo "192.168.1. $device didn't respond." fi  done

Le script accepte deux paramètres de ligne de commande. Celles-ci sont utilisées comme dernier octet des adresses IP de la plage sur laquelle vous souhaitez utiliser arping . Ainsi, si vous transmettez 20 et 30 au script, la boucle commencera à 192.168.1. 20 et se terminerait après avoir utilisé l'adresse IP 192.168.1. 30 .

Les paramètres sont accessibles à l'intérieur du script en tant que $1 et $2 . Ceux-ci sont utilisés dans une boucle for style C. À chaque rotation de la boucle for , $device est défini sur la prochaine adresse IP de la plage.

Le script utilise le même format arping -c que nous avons déjà vu, mais cette fois, nous ne demandons qu'une seule requête ARP à envoyer à chaque périphérique de la plage.

La sortie de la commande arping 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 paquets reçus". C'est parce que les ordinateurs de test avaient différentes versions d' arping et qu'ils utilisent une terminologie différente. Si grep trouve l'une de ces phrases, sa valeur de sortie sera zéro.

Lorsque vous savez laquelle des phrases votre version d' arping utilise, vous pouvez simplifier la syntaxe grep en supprimant l'autre phrase.

L'instruction if teste $? - une variable qui contient le code de sortie du dernier processus qui s'est terminé - pour voir s'il est égal à zéro. 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 n'a trouvé aucune des chaînes, ce qui signifie que la requête ARP a échoué.

Rendez votre script exécutable en utilisant la commande chmod et l'option +x .

 chmod +x scan-range.sh 

Utilisation de l'option chmod +x pour rendre le script exécutable

Nous allons l'exécuter et analyser la plage d'adresses IP de 15 à 20. Certaines de ces adresses n'ont pas de périphériques connectés, nous devrions donc voir quelques échecs. N'oubliez pas d'utiliser sudo . Nous essaierons également d'envoyer un ping à l'appareil à 192.168.1.15.

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

Exécution du script et exécution du ping

Nous obtenons un mélange de succès et d'échecs, comme vous le feriez sur n'importe quel réseau. Mais notez que bien que le périphérique à 192.168.1.15 réponde à la requête ARP de la couche deux, il ne répond pas à la requête ping de la couche trois.

Si vous aviez envoyé un ping à l'appareil et noté l'échec, vous seriez probablement enclin à vérifier qu'il était branché, en ligne et si vous pouviez envoyer un ping à l' appareil 192.168.1.15.

Mais avec arping , vous pouvez vérifier qu'il est connecté, en ligne et accessible au réseau. Cela guiderait votre dépannage pour commencer à examiner les problèmes de routage et de table ARP.

Une analyse plus approfondie

L'oignon du réseautage comporte de nombreuses couches. Si le ping ne vous mène nulle part, déposez un calque et voyez ce que arping peut vous dire.

CONNEXION: Comment gérer les réseaux Wi-Fi Linux avec Nmtui