- Содержание статьи
Изюминка посылки ARP-запроса
1-ая изюминка касается посылки ARP-запроса. В ARP-пакете есть поле source IP, в каком хост проставляет собственный IP. Большая часть систем ставят IP из той же сабсети, что и запрашиваемый адрес. Линукс по дефлоту может поставить хоть какой собственный Айпишник, поточнее: если пакет исходит от хоста (но не форвардится от другого), то Линукс копирует адрес из поля source IP этого пакета (есть и иные случаи). Данный эффект просто провести проверку командами tcpdump и ping. Сетевые гуру Линукс заявляют, что подобное поведение соответствует RFC и является в некоторых вариантах желательным. Однако почти все системы, в том числе Cisco IOS, не отвечают на запросы, в которых source IP принадлежит «левой» сабсети. Для управления этим поведением был введён sysctl под заглавием arp_announce, детальнее в Documentation/networking/ip-sysctl.txt. Советую ставить значение этого sysctl ненулевым для хоть какого хоста, у которого есть Айпишника из различных субсетей, к примеру:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_announce
Изюминка ответа ядра
2-ая принципиальная изюминка связана с тем, на какие запросы отвечает ядро. По умолчанию ответ даётся на запрос любого из IP-адресов, которые установлены на хосте. Обычно это не приводит к проблемам, но может помешать реализации некоторых схем обеспечения отказоустойчивости или распределения нагрузки. Отключить это можно с помощью sysctl-параметров arp_filter и arp_ignore.
Кроме параметров sysctl, в ядре Linux реализован механизм arptables, позволяющий проводить более тонкие модификации работы протокола ARP с помощью одноимённой программы.

Добавить комментарий