
de Linux arping commando is als ping, maar alleen voor lokale netwerken. Het voordeel is dat het op een lager netwerkniveau werkt en soms reacties krijgt wanneer: ping kan niet. Hier leest u hoe u het kunt gebruiken.
Het ARP-protocol
Een IP-adres is een numeriek label voor een netwerkapparaat. Het wordt gebruikt als adres zodat het juiste netwerkverkeer op het juiste apparaat aankomt. Maar de meeste apparaten op lokale netwerken hebben: dynamisch IP-adressen. Dat wil zeggen, hun IP-adres kan heel goed veranderen de volgende keer dat ze worden opgestart.
Om netwerkverkeer correct naar het juiste apparaat te kunnen routeren, moet een schema worden gebruikt dat IP-adressen toewijst aan Media Access Control (MAC)-adressen. Het MAC-adres is een unieke identiteit die is vastgesteld bij de fabricage van een apparaat. Een IP-adres is een logisch adres. Het MAC-adres is een fysiek adres.
Het Address Resolution Protocol is de tussenpersoon die IP-adressen toewijst aan MAC-adressen. Het apparaat dat verantwoordelijk is voor het rangschikken en sturen van netwerkpakketten in uw netwerk – meestal de router – bouwt en onderhoudt een ARP-tabel die IP-adressen koppelt aan MAC-adressen.
Als de router gegevens moet routeren naar een apparaat waarvan hij niets weet, doet hij een ARP-verzoek om het MAC-adres voor het nieuwe apparaat te verkrijgen.
Wanneer een nieuw apparaat op uw netwerk wordt aangesloten, krijgt het een IP-adres toegewezen, maar dat is niet genoeg om er daadwerkelijk verkeer naartoe te leiden. De router moet het MAC-adres verkrijgen dat het ontbrekende stukje van de puzzel is. Maar omdat het IP-adres op zichzelf niet voldoende informatie is om pakketten naar het apparaat te routeren, kan de Catch-22 het IP-adres niet gebruiken om de hardware op te vragen om het MAC-adres te krijgen.
Het Open Systems Interconnection-model groepeert de technologieën waaruit een werkend netwerk bestaat als een reeks lagen. Hogere lagen kunnen niet functioneren zonder de lagere lagen. Er zijn zeven lagen in het OSI-model.
- Laag 7 is de bovenste laag, de sollicitatie laag. Het geeft informatie aan de computergebruiker en ontvangt informatie van hem terug.
- Laag 6 is de presentatie laag. Dit zorgt ervoor dat de gegevens de juiste indeling of staat hebben terwijl ze van en naar het netwerkformaat worden verplaatst. Op deze laag vindt versleuteling en ontsleuteling plaats.
- Laag 5 is de sessie laag. Een sessie is een netwerkverbinding tussen twee of meer apparaten. Deze laag houdt zich bezig met zaken als het aangaan van een verbinding, handshaking, time-outs en het verbreken van verbindingen die niet meer nodig zijn.
- Laag 4 is de vervoer- laag. Dit is de laag die gegevens op een gecoördineerde manier door het netwerk verplaatst. Deze laag houdt zich bezig met zaken als overdrachtssnelheden en datavolumes. Het Transmission Control Protocol – het TCP in TCP/IP – werkt op deze laag.
- Laag 3 is de netwerk laag. Dit is waar de routering en het doorsturen van pakketten plaatsvindt. Het is de laag waarop het internetprotocol – het IP in TCP/IP – werkt.
- Laag 2 is de datalink laag. Het wordt gebruikt om pakketten te verzenden tussen direct adresseerbare apparaten met behulp van uitzendingen naar elk apparaat of unicasts naar specifieke MAC-adressen.
- Laag 1 is de fysiek laag. Dit betreft de fysieke infrastructuur, inclusief bekabeling, routers en netwerkswitches. De radiogolven die in wifi worden gebruikt, vallen ook in deze categorie.
Wanneer de router een pakket ontvangt voor een IP-adres dat niet in de tabel staat, stuurt het een broadcastpakket naar het hele netwerk. Het vraagt ​​in feite “Wie heeft dit IP-adres?” Dit is een bericht van laag twee, dus het is niet afhankelijk van IP-routering.
Het apparaat met het overeenkomende adres reageert door zijn MAC-adres terug te sturen. Het IP-adres en MAC-adres van dat apparaat kunnen worden toegevoegd aan de toewijzingstabel. Regulier IP-verkeer kan nu naar het apparaat worden gerouteerd omdat de relatie tussen het IP-adres en het MAC-adres is vastgesteld en vastgelegd.
Het arping-commando
Alle slimme ARP-dingen gaan automatisch op de achtergrond door, het bouwen en onderhouden van de ARP-tabel. De arping commando brengt een deel van de functionaliteit van de ARP-query naar het terminalvenster. Het werkt op OSI-laag twee en kan een reactie van een apparaat vragen wanneer: ping doet niet.
Op Fedora 36, arping was al geïnstalleerd, maar we moesten het installeren op Manjaro 21 en Ubuntu 22.04.
Op Ubuntu is het commando:
sudo apt install arping

Op Manjaro moet je typen:
sudo pacman -Sy arping

De eenvoudigste manier om te gebruiken arping is met een IP-adres. Dit moet het adres zijn van een direct adresseerbaar apparaat, aangesloten op het lokale netwerk. Omdat arping werkt op laag twee, er is geen routering mogelijk. Je moet gebruiken sudo met arping.
sudo arping 192.168.1.17

Druk op Ctrl+C om te stoppen. De geretourneerde informatie is het MAC-adres van het reagerende apparaat, het indexnummer van de arping aanvraag, en de retourtijd voor de arping verzoek in te vullen.
Vergelijk de uitvoer met die van de ping opdracht, hieronder. De ping commando retourneert meer informatie over de timing van de retour van het netwerkpakket. De arping commando geeft u minder timingstatistieken, maar het bevat wel het MAC-adres van het apparaat.
ping 192.168.1.17

U kunt de netwerknaam van het apparaat ook gebruiken met: arping.
sudo arping fedora-36.local

U kunt de -c (tel) optie om te vertellen arping stoppen na een bepaald aantal verzoeken. Dit commando vertelt arping twee keer proberen en dan stoppen.
sudo arping -c 2 192.168.1.18

Als u meerdere netwerkinterfaces op uw computer heeft, kunt u de -I (interface) optie om te vertellen arping welke interface te gebruiken.
U kunt de ip link commando om uw netwerkinterfaces weer te geven.
ip link

Deze computer heeft drie interfaces. De lo virtuele interface wordt gebruikt als loopback voor interne verbindingen tussen software op dezelfde computer. Hier hebben we niets aan. We kunnen de ethernetverbinding gebruiken enp3s0 of de draadloze interface wlan0.
Dit commando vertelt arping om de interface te gebruiken die we kiezen, en niet om zijn eigen selectie te maken.
sudo arping -c 2 -I enp3s0 manjaro-21.local

Arping gebruiken in scripts
Door in te pakken arping in een lus in een script, kunnen we het over een reeks IP-adressen laten werken. Kopieer de tekst van dit script en sla het op in een bestand met de naam “scan-range.sh”.
U moet het script bewerken en alle exemplaren van 192.168.1 vervangen door het IP-adres van uw netwerk.
#!/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
Het script accepteert twee opdrachtregelparameters. Deze worden gebruikt als het laatste octet van de IP-adressen van het bereik dat u wilt gebruiken arping Aan. Dus als je 20 en 30 doorgeeft aan het script, zou de lus beginnen bij 192.168.1.20 en zou eindigen na gebruik van IP-adres 192.168.1.30.
De parameters zijn toegankelijk in het script als $1 en $2. Deze worden gebruikt in een C-stijl for lus. Bij elke draai van de for lus, $device is ingesteld op het volgende IP-adres in het bereik.
Het script gebruikt hetzelfde arping -c formaat dat we al hebben gezien, maar deze keer vragen we alleen om een ​​enkel ARP-verzoek dat naar elk apparaat in het bereik wordt verzonden.
De uitvoer van de arping commando wordt doorgesluisd grep.
De grep syntaxis kan worden vereenvoudigd in uw script. grep zoekt naar een van de twee strings, ofwel “1 respons” of “1 pakketten ontvangen”. Dit komt omdat de testcomputers verschillende versies hadden van: arping erop en ze gebruiken verschillende terminologie. Als grep een van deze zinnen vindt, is de uitgangswaarde nul.
Als je weet van welke zinnen jouw versie is arping gebruikt, kunt u de grep syntaxis door de andere frase te verwijderen.
De if verklaring testen $?-een variabele die de afsluitcode bevat van het laatste proces dat eindigde – om te zien of het nul is. Als dat zo is, gebruikt het echo om een ​​bericht van succes naar het terminalvenster af te drukken. Als de test mislukt, grep heeft geen van beide strings gevonden, wat betekent dat het ARP-verzoek is mislukt.
Maak uw script uitvoerbaar met behulp van de chmod commando en de +x keuze.
chmod +x scan-range.sh

We zullen het uitvoeren en het IP-bereik van 15 tot 20 scannen. Op sommige van deze adressen zijn geen apparaten aangesloten, dus we zouden enkele fouten moeten zien. Vergeet niet te gebruiken sudo . We zullen ook proberen om ping het apparaat op 192.168.1.15.
sudo ./scan-range.sh 15 20
ping 192.168.1.15

We krijgen een mix van successen en mislukkingen, zoals u zou doen op elk netwerk. Maar merk op dat hoewel het apparaat op 192.168.1.15 reageert op het ARP-verzoek van laag twee, het niet reageert op laag drie ping verzoek.
Als u het apparaat had gepingd en de storing had opgemerkt, zou u waarschijnlijk geneigd zijn te controleren of het online was aangesloten en of u ping uit van apparaat 192.168.1.15.
Maar met arping u kunt controleren of deze is aangesloten, online en toegankelijk is via het netwerk. Dat zou uw probleemoplossing begeleiden om te beginnen met het onderzoeken van problemen met routering en ARP-tabel.
Een dieper inzicht
Er zijn veel lagen aan de netwerkui. Als ping brengt je nergens, laat een laag vallen en kijk wat arping kan je vertellen.