Будет ли linux отбрасывать многоадресные пакеты, которые не находятся в одной подсети?

#linux #networking #multicast

#linux #сеть #многоадресная рассылка

Вопрос:

Я хочу построить оверлейную сеть с помощью многоадресной рассылки VXLAN для обеспечения связи между виртуальными машинами, но я обнаружил, что многоадресные пакеты могут передаваться только в одной подсети. Чтобы разрешить виртуальным машинам на хостах, которые не находятся в одной подсети, обмениваться данными, я думаю, будет ли работать «захват и пересылка пакетов». То есть, возьмите UDP-пакет с адресом назначения 239.1.1.1 и портом 4789 на hostA в network1 и отправьте его на hostB в network2, и пусть hostB отправляет многоадресный пакет. Затем я обнаружил, что все хосты в network2 могут перехватить этот пакет с помощью wireshark, но ни один хост не соответствует ему. Интересно, есть ли в Linux механизм для отбрасывания поддельных многоадресных пакетов? Если это так, как следует предотвратить этот механизм?

Ответ №1:

Необработанная многоадресная рассылка, по сути, является широковещательной. Для многоадресной рассылки IPv4 этот эффект широковещательной рассылки может быть уменьшен с помощью IGMP. В коммутируемых сетях с полуинтеллектуальными коммутаторами может быть реализована функция отслеживания IGMP для дополнительной помощи в этом. При условии, что это существует, конечное устройство должно подписаться на группу многоадресной рассылки, отправив IGMP-соединение для данной группы, чтобы «отфильтровать» этот трафик по отношению к себе. Маршрутизацию многоадресной рассылки между подсетями можно выполнять с помощью реализаций PIM или DVRMP или даже статических демонов маршрутизации многоадресной рассылки.

Единственным исключением из этой фильтрации является диапазон 224.0.0.x, который зарезервирован для локальной связи, обычно по протоколам IETF. Трафик в эти группы никогда не должен фильтроваться каким-либо образом.

Следовательно, чтобы предотвратить фильтрацию, либо конечные устройства присоединяются к группе (рекомендуется!), либо вы отправляете трафик группе в зарезервированном диапазоне, например, на 224.0.0.1 группе all-hosts. (Это некрасиво, и вы можете вызвать некрасивые ошибки на устройствах в локальной сети, но это работает.)