Я использую arping -D
для обнаружения повторяющихся IP-адресов в сети при настройке серверов. (Сеть контролируется кем-то другим, и в прошлом у нас было много проблем с выделением IP-адресов.) Она работает нормально, пока мой хост имеет одну сетевую карту в данной VLAN, но когда у моего хоста больше одной (я иметь один с 9 сетевыми адаптерами в одной VLAN и 1 - в другой), arping -D
всегда возвращает ложные коллизии.
Проблема в том, что все 9 моих сетевых адаптеров отвечают на запрос ARP для любого из IP-адресов этих сетевых адаптеров. (Это настоящие физические сетевые адаптеры, а не псевдонимы или что-то еще.) Я отправляю один пакет запроса ARP и получаю 9 ответов ARP is-at ARP, по одному для каждого MAC-адреса.
Я мог бы реализовать свое собственное решение, прослушивая пакеты и проверяя любые ответы с MAC-адресом, отличным от локальных сетевых адаптеров, но похоже, что должен быть более простой способ.
Во-первых, не используйте девять сетевых адаптеров в одной подсети, если вы хотите использовать соединение с полосой пропускания, если вам нужно использовать адреса ip addr
.
Чтобы исправить проблему с arp, просто установите следующие sysctl:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2