Восстановить кеш arp в linux - PullRequest
1 голос
/ 16 марта 2020

Я случайно удаляю HWaddress, используя следующую команду

arp -d 200.9.12.50

, если я запускаю arp -n 200.9.12.50 показывает неполное .

Address                  HWtype  HWaddress           Flags Mask            Iface
200.9.12.50                       (incomplete)                              eth0

Я знаю точный HWaddress, пытался добавить вручную с помощью команды ниже. Я не могу пропинговать (целевой хост недоступен). Если я перезагружусь, arp снова будет установлен на не завершен . Пожалуйста, помогите мне восстановить ARP с HWaddress.

arp -s 200.9.12.50 00:0b:ab:7d:09:4a temp

1 Ответ

1 голос
/ 16 марта 2020

Ядро linux устанавливает флаг завершения arp, только когда состояние обнаружения недостижимости соседа (nud) установлено постоянным (не временным) или "допустимым" ( arp.c # L1077-L1085 ).

#define NUD_VALID   (NUD_PERMANENT|NUD_NOARP|NUD_REACHABLE|NUD_PROBE|NUD_STALE|NUD_DELAY)

net / neighbour.h # L38


Просмотр net -инструментов arp. c, это устанавливается в arp_set () . (См. net -tools для официального источника.) Если указан аргумент temp, постоянный флаг отключен, что может объяснить: «Если я перезагружаюсь, arp снова будет установлен не завершенным».


Попробуйте удалить запись и переустановить ее без temp:

# arp -i eth0 -d 200.9.12.50
# arp -Ds 200.9.12.50 eth0

(я использую iproute2 вместо net -tools; простите, если какая-либо из этих данных неверна.)

...