Хост CentOS оснащен несколькими сетевыми адаптерами. Все сетевые карты привязаны к одной подсети (пусть это будет 10.0.0.0/24). Их IP-конфигурация предоставляется DHCP-сервером (в качестве резервирования).
При попытке удаленно получить запись ARP для определенного IP-адреса, принадлежащего определенной сетевой карте (с arp -a
от хоста Windows), я всегда получаю один и тот же MAC-адрес, который равен MAC-адресу первого интерфейса хоста (eth0), независимо от MAC-адреса реального адаптера. Пример:
adapter, ip, mac, arpcache entry:
eth0, 10.0.0.1, aa:aa:aa:aa:aa:00, aa-aa-aa-aa-aa-00
eth1, 10.0.0.2, aa:aa:aa:aa:aa:11, aa-aa-aa-aa-aa-00
eth2, 10.0.0.3, aa:aa:aa:aa:aa:22, aa-aa-aa-aa-aa-00
…
Для хостов Windows с аналогичной конфигурацией я получаю разные MAC-адреса для разных адаптеров (в соответствии с конфигурацией адаптера).
Почему хосты Linux отвечают одним MAC-адресом? Почему хосты Windows действуют противоположным образом? В чем причины такого поведения?
Как настроить текущие основные дистрибутивы Linux для ответа с разными MAC-адресами? Я читал похожую тему Ubuntu Linux - несколько сетевых адаптеров, одна и та же локальная сеть ... ARP-ответы всегда выходят из одного сетевого адаптера, но предлагаемые ответы не работают для моего хоста CentOS 6.4 - адаптеры выше eth0 становятся недоступными.
Поскольку реализация IPv4 по умолчанию в ядре Linux основана на «модели слабого хоста»: http://en.wikipedia.org/wiki/Host_model
Вы можете настроить несколько таблиц маршрутизации, каждая из которых имеет отдельное значение по умолчанию для соответствующего шлюза, и правила, указывающие трафику с определенных IP-адресов на использование соответствующего маршрута.
Насколько я понимаю, вы хотите, чтобы ответ arp передавался от сетевой карты, которая получает запрос?
Поместите следующее в свой /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
А потом беги
sysctl -p
Эти правила гарантируют, что запросы arp обрабатываются только на том интерфейсе, на который они прибыли.