Jak wysłać aktualizację ARP do wszystkich sąsiadów w systemie Linux?

21

Niektórzy klienci w podsieci zbuforowali adres IP ze starym adresem MAC. Chcę, aby zaktualizowali nową wartość, wysyłając ARP, czy jest to możliwe w Linuksie?

Howard
źródło

Odpowiedzi:

27

Tak, nazywa się to „Unsolicited ARP” lub „Gratuitous ARP”. Sprawdź stronę podręcznika, aby uzyskać więcej szczegółów, ale składnia wygląda mniej więcej tak:

arping -U 192.168.1.101

Jeśli podszywasz się pod adres, być może będziesz musiał uruchomić najpierw:

echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind

Wreszcie, ze względu na jego zdolność do fałszowania, wysyłanie niezamówionych pakietów ARP jest czasem uważane za „wrogie” działanie i może zostać zignorowane lub może zostać zablokowane przez niektóre zapory ogniowe innych firm.

tylerl
źródło
8
Pod Debianem było dla mnie polecenie arping -S ip.to.update -i ethX destination.host. Przykład:arping -S 10.0.0.2 -i eth0 10.0.0.1
radicand
3
Uważam za konieczne wykonanie arpingu do routera, jak opisano powyżej w systemie Linux, gdy IP jest aliasem na urządzeniu (tj. Albo dodatkowa karta sieciowa używa adresu IP, albo jeśli jest to alias w istniejącym NIS, który został skonfigurowany przy użyciu ifconfig ethx:xtypu aliasu). Jeśli jest to podstawowy, nigdy nie wydaje się to konieczne.
8

To, czego szukasz, nazywa się „ darmowym ARP ” i można to zrobić za pomocą „arping”. Jeśli twój adres IP to 10.0.0.1 w eth0, użyjesz tego polecenia:

arping -A -I eth0 10.0.0.1

Możesz sprawdzić, czy ARP jest wysyłany za pomocą „tcpdump” podczas działania „arping”, w tym przypadku oglądam „wlan0”:

laptop:~$ sudo tcpdump -lni wlan0 arp    
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:14:11.219936 ARP, Reply 172.16.42.161 is-at a4:77:03:d2:9b:c4, length 28
12:14:12.220119 ARP, Reply 172.16.42.161 is-at a4:77:03:d2:9b:c4, length 28
12:14:13.220288 ARP, Reply 172.16.42.161 is-at a4:77:03:d2:9b:c4, length 28
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel
laptop:~$ 
Sean Reifschneider
źródło
-1

To nie jest konieczne. Jak w: po zmianie adresu IP komputer powinien to zrobić automatycznie. Jeśli klietny są zakodowane na stałe, transmisja nie zmieni nadpisanego kodu.

Robię to od około 20 lat i przez cały ten czas NIGDY (!) Nie zdarzyło się to bez wadliwego sprzętu.

TomTom
źródło
Problem polega na tym, że przypadkowo przypisałem nową maszynę z używanym adresem IP, więc powodują konflikt adresów IP. Nie mogę uzyskać dostępu do starej maszyny za pomocą SSH. Teraz zdalnie zamykam niewłaściwy (nowy) komputer, ale nadal nie mam dostępu do starego komputera, podejrzewam, że router ma buforowany adres MAC w swojej tabeli ARP.
Howard
1
Nazywa się to „
darmowym
Powinien działać po wygaśnięciu pamięci podręcznej arp. Możesz także spróbować opróżnić tabelę arp na komputerze, z którego próbujesz uzyskać dostęp do starej maszyny
Kimvais,
4
@TomTom - być może po prostu nie pracujesz w odpowiednim środowisku, aby to zobaczyć. Wysyłanie niezamówionych pakietów ARP jest powszechnym sposobem szybkiego przekierowywania ruchu do nowego serwera w przypadku przełączenia awaryjnego. Wiele wysokiej klasy przełączników i routerów może potrwać kilka minut, zanim rozpozna, że ​​adres IP został przeniesiony na inny port fizyczny. Przełączniki Cisco są z tego znane.
tylerl
4
@TomTom: Tak, jeśli przegrywasz przez Heartbeat / corosync, cokolwiek. Jeśli jednak ręcznie przenosisz usługi z jednego komputera na inny, szczególnie jeśli korzystasz z urządzeń Cisco, ręczne wysyłanie nieodpłatnego ARP jest niezwykle przydatne. Zgadzam się, że nie jest to coś, co często robisz, ale jako ktoś, kto również zajmuje się IT od 20 lat, znalazłem się w wielu sytuacjach, w których musiałem to zrobić.
Sean Reifschneider