Cum să utilizați comanda arping pe Linux
Publicat: 2022-07-28
Comanda Linux arping
este ca ping
, dar numai pentru rețelele locale. Avantajul său este că funcționează la un nivel inferior de rețea, uneori obținând răspunsuri atunci când ping
-ul nu poate. Iată cum să-l folosești.
Protocolul ARP
O adresă IP este o etichetă numerică pentru un dispozitiv în rețea. Este folosit ca adresă, astfel încât traficul de rețea corespunzător să ajungă la dispozitivul corect. Dar majoritatea dispozitivelor din rețelele locale au adrese IP dinamice . Adică, adresa lor IP s-ar putea schimba la următoarea pornire.
Pentru a putea direcționa corect traficul de rețea către dispozitivul corespunzător, trebuie utilizată o schemă care mapează adresele IP la adresele Media Access Control (MAC). Adresa MAC este o identitate unică stabilită la punctul de fabricație a unui dispozitiv. O adresă IP este o adresă logică . Adresa MAC este o adresă fizică .
Protocolul de rezoluție a adreselor este intermediarul care mapează adresele IP la adresele MAC. Dispozitivul responsabil pentru distribuirea și direcționarea pachetelor de rețea în rețeaua dvs. - de obicei, routerul - creează și menține un tabel ARP care leagă adresele IP de adresele MAC.
Dacă routerul trebuie să direcționeze date către un dispozitiv despre care nu știe, face o solicitare ARP pentru a obține adresa MAC pentru noul dispozitiv.
Când un dispozitiv nou este conectat la rețeaua dvs., i se atribuie o adresă IP, dar aceasta nu este suficientă pentru a direcționa traficul către acesta. Routerul trebuie să obțină adresa MAC care este piesa lipsă a puzzle-ului. Dar, deoarece adresa IP în sine nu este suficientă informație pentru a direcționa pachetele către dispozitiv, Catch-22 nu poate folosi adresa IP pentru a interoga hardware-ul pentru a obține adresa MAC.
Modelul de interconectare a sistemelor deschise grupează tehnologiile care alcătuiesc o rețea de lucru ca o serie de straturi. Straturile superioare nu pot funcționa fără straturile inferioare. Există șapte straturi în modelul OSI.
- Stratul 7 este cel mai de sus, stratul de aplicare . Furnizează informații utilizatorului computerului și primește informații înapoi de la acesta.
- Stratul 6 este stratul de prezentare . Acest lucru asigură că datele sunt în formatul sau starea corectă pe măsură ce se deplasează în și din formatul de rețea. Criptarea și decriptarea au loc la acest nivel.
- Stratul 5 este stratul de sesiune . O sesiune este o conexiune de rețea între două sau mai multe dispozitive. Acest strat implică chestiuni precum inițierea unei conexiuni, strângere de mână, timeout-uri și întreruperea conexiunilor care nu mai sunt necesare.
- Stratul 4 este stratul de transport . Acesta este stratul care mută datele în rețea într-un mod coordonat. Acest nivel este preocupat de lucruri precum ratele de transfer și volumele de date. Protocolul de control al transmisiei – TCP în TCP/IP – operează la acest nivel.
- Nivelul 3 este stratul de rețea . Aici are loc rutarea și redirecționarea pachetelor. Este nivelul la care funcționează Protocolul Internet - IP-ul în TCP/IP.
- Stratul 2 este stratul de legătură de date . Este folosit pentru a trimite pachete între dispozitive direct adresabile folosind transmisii către fiecare dispozitiv sau unicast către anumite adrese MAC.
- Stratul 1 este stratul fizic . Aceasta se referă la infrastructura fizică, inclusiv cablarea, routerele și comutatoarele de rețea. Undele radio utilizate în Wi-Fi ar intra și ele în această categorie.
Când routerul primește un pachet pentru o adresă IP care nu este în tabelul său, trimite un pachet de difuzare către întreaga rețea. Întreabă efectiv „Cine are această adresă IP?” Acesta este un mesaj de nivel doi, așa că nu se bazează pe rutarea IP.
Dispozitivul cu adresa potrivită răspunde trimițând înapoi adresa MAC. Adresa IP și adresa MAC a dispozitivului respectiv pot fi adăugate la tabelul de mapare. Traficul IP obișnuit poate fi acum direcționat către dispozitiv, deoarece relația dintre adresa sa IP și adresa sa MAC a fost stabilită și înregistrată.
RELATE: Fundația Internetului: TCP/IP împlinește 40 de ani
Comandamentul arping
Toate lucrurile inteligente ARP merg automat în fundal, construind și menținând tabelul ARP. Comanda arping
aduce o parte din funcționalitatea interogării ARP în fereastra terminalului. Funcționează la nivelul doi OSI și poate solicita un răspuns de la un dispozitiv atunci când nu face ping
.
Pe Fedora 36, arping
era deja instalat, dar trebuia să-l instalăm pe Manjaro 21 și Ubuntu 22.04.
Pe Ubuntu comanda este:
sudo apt install arping
Pe Manjaro trebuie să tastați:
sudo pacman -Sy arping
Cel mai simplu mod de a utiliza arping
este cu o adresă IP. Aceasta trebuie să fie adresa unui dispozitiv direct adresabil, conectat la rețeaua locală. Deoarece arping
funcționează la nivelul doi, nu este posibilă nicio rutare. Va trebui să utilizați sudo
cu arping
.
sudo arping 192.168.1.17
Apăsați Ctrl+C pentru a opri. Informațiile returnate sunt adresa MAC a dispozitivului care răspunde, numărul de index al solicitării de arping
și timpul de călătorie dus-întors pentru ca cererea de arping
să fie finalizată.
Comparați rezultatul cu cel din comanda ping
, mai jos. Comanda ping
returnează mai multe informații despre sincronizarea pachetului de rețea dus-întors. Comanda arping
vă oferă mai puține statistici de sincronizare, dar include adresa MAC a dispozitivului.
ping 192.168.1.17
De asemenea, puteți utiliza numele de rețea al dispozitivului cu arping
.
sudo arping fedora-36.local

Puteți folosi opțiunea -c
(numărare) pentru a spune arping
-ului să se oprească după un număr stabilit de solicitări. Această comandă îi spune arping
să încerce de două ori și apoi să se oprească.
sudo arping -c 2 192.168.1.18
Dacă aveți mai multe interfețe de rețea în computer, puteți utiliza opțiunea -I
(interfață) pentru a spune arping
ce interfață să folosească.
Puteți utiliza comanda ip link
pentru a lista interfețele de rețea.
link ip
Acest computer are trei interfețe. Interfața virtuală lo
este folosită ca loopback pentru conexiunile interne între software-ul de pe același computer. Nu ne este de folos aici. Putem folosi fie conexiunea ethernet enp3s0
, fie interfața wireless wlan0
.
Această comandă îi spune arping
să folosească interfața pe care o alegem și să nu facă propria selecție.
sudo arping -c 2 -I enp3s0 manjaro-21.local
Utilizarea arpingului în scripturi
Prin arping
-ului într-o buclă într-un script, îl putem face să funcționeze pe o serie de adrese IP. Copiați textul din acest script și salvați-l într-un fișier numit „scan-range.sh”.
Va trebui să editați scriptul și să înlocuiți toate aparițiile 192.168.1 cu adresa IP a rețelei dvs.
#!/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
Scriptul acceptă doi parametri de linie de comandă. Acestea sunt folosite ca ultimul octet al adreselor IP ale intervalului pe care doriți să utilizați arping
. Deci, dacă treceți 20 și 30 la script, bucla ar începe la 192.168.1. 20 și se va încheia după utilizarea adresei IP 192.168.1. 30 .
Parametrii sunt accesați în interiorul scriptului ca $1
și $2
. Acestea sunt folosite într-o buclă for
stil C. La fiecare rotire a buclei for
, $device
este setat la următoarea adresă IP din interval.
Scriptul folosește același format arping -c
pe care l-am văzut deja, dar de data aceasta solicităm doar trimiterea unei singure cereri ARP către fiecare dispozitiv din gamă.
Ieșirea de la comanda arping
este transmisă prin grep
.
Sintaxa grep
poate fi simplificată în scriptul dumneavoastră. grep
caută unul dintre cele două șiruri de caractere, fie „1 răspuns” fie „1 pachete primite”. Acest lucru se datorează faptului că computerele de testare aveau versiuni diferite de arping
pe ele și folosesc o terminologie diferită. Dacă grep
găsește oricare dintre aceste expresii, valoarea sa de ieșire va fi zero.
Când știți care dintre frazele folosește versiunea dvs. de arping
, puteți simplifica sintaxa grep
eliminând cealaltă frază.
Declarația if
testează $?
— o variabilă care conține codul de ieșire al ultimului proces care s-a încheiat — pentru a vedea dacă este zero. Dacă este, folosește echo
pentru a imprima un mesaj de succes în fereastra terminalului. Dacă testul eșuează, grep
nu a găsit niciunul dintre șiruri, ceea ce înseamnă că solicitarea ARP a eșuat.
Faceți scriptul executabil folosind comanda chmod
și opțiunea +x
.
chmod +x scan-range.sh
Îl vom rula și vom scana intervalul IP de la 15 la 20. Unele dintre aceste adrese nu au dispozitive atașate, așa că ar trebui să vedem unele erori. Nu uitați să utilizați sudo
. De asemenea, vom încerca să facem ping
dispozitivului la 192.168.1.15.
sudo ./scan-range.sh 15 20
ping 192.168.1.15
Obținem un amestec de succese și eșecuri, așa cum ați face în orice rețea. Dar observați că, deși dispozitivul de la 192.168.1.15 răspunde la cererea ARP de nivel doi, nu răspunde la cererea de ping
de nivel trei.
Dacă ați da ping dispozitivului și ați observat defecțiunea, probabil ați fi înclinat să verificați dacă a fost conectat, online și dacă ați putea face ping
din dispozitivul 192.168.1.15.
Dar cu arping
puteți verifica dacă este conectat, online și accesibil în rețea. Acest lucru v-ar ghida depanarea pentru a începe să cercetați problemele de rutare și tabelul ARP.
O perspectivă mai profundă
Există multe straturi pentru ceapa de rețea. Dacă ping
-ul nu vă duce nicăieri, aruncați un strat și vedeți ce vă poate spune arping
-ul.
LEGATE: Cum să gestionați rețelele Wi-Fi Linux cu Nmtui