Jak korzystać z polecenia arping w systemie Linux?

Opublikowany: 2022-07-28
Laptop z systemem Linux wyświetlający monit o bash
fatmawati achmad zaenuri/Shutterstock.com

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 .

Co to jest pakiet danych?
POWIĄZANE Co to jest pakiet danych?

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 

Instalacja arpingu na Ubuntu

Na Manjaro musisz wpisać:

 sudo pacman -Sy arping 

Instalacja arpingu na Manjaro

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 

Korzystanie z arpingu z adresem IP

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 

Korzystanie z polecenia ping z adresem IP

Możesz również użyć nazwy sieciowej urządzenia z arping .

 sudo arping fedora-36.local 

Korzystanie z arpingu z adresem IP

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 

Użycie opcji -c, aby zatrzymać arping po dwóch żądaniach

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 

Korzystanie z łącza ip w celu wyświetlenia listy interfejsów sieciowych

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 opcji -I, aby powiedzieć arpingowi, aby używał określonego interfejsu sieciowego

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 

Użycie opcji chmod +x do uczynienia skryptu wykonywalnym

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 

Uruchamianie skryptu i uruchamianie ping

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