Jak korzystać z polecenia arping w systemie Linux?
Opublikowany: 2022-07-28
Polecenie arping
Linuksa działa jak ping
, ale tylko dla sieci lokalnych. Jego zaletą jest to, że działa na niższym poziomie sieci, czasami otrzymując odpowiedzi, gdy ping
nie może. Oto jak z niego korzystać.
Protokół ARP
Adres IP to numeryczna etykieta urządzenia sieciowego. Jest używany jako adres, dzięki czemu odpowiedni ruch sieciowy dociera do właściwego urządzenia. Jednak większość urządzeń w sieciach lokalnych ma dynamiczne adresy IP. Oznacza to, że ich adres IP może się zmienić przy następnym uruchomieniu.
Aby móc prawidłowo kierować ruch sieciowy do odpowiedniego urządzenia, należy zastosować schemat, który mapuje adresy IP na adresy Media Access Control (MAC). Adres MAC to unikalna tożsamość ustalona w momencie produkcji urządzenia. Adres IP to adres logiczny . Adres MAC to adres fizyczny .
Protokół rozpoznawania adresów jest pośrednikiem, który mapuje adresy IP na adresy MAC. Urządzenie odpowiedzialne za organizowanie i kierowanie pakietami sieciowymi w sieci — zwykle router — tworzy i utrzymuje tabelę ARP, która wiąże adresy IP z adresami MAC.
Jeśli router musi przekierować dane do urządzenia, o którym nie wie, wysyła żądanie ARP, aby uzyskać adres MAC nowego urządzenia.
Gdy nowe urządzenie jest podłączone do Twojej sieci, jest mu przypisywany adres IP, ale to nie wystarczy, aby faktycznie skierować do niego ruch. Router musi uzyskać adres MAC, który jest brakującym elementem układanki. Ale ponieważ sam adres IP nie jest wystarczającym źródłem informacji, aby przekierować pakiety do urządzenia, Catch-22 nie może używać adresu IP do wysyłania zapytań do sprzętu w celu uzyskania adresu MAC.
Model Open Systems Interconnection grupuje technologie tworzące działającą sieć jako szereg warstw. Wyższe warstwy nie mogą działać bez niższych warstw. W modelu OSI jest siedem warstw.
- Warstwa 7 to najwyższa warstwa, warstwa aplikacji . Dostarcza informacje użytkownikowi komputera i otrzymuje od niego informacje.
- Warstwa 6 to warstwa prezentacji . Dzięki temu dane są w odpowiednim formacie lub stanie podczas przenoszenia do i z formatu sieciowego. W tej warstwie odbywa się szyfrowanie i deszyfrowanie.
- Warstwa 5 to warstwa sesji . Sesja to połączenie sieciowe między co najmniej dwoma urządzeniami. Ta warstwa obejmuje takie sprawy, jak inicjacja połączenia, uzgadnianie, przekroczenie limitu czasu i zerwanie połączeń, które nie są już potrzebne.
- Warstwa 4 to warstwa transportowa . Jest to warstwa, która w skoordynowany sposób przenosi dane w sieci. Ta warstwa dotyczy takich rzeczy, jak szybkości przesyłania i wolumeny danych. Protokół kontroli transmisji — TCP w TCP/IP — działa w tej warstwie.
- Warstwa 3 to warstwa sieciowa . Tutaj odbywa się routing i przekazywanie pakietów. Jest to warstwa, na której działa protokół internetowy — IP w TCP/IP.
- Warstwa 2 to warstwa łącza danych . Służy do wysyłania pakietów między bezpośrednio adresowalnymi urządzeniami za pomocą emisji do każdego urządzenia lub emisji pojedynczych do określonych adresów MAC.
- Warstwa 1 to warstwa fizyczna . Dotyczy to infrastruktury fizycznej, w tym okablowania, routerów i przełączników sieciowych. Fale radiowe używane w Wi-Fi również należałyby do tej kategorii.
Gdy router odbiera pakiet dla adresu IP, którego nie ma w jego tabeli, wysyła pakiet rozgłoszeniowy do całej sieci. Skutecznie pyta „Kto ma ten adres IP?” Jest to wiadomość warstwy drugiej, więc nie opiera się na routingu IP.
Urządzenie z pasującym adresem odpowiada, odsyłając swój adres MAC. Adres IP i adres MAC tego urządzenia można dodać do tabeli mapowania. Zwykły ruch IP może być teraz kierowany do urządzenia, ponieważ związek między jego adresem IP a adresem MAC został ustanowiony i zarejestrowany.
POWIĄZANE: Podstawa Internetu: TCP/IP kończy 40 lat
Arping Command
Wszystkie sprytne rzeczy ARP działają automatycznie w tle, budując i utrzymując tabelę ARP. Polecenie arping
przenosi część funkcjonalności zapytania ARP do okna terminala. Działa na drugiej warstwie OSI i może żądać odpowiedzi od urządzenia, gdy ping
tego nie robi.
W Fedorze 36 arping
był już zainstalowany, ale musieliśmy zainstalować go na Manjaro 21 i Ubuntu 22.04.
W Ubuntu polecenie to:
sudo apt zainstaluj arping
Na Manjaro musisz wpisać:
sudo pacman -Sy arping
Najprostszym sposobem użycia arping
jest użycie adresu IP. Musi to być adres bezpośrednio adresowalnego urządzenia podłączonego do sieci lokalnej. Ponieważ arping
działa w warstwie drugiej, nie jest możliwy routing. Musisz użyć sudo
z arping
.
sudo arping 192.168.1.17
Naciśnij Ctrl+C, aby zatrzymać. Zwracana informacja to adres MAC odpowiadającego urządzenia, numer indeksu żądania arping
i czas podróży w obie strony do zakończenia żądania arping
.
Porównaj dane wyjściowe z wynikami polecenia ping
poniżej. Polecenie ping
zwraca więcej informacji o taktowaniu pakietu sieciowego w obie strony. Polecenie arping
daje mniej statystyk dotyczących czasu, ale zawiera adres MAC urządzenia.
ping 192.168.1.17
Możesz również użyć nazwy sieciowej urządzenia z arping
.
sudo arping fedora-36.local

Możesz użyć opcji -c
(liczba), aby zatrzymać arping
po określonej liczbie żądań. To polecenie mówi arping
, aby spróbował dwa razy, a następnie się zatrzymał.
sudo arping -c 2 192.168.1.18
Jeśli masz wiele interfejsów sieciowych w swoim komputerze, możesz użyć opcji -I
(interfejs), aby powiedzieć arping
, którego interfejsu użyć.
Możesz użyć polecenia ip link
, aby wyświetlić listę interfejsów sieciowych.
łącze ip
Ten komputer ma trzy interfejsy. Wirtualny interfejs lo
jest używany jako pętla zwrotna dla wewnętrznych połączeń między oprogramowaniem na tym samym komputerze. To nam się tutaj nie przyda. Możemy użyć połączenia ethernetowego enp3s0
lub interfejsu bezprzewodowego wlan0
.
Polecenie to mówi arping
, aby używał wybranego przez nas interfejsu, a nie dokonywał własnego wyboru.
sudo arping -c 2 -I enp3s0 manjaro-21.local
Korzystanie z arpingu w skryptach
arping
w pętlę w skrypcie, możemy zmusić go do pracy w zakresie adresów IP. Skopiuj tekst z tego skryptu i zapisz go w pliku o nazwie „scan-range.sh”.
Musisz edytować skrypt i zastąpić wszystkie wystąpienia 192.168.1 adresem IP swojej sieci.
#!/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
Skrypt akceptuje dwa parametry wiersza poleceń. Są one używane jako ostatni oktet adresów IP z zakresu, na którym chcesz używać arping
. Tak więc, jeśli przekażesz 20 i 30 do skryptu, pętla zacznie się od 192.168.1. 20 i zakończy się po użyciu adresu IP 192.168.1. 30 .
Parametry są dostępne w skrypcie jako $1
i $2
. Są one używane w pętli for
w stylu C. Przy każdym obrocie pętli for
$device
jest ustawiane na następny adres IP w zakresie.
Skrypt używa tego samego formatu arping -c
, który już widzieliśmy, ale tym razem prosimy o wysłanie pojedynczego żądania ARP do każdego urządzenia w zasięgu.
Dane wyjściowe polecenia arping
są przesyłane przez grep
.
Składnię grep
można uprościć w swoim skrypcie. grep
szuka jednego z dwóch ciągów: „1 odpowiedź” lub „1 odebrano pakiet”. To dlatego, że komputery testowe miały różne wersje arping
i używają innej terminologii. Jeśli grep
znajdzie którekolwiek z tych fraz, jego wartość wyjściowa będzie wynosić zero.
Kiedy wiesz, których fraz używa twoja wersja arping
, możesz uprościć składnię grep
, usuwając drugą frazę.
Instrukcja if
testuje $?
—zmienna przechowująca kod zakończenia ostatniego procesu, który się zakończył — aby sprawdzić, czy jest to zero. Jeśli tak, używa echo
do wyświetlenia komunikatu o powodzeniu w oknie terminala. Jeśli test się nie powiedzie, grep
nie znalazł żadnego z ciągów, co oznacza, że żądanie ARP nie powiodło się.
Spraw, aby Twój skrypt był wykonywalny, używając polecenia chmod
i opcji +x
.
chmod +x zakres skanowania.sh
Uruchomimy go i przeskanujemy zakres adresów IP od 15 do 20. Niektóre z tych adresów nie mają podłączonych urządzeń, więc powinniśmy zobaczyć pewne awarie. Pamiętaj o sudo
. Spróbujemy również ping
urządzenie pod adresem 192.168.1.15.
sudo ./scan-range.sh 15 20
ping 192.168.1.15
Otrzymujemy mieszankę sukcesów i porażek, tak jak w każdej sieci. Zauważ jednak, że chociaż urządzenie o adresie 192.168.1.15 odpowiada na żądanie ARP warstwy drugiej, nie odpowiada na żądanie ping
warstwy trzeciej.
Jeśli pingowałeś urządzenie i zauważyłeś błąd, prawdopodobnie byłbyś skłonny sprawdzić, czy jest ono podłączone online i czy możesz wysłać ping
z urządzenia 192.168.1.15.
Ale dzięki arping
możesz sprawdzić, czy jest podłączony, online i dostępny w sieci. Pomogłoby to w rozwiązywaniu problemów, aby zacząć przyglądać się problemom z routingiem i tablicami ARP.
Głębszy wgląd
Cebula sieciowa ma wiele warstw. Jeśli ping
nigdzie Cię nie zaprowadzi, upuść warstwę i zobacz, co może Ci powiedzieć arping
.
POWIĄZANE: Jak zarządzać sieciami Wi-Fi w systemie Linux za pomocą Nmtui