Назад | Перейти на главную страницу

Несоответствие между IP-адресом и MAC-адресом

Предположим, у вас есть два интерфейса на хосте, принадлежащие к одной подсети, подключенные к обычному порту коммутатора L2 / L3, который имеет один vlan с IP-адресом интерфейса 10.0.0.1.

nxge0  (10.0.0.201) (00:14:4f:fb:d7:af)    --> ex0/1   
nxge1  (10.0.0.202) (00:14:4f:fb:dbe:91)   --> ex0/2   

В таблице маршрутизации на хосте указано, что для всех пакетов с адресом 10.0.0.0/24 сначала используйте интерфейс nxge0, а затем nxge1. Таким образом, все пакеты до 10.0.0.0/24 будут выходить из интерфейса nxge0. Скажем, кто-то пингует с коммутатора на 10.0.0.202. Сначала коммутатор узнает MAC-адрес 10.0.0.202 из ответа ARP. Затем он создаст пакет, используя целевой mac как 00: 14: 4f: fb: dbe: 91 и ICMP Echo Request. Пакет прибывает на хост, и хост отправляет эхо-ответ ICMP. Самое забавное, что пакет будет иметь MAC-адрес источника (00: 14: 4f: fb: d7: af), поскольку он отправляется через интерфейс nxge0.

На стороне коммутатора мы видим, что эхо-запрос прошел успешно. Может ли описанный выше сценарий быть проблемой для любого протокола? Я правильно понимаю. Спасибо за вашу помощь.

Протокол ARP (протокол разрешения адресов) идентифицирует MAC-адрес в пакете и проинформирует серверы, и это должно быть так, я не вижу никаких проблем, я имею в виду, с точки зрения протокола.

Я обнаружил эту ошибку, которая связана с аналогичным сценарием (https://www.nsnam.org/bugzilla/show_bug.cgi?id=1202), но похоже, что это проявляется только при очень определенных обстоятельствах.

Один неприятный случай - когда ссылки на оба интерфейса имеют разную скорость или предназначены для формирования трафика (управление или интерфейс рабочей нагрузки, как правило, хорошая идея!) ... для таких случаев в Linux есть, например, параметры sysctl для изменения поведение arp (в случае разных подсетей - в противном случае вас все еще ждет сюрприз, поскольку поведение по умолчанию часто заключается в том, чтобы отвечать на arp для любого адреса, который хост имеет на любом интерфейсе!). та же подсеть еще сложнее, поскольку решение о маршрутизации , как вы выяснили, неоднозначные; вам потребуется исходный маршрут.