Как транслировать обновление ARP всем соседям в Linux?


21

Некоторые клиенты в подсети кэшировали IP со старым MAC-адресом, я хочу, чтобы они обновили новое значение, выполнив трансляцию ARP, возможно ли это в Linux?

Ответы:


27

Да, это называется «Незапрашиваемая ARP» или «Бесплатная ARP». Проверьте man-страницу для arping для получения более подробной информации, но синтаксис выглядит примерно так:

arping -U 192.168.1.101

Если вы подделываете адрес, вам может понадобиться сначала выполнить это:

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

Наконец, из-за своей спуфинговой способности отправка пакетов Unsolicited ARP иногда считается «враждебным» действием и может игнорироваться или может привести к блокировке некоторыми сторонними брандмауэрами.


8
Под debian команда для меня была arping -S ip.to.update -i ethX destination.host. Пример:arping -S 10.0.0.2 -i eth0 10.0.0.1
radicand

3
Я посчитал необходимым выполнить arping для маршрутизатора, как описано выше в Linux, когда IP является псевдонимом на устройстве (то есть, либо вторичный NIC использует IP, либо если это псевдоним на существующем NIS, который был настроен с использованием ifconfig ethx:xтипа псевдоним). Если это основной, это никогда не кажется необходимым.

8

То, что вы ищете, называется «бесплатный ARP » и может быть сделано с помощью «арпинга». Если ваш IP-адрес 10.0.0.1 на eth0, вы должны использовать эту команду:

arping -A -I eth0 10.0.0.1

Вы можете проверить, что ARP отправляется с помощью "tcpdump" во время работы "arping", в этом случае я наблюдаю "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:~$ 

-1

Это не обязательно. Как в случае: когда вы изменили IP, компьютер должен был сделать это автоматически. Если клиенты жестко закодированы, широковещательная передача не изменит переопределения перекодировки.

Я занимаюсь ЭТОМ уже около 20 лет, и за все это время у меня НИКОГДА (!) Не было этого без неисправного оборудования.


Проблема в том, что я случайно назначил новую машину с использованным IP-адресом, поэтому они конфликтуют с IP-адресом. Я не могу получить доступ к старой машине, используя SSH. Теперь я удаленно выключаю не ту (новую) машину, но все равно не могу получить доступ к старой машине, я подозреваю, что маршрутизатор кэшировал MAC-адрес в своей таблице ARP.
Говард

1
Это называется «» безвозмездное ARP «» - см en.wikipedia.org/wiki/...
Kimvais

Должно работать после истечения срока действия кэша arp. Вы также можете попробовать очистить таблицу arp на машине, с которой вы пытаетесь получить доступ к старой машине
Kimvais

4
@ TomTom - возможно, вы просто не работали в нужной среде, чтобы увидеть это. Отправка незапрошенных пакетов ARP является распространенным способом быстрой перенаправления трафика на новый сервер в случае сбоя. Многим высококлассным коммутаторам и маршрутизаторам может потребоваться несколько минут, чтобы распознать, что в противном случае IP-адрес был перенесен на другой физический порт. Коммутаторы Cisco печально известны этим.
Тайлер

4
@TomTom: Да, если вы переходите через сердцебиение или коросинхронизацию, что угодно. Однако, если вы вручную перемещаете сервисы с одного компьютера на другой, особенно если вы используете Cisco, ручная отправка бесплатной ARP чрезвычайно полезна. Я согласен, что это не то, чем вы часто занимаетесь, но как человек, который также занимается ИТ в течение 20 лет, я оказался в ряде ситуаций, когда мне нужно было это делать.
Шон Рейфшнейдер,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.