Arp пытается на различных *nix-системах

Кто-нибудь знает, что определяет количество попыток arp, которые сделает маршрутизатор? У меня разное поведение с двумя устройствами, если я пытаюсь отследить маршрут к несуществующему хосту в подсети, которая принадлежит интерфейсу на маршрутизаторе, Linux-бокс попытается выполнить arp 3 раза, а затем вернет сообщение icmp, не поддающееся повторной проверке хоста, Юнос будет постоянно пытаться взломать и ничего не вернуть. Есть ли значение sysctl, которое определяет это или что-то вообще.

1 ответ

Решение

На Linux вы заинтересованы в:

% sysctl net.ipv4.neigh.eth0.mcast_solicit
net.ipv4.neigh.eth0.mcast_solicit = 3

Ядро linux вернет хост icmp, недоступный исходному процессу отправки, если он не сможет разрешить ARP после mcast_solicit пытается.

В BSD (включая Junos) вы можете установить его следующим образом:

% sysctl net.link.ether.inet.maxtries
net.link.ether.inet.maxtries: 4

Это устанавливает количество повторов, поэтому установите его на 0 если вы просто хотите один ARP. В отличие от Linux, BSD не отбрасывает недоступный ICMP; Время ожидания истекает (тайм-аут TCP SYN_SENT или любой другой).

Если вы выполняли трассировку на несуществующий локальный адрес в Linux, вы должны были увидеть 3 ARP, а затем трассировку, завершающуюся с !H !H !H, (Вы получаете все три !Hпотому что net.ipv4.neigh.eth0.unres_qlen по умолчанию установлено значение 3, поэтому ARP будет удерживать до 3 пакетов в своей очереди, пока пытается разрешить. Если вы установите net.ipv4.neigh.eth0.unres_qlen в 2трассировка на несуществующий локальный адрес даст вам !H !H *

Если вы выполняли трассировку на несуществующий локальный адрес в Junos (BSD), вы должны увидеть 5 ARP с последующей печатью трассировки *, затем traceroute попробует еще раз, вы увидите еще 5 ARP, еще один * и так далее, трассировка продолжается до тех пор, пока она не сдается после 3 проб в течение 30 прыжков, ARPing 5 раз на пробу (я полагаю, всего 450 ARP).

Другие вопросы по тегам