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