New We are sorting MAX channels into categories and territories. Read the news

ARP Flux: почему Linux отвечает за IP не с того интерфейса



👋 Приветствую в мире цифровой безопасности!

На сервере две сетевые карты, у каждой свой IP. Но в ARP-таблице соседнего устройства адрес первой карты вдруг оказывается привязан к MAC второй. Проверяешь настройки, а там всё вроде правильно. Откуда взялся чужой MAC? У Linux есть такая особенность, называется ARP Flux.

⏺В чём дело? Linux по умолчанию считает IP-адреса принадлежащими всему хосту, а не отдельной сетевой карте. Поэтому, когда оба интерфейса находятся в одной подсети, ядро может ответить на ARP-запрос через интерфейс, которому этот IP не назначен.

⏺В результате соседние устройства получают неожиданные соответствия IP и MAC. Особенно неприятно, когда из-за этого начинает скакать связность.

⏺Проверим, как настроен ARP:

sysctl net.ipv4.conf.all.arp_ignore
sysctl net.ipv4.conf.all.arp_announce
sysctl net.ipv4.conf.all.arp_filter


Если arp_ignore=0, ядро может отвечать на запросы о локальных IP, даже когда они назначены другому интерфейсу.

⏺Теперь посмотрим, что происходит в сети. На сервере запускаем захват ARP:

sudo tcpdump -eni eth0 arp
sudo tcpdump -eni eth1 arp


А с соседней машины отправляем запрос к одному из IP сервера:
sudo arping -I eth0 192.168.1.10
Сравниваем ответы и MAC-адреса. Если один IP отвечает через разные интерфейсы, причину уже легче искать.

⏺Как привести ARP в порядок? Для обычного сервера с двумя интерфейсами в одной подсети часто хватает:

sudo sysctl -w net.ipv4.conf.all.arp_ignore=1
sudo sysctl -w net.ipv4.conf.all.arp_announce=2


arp_ignore=1 заставляет отвечать только за IP принимающего интерфейса, а arp_announce=2 помогает выбирать подходящий исходный адрес для ARP-запросов. Только не применяйте настройки вслепую на серверах с VRRP, bonding или сложной маршрутизацией. Там могут понадобиться другие параметры, включая arp_filter и policy routing.

⏺Кстати, ARP Flux легко спутать с конфликтом IP или проблемой на коммутаторе. Поэтому, если в соседской ARP-таблице постоянно меняется MAC, сначала проверьте, не отвечает ли сам Linux сразу с нескольких интерфейсов.

🤖Бесплатный ChatGPT
Views: 207
Open in MAX Report an inaccuracy

Report an inaccuracy

Describe what needs fixing. If you have a source, add a link.

You are leaving datool.ru

The link leads to an external website. datool.ru is not responsible for its content — check the address before entering passwords or payment details.

Redirecting in 10 s

Go