arping

Wysyła zapytania ARP do hosta w sieci lokalnej, sprawdza obecność i wykrywa konflikty IP.

arping to narzędzie, które pinguje hosta nie protokołem ICMP, tylko zapytaniem ARP na poziomie warstwy łącza (L2). Dzięki temu sprawdzisz, czy maszyna w tej samej sieci lokalnej żyje, nawet jeśli ma zamknięty firewall blokujący zwykłego ping — bo na ARP musi odpowiedzieć każdy host, który chce w ogóle gadać po Ethernecie. Używasz go głównie do wykrywania, czy dany adres IP jest zajęty, do łapania konfliktów IP oraz do mapowania, jaki MAC siedzi pod danym adresem.

Składnia i najważniejsze opcje

Podstawowe wywołanie (wersja z pakietu iputils):

arping [-c liczba] -I iface cel

  • -I iface — interfejs, z którego wychodzą zapytania ARP (np. eth0). W iputils praktycznie zawsze wymagany.
  • -c liczba — wyślij tylko tyle zapytań i zakończ (inaczej leci w nieskończoność).
  • -f — kończ po pierwszej odpowiedzi potwierdzającej, że host żyje.
  • -D — tryb wykrywania duplikatu adresu (DAD); zwraca kod 0, gdy nikt nie odpowiedział, czyli adres jest wolny.
  • -w sekundy — limit czasu (deadline) na całą operację.
  • -q — tryb cichy, bez gadania na ekran (przydatny w skryptach).
  • -U — wyślij niezamówiony ARP (gratuitous), żeby zaktualizować tablice ARP sąsiadów.
  • -b — wysyłaj zawsze na adres broadcast, nie przełączaj się na unicast.

Przykłady użycia

arping -c 3 -I eth0 192.168.1.10 — wyślij 3 zapytania ARP do hosta i sprawdź, czy odpowiada.

arping -D -c 2 -I eth0 192.168.1.50 — sprawdź, czy adres 192.168.1.50 jest wolny, zanim go komuś przypiszesz.

arping -f -I eth0 192.168.1.1 — pingnij bramę i zakończ od razu po pierwszej odpowiedzi.

arping -U -c 2 -I eth0 192.168.1.10 — rozgłoś własny ARP, żeby reszta sieci odświeżyła wpis o twoim MAC (np. po przełączeniu IP).

arping -q -c 1 -I eth0 192.168.1.10 — cicha wersja do sprawdzenia w skrypcie (sprawdzasz potem kod wyjścia).

Częste błędy i pułapki

Pierwsza pułapka: istnieją dwie różne implementacje. Wersja z iputils (typowa na Debianie/Ubuntu) używa -I na interfejs, a wersja Thomasa Habetsa (często w Fedorze/openSUSE) używa -i i potrafi pingować nawet po adresie MAC. Jeśli flaga nie działa, sprawdź arping --help.

Druga: arping wymaga uprawnień do surowych pakietów, więc zwykle odpalasz go przez sudo, inaczej dostaniesz błąd operacji socketu. Trzecia: ARP nie przechodzi przez routery — działa tylko w obrębie tej samej podsieci, więc nie pingniesz nim hosta zza bramy.

Powiązane komendy: ping, arp, ip neigh, nmap, tcpdump.