У меня (во всяком случае, от имени клиента) возникают проблемы с доступом Linux к многоадресному кластеру NLB, размещенному на Hyper-V (жду дополнительной информации о том, какая версия, но я не думаю, что версия слишком актуальна, потому что это кажется проблема на стороне клиента).
В кластере NLB два участника. У каждого есть свой собственный MAC-адрес (01: xx: xx: xx: xx: xx), как обычно в режиме многоадресной рассылки. Они оба также отвечают на общий MAC-адрес многоадресной рассылки для кластера (03: xx: xx: xx: xx: xx), и именно так работает многоадресный NLB.
Проверка IP-адреса кластера с компьютера Windows работает нормально, консоль отображает результат, который вы ожидаете увидеть (отправлено 4, получено 4 и т. Д.). Если вы используете Wireshark во время пинга, вы увидите, что поток идет примерно так:
ClientIP-ClientMAC -> ClusterIP-ClusterMAC : ICMP echo request
ClusterIP-Node1MAC -> ClientIP-ClientMAC : ICMP echo response
ClusterIP-Node2MAC -> ClientIP-ClientMAC : ICMP echo response (duplicate response from the second node)
ClientIP-ClientMAC -> ClusterIP-ClusterMAC : ICMP destination unreachable (seems to be the client discarding the second ping response, and using the ClusterMAC because that's what's in its ARP table, even though that's not the MAC that the frame was received from)
Так что исходный поток немного странный, но, похоже, это сделано намеренно; Важно то, что пинг в этом сценарии действительно работает.
Однако в сети также есть устройство на базе Linux. Это не может успешно проверить связь с кластером NLB, и когда tcpdump выполняет аналогичный сеанс проверки связи, он в основном завершается после отправки эхо-запроса. Таблица ARP верна и показывает многоадресный MAC-адрес кластерного IP (03: xx: xx: xx: xx: xx), исходящий кадр имеет правильный MAC-адрес. Однако в tcpdump ответ не отображается.
Возможно ли, что ядро Linux видит возврат кадра ответа ICMP, отметив, что MAC-адрес отличается от MAC-адреса, который использовался в исходящем кадре, и затем отбрасывает его перед tcpdump (или ping, запущенным в пользовательском пространстве) ) есть шанс это увидеть?
В этом случае ответом было отслеживание многоадресной рассылки (IGMP) в Linux. Это было включено на интерфейсе моста br0 (который требуется для доступа к VPN через устройство с ответвлением); как только я отключил его с помощью sysfs, пинги начали возвращаться. Они дублировались, как и клиент Windows, но работают ...
echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping