ip neigh to polecenie z pakietu iproute2, które pokazuje i pozwala zarządzać tablicą sąsiadów, czyli mapowaniem adresów IP na adresy sprzętowe (MAC). W IPv4 odpowiada to staremu ARP, a w IPv6 mechanizmowi NDP. Krótko mówiąc: gdy Twój host gada z kimś w tej samej sieci lokalnej, musi znać jego MAC, a ip neigh pokazuje, co system zdążył się o tym dowiedzieć. To nowoczesny następca komendy arp, którą na świeższych dystrybucjach często znajdziesz już tylko jako relikt albo wcale.
Składnia i najważniejsze opcje
Podstawowa forma to ip neigh { show | add | del | change | replace | flush } [ ADRES ] [ lladdr MAC ] [ dev INTERFEJS ].
show— wyświetla wpisy z tablicy sąsiadów (domyślna akcja, samip neighrobi to samo).add— dodaje ręczny wpis dla danego adresu i interfejsu.del— usuwa wpis dla wskazanego adresu i interfejsu.replace— dodaje lub nadpisuje wpis (wygodniejsze niżadd, bo nie krzyczy o duplikat).flush— czyści wpisy; domyślnie pomija stanypermanentinoarp.lladdr MAC— adres warstwy łącza (MAC), który przypisujesz do IP.dev INTERFEJS— interfejs, którego wpis dotyczy (np.eth0).nud STAN— wymusza stan wpisu, np.permanent,reachable,stale.
Przykłady użycia
ip neigh show— pokazuje całą tablicę sąsiadów wraz ze stanami (REACHABLE, STALE, FAILED itd.).ip neigh show dev eth0— zawęża listę tylko do jednego interfejsu, przydatne przy maszynach z wieloma kartami.ip -s neigh show— dorzuca statystyki użycia wpisów; pomaga zobaczyć, kto realnie był odpytywany.sudo ip neigh add 192.168.1.10 lladdr aa:bb:cc:dd:ee:ff dev eth0 nud permanent— wpisuje na stałe statyczny ARP, niezależny od timeoutów.sudo ip neigh flush dev eth0— czyści dynamiczne wpisy na interfejsie, np. po zmianie sprzętu pod tym samym IP.
Częste błędy i pułapki
Stany wpisów mylą najczęściej. STALE nie oznacza błędu — to po prostu wpis ważny, ale wymagający odświeżenia przy następnym ruchu, więc nie panikuj na jego widok. FAILED to znak, że host nie odpowiada (może być wyłączony albo filtruje pakiety). Wpis INCOMPLETE oznacza trwające szukanie MAC-a.
Operacje add, del i flush wymagają uprawnień roota — bez sudo dostaniesz Operation not permitted. Pamiętaj też, że flush domyślnie nie tyka wpisów permanent ani noarp, więc Twój ręczny statyczny ARP przetrwa czyszczenie. I nie myl tego z tablicą routingu — ip neigh dotyczy wyłącznie sąsiadów w tej samej sieci L2, nie tras do innych podsieci.
Powiązane komendy: arp, ip route, ip addr, ip link, bridge fdb, ping.