So verwenden Sie den Arping-Befehl unter Linux
Veröffentlicht: 2022-07-28 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.
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
Auf Manjaro müssen Sie Folgendes eingeben:
sudo pacman -Syarping
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
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
Sie können auch den Netzwerknamen des Geräts mit arping
.
sudo arping fedora-36.local
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
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
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 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
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
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