Come utilizzare il comando arping su Linux

Pubblicato: 2022-07-28
Laptop Linux che mostra un prompt bash
fatmawati achmad zaenuri/Shutterstock.com

Il comando Linux arping è come ping , ma solo per reti locali. Il suo vantaggio è che opera a un livello di rete inferiore, a volte ricevendo risposte quando non è possibile eseguire il ping . Ecco come usarlo.

Il protocollo ARP

Un indirizzo IP è un'etichetta numerica per un dispositivo in rete. Viene utilizzato come indirizzo in modo che il traffico di rete appropriato arrivi al dispositivo corretto. Ma la maggior parte dei dispositivi sulle reti locali ha indirizzi IP dinamici . Cioè, il loro indirizzo IP potrebbe cambiare al prossimo avvio.

Per poter instradare correttamente il traffico di rete al dispositivo appropriato, è necessario utilizzare uno schema che mappi gli indirizzi IP agli indirizzi MAC (Media Access Control). L'indirizzo MAC è un'identità univoca stabilita nel punto di produzione di un dispositivo. Un indirizzo IP è un indirizzo logico . L'indirizzo MAC è un indirizzo fisico .

Che cos'è un pacchetto di dati?
CORRELATI Che cos'è un pacchetto di dati?

L'Address Resolution Protocol è l'intermediario che associa gli indirizzi IP agli indirizzi MAC. Il dispositivo responsabile del marshalling e dell'indirizzamento dei pacchetti di rete nella rete, in genere il router, crea e mantiene una tabella ARP che lega gli indirizzi IP agli indirizzi MAC.

Se il router ha bisogno di instradare i dati a un dispositivo che non conosce, fa una richiesta ARP per ottenere l'indirizzo MAC per il nuovo dispositivo.

Quando un nuovo dispositivo è connesso alla tua rete, gli viene assegnato un indirizzo IP, ma questo non è sufficiente per instradare effettivamente il traffico verso di esso. Il router deve ottenere l'indirizzo MAC che è il pezzo mancante del puzzle. Ma poiché l'indirizzo IP da solo non è informazioni sufficienti per instradare i pacchetti al dispositivo, il Catch-22 non può utilizzare l'indirizzo IP per interrogare l'hardware per ottenere l'indirizzo MAC.

Il modello Open Systems Interconnection raggruppa le tecnologie che compongono una rete funzionante come una serie di livelli. I livelli superiori non possono funzionare senza i livelli inferiori. Ci sono sette livelli nel modello OSI.

  • Il livello 7 è il livello più in alto, il livello dell'applicazione . Fornisce informazioni all'utente del computer e riceve le informazioni da loro.
  • Il livello 6 è il livello di presentazione . Ciò assicura che i dati siano nel formato o nello stato corretto mentre si spostano da e verso il formato di rete. La crittografia e la decrittografia avvengono a questo livello.
  • Il livello 5 è il livello della sessione . Una sessione è una connessione di rete tra due o più dispositivi. Questo livello si occupa di questioni come l'avvio di una connessione, l'handshaking, i timeout e l'interruzione delle connessioni che non sono più necessarie.
  • Lo strato 4 è lo strato di trasporto . Questo è il livello che sposta i dati nella rete in modo coordinato. Questo livello riguarda cose come velocità di trasferimento e volumi di dati. Il Transmission Control Protocol, il TCP in TCP/IP, opera a questo livello.
  • Il livello 3 è il livello di rete . È qui che avviene il routing e l'inoltro dei pacchetti. È il livello in cui opera il protocollo Internet, l'IP in TCP/IP.
  • Il livello 2 è il livello di collegamento dati . Viene utilizzato per inviare pacchetti tra dispositivi indirizzabili direttamente utilizzando trasmissioni a ogni dispositivo o unicast a indirizzi MAC specifici.
  • Il livello 1 è il livello fisico . Ciò riguarda l'infrastruttura fisica, inclusi cablaggio, router e switch di rete. Anche le onde radio utilizzate nel Wi-Fi rientrerebbero in questa categoria.

Quando il router riceve un pacchetto per un indirizzo IP che non è nella sua tabella, invia un pacchetto broadcast all'intera rete. Chiede effettivamente "Chi ha questo indirizzo IP?" Questo è un messaggio di livello due, quindi non si basa sull'instradamento IP.

Il dispositivo con l'indirizzo corrispondente risponde restituendo il proprio indirizzo MAC. L'indirizzo IP e l'indirizzo MAC di quel dispositivo possono essere aggiunti alla tabella di mappatura. Il traffico IP regolare può ora essere instradato al dispositivo perché la relazione tra il suo indirizzo IP e il suo indirizzo MAC è stata stabilita e registrata.

CORRELATI: La fondazione di Internet: TCP/IP compie 40 anni

Il comando arpeggiando

Tutte le cose intelligenti di ARP vengono eseguite automaticamente in background, costruendo e mantenendo la tabella ARP. Il comando arping porta alcune delle funzionalità della query ARP nella finestra del terminale. Funziona a livello OSI due e può richiedere una risposta da un dispositivo quando il ping non lo fa.

Su Fedora 36, arping era già installato, ma dovevamo installarlo su Manjaro 21 e Ubuntu 22.04.

Su Ubuntu il comando è:

 sudo apt install arping 

Installazione di arping su Ubuntu

Su Manjaro devi digitare:

 sudo pacman -Sy arping 

Installazione di arping su Manjaro

Il modo più semplice per utilizzare l' arping è con un indirizzo IP. Deve essere l'indirizzo di un dispositivo indirizzabile direttamente, connesso alla rete locale. Poiché arping opera al livello due, non è possibile alcun instradamento. Dovrai usare sudo con arping .

 sudo arping 192.168.1.17 

Utilizzo dell'arping con un indirizzo IP

Premi Ctrl+C per interrompere. Le informazioni restituite sono l'indirizzo MAC del dispositivo che risponde, il numero di indice della richiesta di arping e il tempo di andata e ritorno per il completamento della richiesta di arping .

Confronta l'output con quello del comando ping , di seguito. Il comando ping restituisce ulteriori informazioni sulla tempistica del viaggio di andata e ritorno del pacchetto di rete. Il comando arping fornisce meno statistiche di temporizzazione, ma include l'indirizzo MAC del dispositivo.

 ping 192.168.1.17 

Utilizzo del ping con un indirizzo IP

È inoltre possibile utilizzare il nome di rete del dispositivo con arping .

 sudo arping fedora-36.local 

Utilizzo dell'arping con un indirizzo IP

È possibile utilizzare l'opzione -c (count) per dire arping di interrompersi dopo un determinato numero di richieste. Questo comando dice ad arping di provare due volte e poi di fermarsi.

 sudo arping -c 2 192.168.1.18 

Usando l'opzione -c per dire ad arping di fermarsi dopo aver fatto due richieste

Se hai più interfacce di rete nel tuo computer, puoi usare l'opzione -I (interfaccia) per dire ad arping quale interfaccia usare.

Puoi usare il comando ip link per elencare le tue interfacce di rete.

 collegamento IP 

Utilizzo di ip link per elencare le interfacce di rete

Questo computer ha tre interfacce. L'interfaccia virtuale lo viene utilizzata come loopback per le connessioni interne tra software sullo stesso computer. Non ci serve qui. Possiamo utilizzare sia la connessione ethernet enp3s0 che l'interfaccia wireless wlan0 .

Questo comando dice ad arping di usare l'interfaccia che scegliamo e di non effettuare la propria selezione.

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

Usando l'opzione -I per dire ad arping di usare un'interfaccia di rete specifica

Usare l'arping negli script

Avvolgendo l' arping in un ciclo in uno script, possiamo farlo funzionare su un intervallo di indirizzi IP. Copia il testo da questo script e salvalo in un file chiamato "scan-range.sh".

Dovrai modificare lo script e sostituire tutte le occorrenze di 192.168.1 con l'indirizzo IP della tua rete.

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

Lo script accetta due parametri della riga di comando. Questi sono usati come l'ultimo ottetto degli indirizzi IP dell'intervallo su cui si desidera utilizzare l' arping . Quindi, se passi 20 e 30 allo script, il ciclo inizierà a 192.168.1. 20 e terminerebbe dopo aver utilizzato l'indirizzo IP 192.168.1. 30 .

I parametri sono accessibili all'interno dello script come $1 e $2 . Questi sono usati in un ciclo for in stile C. Ad ogni giro del ciclo for , $device viene impostato sull'indirizzo IP successivo nell'intervallo.

Lo script utilizza lo stesso formato arping -c che abbiamo già visto, ma questa volta chiediamo solo di inviare una singola richiesta ARP a ciascun dispositivo nell'intervallo.

L'output del comando arping viene inviato tramite pipe tramite grep .

La sintassi di grep può essere semplificata nel tuo script. grep sta cercando una delle due stringhe, "1 risposta" o "1 pacchetto ricevuto". Questo perché i computer di prova avevano versioni diverse di arping su di essi e utilizzano una terminologia diversa. Se grep trova una di queste frasi, il suo valore di uscita sarà zero.

Quando sai quale delle frasi usa la tua versione di arping , puoi semplificare la sintassi di grep rimuovendo l'altra frase.

L'istruzione if verifica $? —una variabile che contiene il codice di uscita dell'ultimo processo terminato—per vedere se è zero. Se lo è, usa echo per stampare un messaggio di successo nella finestra del terminale. Se il test fallisce, grep non ha trovato nessuna delle stringhe, il che significa che la richiesta ARP non è riuscita.

Rendi eseguibile il tuo script usando il comando chmod e l'opzione +x .

 chmod +x scan-range.sh 

Usando l'opzione chmod +x per rendere eseguibile lo script

Lo eseguiremo e analizzeremo l'intervallo IP da 15 a 20. Alcuni di questi indirizzi non hanno dispositivi collegati, quindi dovremmo vedere alcuni errori. Ricordati di usare sudo . Proveremo anche a eseguire il ping del dispositivo su 192.168.1.15.

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

Esecuzione dello script ed esecuzione di ping

Otteniamo un misto di successi e fallimenti, come faresti su qualsiasi rete. Ma si noti che sebbene il dispositivo in 192.168.1.15 risponda alla richiesta ARP di livello due, non risponde alla richiesta ping di livello tre.

Se avessi eseguito il ping del dispositivo e notato l'errore, probabilmente saresti propenso a verificare che fosse collegato, online e se è possibile eseguire il ping dal dispositivo 192.168.1.15.

Ma con arping puoi verificare che sia connesso, online e accessibile dalla rete. Ciò guiderebbe la risoluzione dei problemi per iniziare a esaminare i problemi di routing e tabella ARP.

Una visione più profonda

Ci sono molti livelli nella cipolla di rete. Se il ping non ti porta da nessuna parte, scendi un livello e guarda cosa può dirti arping .

CORRELATI: Come gestire le reti Wi-Fi Linux con Nmtui