So verwenden Sie den Arping-Befehl unter Linux

Veröffentlicht: 2022-07-28
Linux-Laptop mit einer Bash-Eingabeaufforderung
fatmawati achmad zaenuri/Shutterstock.com

Der Linux-Befehl arping ist wie ping , aber nur für lokale Netzwerke. Sein Vorteil ist, dass es auf einer niedrigeren Netzwerkebene arbeitet und manchmal Antworten erhält, wenn ping dies nicht kann. Hier erfahren Sie, wie Sie es verwenden.

Das ARP-Protokoll

Eine IP-Adresse ist eine numerische Bezeichnung für ein vernetztes Gerät. Es wird als Adresse verwendet, damit der entsprechende Netzwerkverkehr am richtigen Gerät ankommt. Aber die meisten Geräte in lokalen Netzwerken haben dynamische IP-Adressen. Das heißt, ihre IP-Adresse könnte sich beim nächsten Hochfahren ändern.

Um den Netzwerkverkehr korrekt an das entsprechende Gerät weiterleiten zu können, muss ein Schema verwendet werden, das IP-Adressen MAC-Adressen (Media Access Control) zuordnet. Die MAC-Adresse ist eine eindeutige Identität, die am Herstellungsort eines Geräts festgelegt wird. Eine IP-Adresse ist eine logische Adresse. Die MAC-Adresse ist eine physikalische Adresse.

Was ist ein Datenpaket?
RELATED Was ist ein Datenpaket?

Das Address Resolution Protocol ist der Mittelsmann, der IP-Adressen auf MAC-Adressen abbildet. Das Gerät, das für das Marshallen und Weiterleiten von Netzwerkpaketen in Ihrem Netzwerk verantwortlich ist – normalerweise der Router – erstellt und verwaltet eine ARP-Tabelle, die IP-Adressen mit MAC-Adressen verknüpft.

Wenn der Router Daten an ein ihm unbekanntes Gerät weiterleiten muss, stellt er eine ARP-Anfrage, um die MAC-Adresse für das neue Gerät zu erhalten.

Wenn ein neues Gerät mit Ihrem Netzwerk verbunden wird, wird ihm eine IP-Adresse zugewiesen, aber das reicht nicht aus, um den Datenverkehr tatsächlich dorthin zu leiten. Der Router muss die MAC-Adresse erhalten, die das fehlende Puzzleteil ist. Da die IP-Adresse allein jedoch nicht ausreicht, um Pakete an das Gerät weiterzuleiten, kann Catch-22 die IP-Adresse nicht verwenden, um die Hardware abzufragen, um die MAC-Adresse zu erhalten.

Das Open Systems Interconnection-Modell gruppiert die Technologien, aus denen ein funktionierendes Netzwerk besteht, als eine Reihe von Schichten. Höhere Schichten können ohne die unteren Schichten nicht funktionieren. Es gibt sieben Schichten im OSI-Modell.

  • Schicht 7 ist die oberste Schicht, die Anwendungsschicht . Es stellt dem Computerbenutzer Informationen zur Verfügung und erhält Informationen von ihnen zurück.
  • Schicht 6 ist die Präsentationsschicht . Dadurch wird sichergestellt, dass die Daten das richtige Format oder den richtigen Status haben, wenn sie in das und aus dem Netzwerkformat verschoben werden. Auf dieser Schicht findet die Verschlüsselung und Entschlüsselung statt.
  • Schicht 5 ist die Sitzungsschicht . Eine Sitzung ist eine Netzwerkverbindung zwischen zwei oder mehr Geräten. Diese Schicht befasst sich mit Themen wie Verbindungsaufbau, Handshaking, Timeouts und dem Abbau nicht mehr benötigter Verbindungen.
  • Schicht 4 ist die Transportschicht . Dies ist die Schicht, die Daten auf koordinierte Weise im Netzwerk verschiebt. Diese Schicht befasst sich unter anderem mit Übertragungsraten und Datenmengen. Das Transmission Control Protocol – das TCP in TCP/IP – arbeitet auf dieser Schicht.
  • Schicht 3 ist die Vermittlungsschicht . Hier findet das Routing und die Paketweiterleitung statt. Es ist die Schicht, auf der das Internetprotokoll – das IP in TCP/IP – arbeitet.
  • Schicht 2 ist die Sicherungsschicht . Es wird verwendet, um Pakete zwischen direkt adressierbaren Geräten zu senden, indem Broadcasts an jedes Gerät oder Unicasts an bestimmte MAC-Adressen verwendet werden.
  • Schicht 1 ist die physikalische Schicht. Dies betrifft die physische Infrastruktur, einschließlich Verkabelung, Router und Netzwerk-Switches. Auch die in Wi-Fi verwendeten Funkwellen würden in diese Kategorie fallen.

Wenn der Router ein Paket für eine IP-Adresse empfängt, die nicht in seiner Tabelle enthalten ist, sendet er ein Broadcast-Paket an das gesamte Netzwerk. Es fragt effektiv "Wer hat diese IP-Adresse?" Dies ist eine Layer-2-Nachricht, daher ist sie nicht auf IP-Routing angewiesen.

Das Gerät mit der passenden Adresse antwortet, indem es seine MAC-Adresse zurücksendet. Die IP-Adresse und die MAC-Adresse dieses Geräts können der Zuordnungstabelle hinzugefügt werden. Der normale IP-Verkehr kann jetzt zum Gerät geleitet werden, da die Beziehung zwischen seiner IP-Adresse und seiner MAC-Adresse hergestellt und aufgezeichnet wurde.

RELATED: The Foundation of the Internet: TCP/IP Turns 40

Das Arping-Kommando

All das clevere ARP-Zeug läuft automatisch im Hintergrund ab und erstellt und pflegt die ARP-Tabelle. Der Befehl arping bringt einige der Funktionen der ARP-Abfrage in das Terminalfenster. Es arbeitet auf OSI-Schicht zwei und kann eine Antwort von einem Gerät anfordern, wenn ping dies nicht tut.

Auf Fedora 36 war arping bereits installiert, aber wir mussten es auf Manjaro 21 und Ubuntu 22.04 installieren.

Unter Ubuntu lautet der Befehl:

 sudo apt install arping 

Arping auf Ubuntu installieren

Auf Manjaro müssen Sie Folgendes eingeben:

 sudo pacman -Syarping 

Arping auf Manjaro installieren

Der einfachste Weg, arping zu verwenden, ist mit einer IP-Adresse. Dies muss die Adresse eines direkt adressierbaren Geräts sein, das mit dem lokalen Netzwerk verbunden ist. Da arping auf Schicht zwei arbeitet, ist kein Routing möglich. Sie müssen sudo mit arping .

 sudo arping 192.168.1.17 

Verwenden von Arping mit einer IP-Adresse

Drücken Sie zum Stoppen Strg+C. Die zurückgegebenen Informationen sind die MAC-Adresse des antwortenden Geräts, die Indexnummer der arping -Anforderung und die Umlaufzeit für die Ausführung der arping -Anforderung.

Vergleichen Sie die Ausgabe mit der des ping Befehls unten. Der ping -Befehl gibt weitere Informationen über das Timing des Netzwerkpaket-Roundtrips zurück. Der Befehl arping gibt Ihnen weniger Timing-Statistiken, enthält aber die MAC-Adresse des Geräts.

 Ping 192.168.1.17 

Verwenden von Ping mit einer IP-Adresse

Sie können auch den Netzwerknamen des Geräts mit arping .

 sudo arping fedora-36.local 

Verwenden von Arping mit einer IP-Adresse

Sie können die Option -c (count) verwenden, um arping , nach einer festgelegten Anzahl von Anfragen aufzuhören. Dieser Befehl weist arping an, es zweimal zu versuchen und dann aufzuhören.

 sudo arping -c 2 192.168.1.18 

Verwenden der Option -c, um Arping anzuweisen, nach zwei Anfragen zu stoppen

Wenn Sie mehrere Netzwerkschnittstellen in Ihrem Computer haben, können Sie die Option -I (Schnittstelle) verwenden, um arping mitzuteilen, welche Schnittstelle verwendet werden soll.

Sie können den Befehl ip link verwenden, um Ihre Netzwerkschnittstellen aufzulisten.

 IP-Link 

Verwenden von IP-Link zum Auflisten der Netzwerkschnittstellen

Dieser Computer hat drei Schnittstellen. Die virtuelle Schnittstelle lo wird als Loopback für interne Verbindungen zwischen Software auf demselben Computer verwendet. Es nützt uns hier nichts. Wir können entweder die Ethernet-Verbindung enp3s0 oder die drahtlose Schnittstelle wlan0 .

Dieser Befehl weist arping an, die von uns gewählte Schnittstelle zu verwenden und keine eigene Auswahl zu treffen.

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

Verwenden der Option -I, um Arping anzuweisen, eine bestimmte Netzwerkschnittstelle zu verwenden

Verwenden von Arping in Skripten

Indem wir arping in eine Schleife in einem Skript einschließen, können wir es über eine Reihe von IP-Adressen hinweg zum Laufen bringen. Kopieren Sie den Text aus diesem Skript und speichern Sie ihn in einer Datei namens „scan-range.sh“.

Sie müssen das Skript bearbeiten und alle Vorkommen von 192.168.1 durch die IP-Adresse Ihres Netzwerks ersetzen.

 #!/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

Das Skript akzeptiert zwei Befehlszeilenparameter. Diese werden als letztes Oktett der IP-Adressen des Bereichs verwendet, in dem Sie arping verwenden möchten. Wenn Sie also 20 und 30 an das Skript übergeben, würde die Schleife bei 192.168.1 beginnen. 20 und würde nach Verwendung der IP-Adresse 192.168.1 beendet. 30 .

Auf die Parameter wird innerhalb des Skripts als $1 und $2 zugegriffen. Diese werden in einer for -Schleife im C-Stil verwendet. Bei jedem Durchlauf der for -Schleife wird $device auf die nächste IP-Adresse im Bereich gesetzt.

Das Skript verwendet dasselbe arping -c -Format, das wir bereits gesehen haben, aber dieses Mal verlangen wir nur, dass eine einzige ARP-Anforderung an jedes Gerät in der Reihe gesendet wird.

Die Ausgabe des arping Befehls wird durch grep geleitet.

Die grep Syntax kann in Ihrem Skript vereinfacht werden. grep sucht nach einer von zwei Zeichenfolgen, entweder „1 Antwort“ oder „1 Pakete empfangen“. Dies liegt daran, dass auf den Testcomputern unterschiedliche arping -Versionen installiert waren und sie unterschiedliche Terminologie verwenden. Wenn grep einen dieser Ausdrücke findet, ist sein Ausgangswert null.

Wenn Sie wissen, welche der Phrasen Ihre Version von arping verwendet, können Sie die grep -Syntax vereinfachen, indem Sie die andere Phrase entfernen.

Die if -Anweisung testet $? – eine Variable, die den Beendigungscode des zuletzt beendeten Prozesses enthält – um zu sehen, ob er Null ist. Ist dies der Fall, verwendet es echo , um eine Erfolgsmeldung im Terminalfenster auszugeben. Wenn der Test fehlschlägt, hat grep keinen der Strings gefunden, was bedeutet, dass die ARP-Anfrage fehlgeschlagen ist.

Machen Sie Ihr Skript ausführbar, indem Sie den Befehl chmod und die Option +x verwenden.

 chmod +x scan-range.sh 

Verwenden Sie die Option chmod +x, um das Skript ausführbar zu machen

Wir führen es aus und scannen den IP-Bereich von 15 bis 20. An einige dieser Adressen sind keine Geräte angeschlossen, daher sollten wir einige Fehler sehen. Denken Sie daran, sudo zu verwenden. Wir werden auch versuchen, das Gerät unter 192.168.1.15 zu ping .

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

Ausführen des Skripts und Ausführen von Ping

Wir erhalten eine Mischung aus Erfolgen und Misserfolgen, wie Sie es in jedem Netzwerk tun würden. Beachten Sie jedoch, dass das Gerät bei 192.168.1.15 zwar auf die ARP-Anfrage der Schicht zwei antwortet, aber nicht auf die ping -Anforderung der Schicht drei.

Wenn Sie das Gerät angepingt und den Fehler bemerkt hätten, wären Sie wahrscheinlich geneigt zu überprüfen, ob es angeschlossen und online ist und ob Sie das Gerät 192.168.1.15 ping können.

Aber mit arping können Sie überprüfen, ob es verbunden, online und über das Netzwerk zugänglich ist. Das würde Ihre Fehlerbehebung anleiten, um sich mit Routing- und ARP-Tabellenproblemen zu befassen.

Eine tiefere Einsicht

Die Netzwerkzwiebel hat viele Schichten. Wenn ping Sie nicht weiterbringt, legen Sie eine Ebene tiefer und sehen Sie, was arping Ihnen sagen kann.

VERWANDT: So verwalten Sie Linux-WLAN-Netzwerke mit Nmtui