Как проверить, не блокирует ли мой маршрутизатор многоадресный трафик?
Я пытаюсь отправлять и получать многоадресную программу C# на моем компьютере. Как проверить, не блокирует ли мой маршрутизатор многоадресную передачу? т.е. получают ли члены группы пакеты от 224.0.0.1.
2 ответа
Маршрутизаторы IPv4 не должны пересылать многоадресные сообщения на 224.0.0.1. Это адрес многоадресной рассылки "все хосты". Этот адрес не является маршрутизируемым многоадресным адресом. См. RFC 3171, "Рекомендации IANA для назначения адресов многоадресной рассылки IPv4". Это не разрешено вне текущей сети канального уровня (уровень 2). В противном случае, когда вы отправляете эхо-запрос на него, вы буквально пропингуете каждый последний хост с поддержкой IPv4 во всем Интернете и мгновенно получаете DDOS-ответ со всеми ответами на эхо-запрос.:-)
При разработке вашего приложения, я думаю, вы, вероятно, захотите использовать адреса IP Multicast с административной областью (239/8). См. RFC 2365. предостережение лектора: я, конечно, не эксперт по многоадресной маршрутизации IPv4.
Если бы вы использовали термины непрофессионала вместо точного сетевого жаргона, а сетевое устройство, которое вы называли "маршрутизатором", на самом деле является просто мостом / коммутатором Ethernet, а не маршрутизатором IPv4, то оно действительно перенаправило бы его между портами, потому что это то, что Ethernet мосты / коммутаторы обязаны делать. Поскольку на уровне Ethernet для MAC-адреса назначения будет установлен многоадресный бит.
Если вы вообще имеете дело с 802.11 (Wi-Fi), обратите внимание, что 802.11 - это протокол канального уровня, в основном беспроводной Ethernet. Устройство, которое соединяет беспроводной Ethernet с проводным Ethernet, технически называется "Точка доступа" или AP. Точка доступа может быть простым мостом канального уровня между проводным и беспроводным Ethernet. Таким образом, некоторые устройства, которые в терминах непрофессионала люди называют "беспроводным маршрутизатором", могут, в зависимости от того, как вы его настроили, на самом деле просто быть мостовой точкой доступа, а не маршрутизатором вообще.
Но если у вас есть "беспроводной маршрутизатор", настроенный для работы в качестве шлюза IPv4 NAT, то можно считать его маршрутизатором, потому что шлюз NAT в значительной степени выполняет все действия простого маршрутизатора IPv4, а также использует несколько более Уловки уровня, позволяющие сделать трафик от хостов частной подсети на стороне локальной сети так, как будто он на самом деле исходит от одного публично маршрутизируемого IP-адреса шлюза на стороне WAN. Но даже если это NAT-шлюз, он не должен пересылать пакеты для 224.0.0.1 из LAN-в-WAN или WAN-в-LAN.
Проблемы с оборудованием:
Проверьте марку, модель и документацию, чтобы убедиться, что оборудование поддерживает многоадресную рассылку. Предполагая, что это не проблема с оборудованием, проверьте конфигурацию точки доступа / коммутатора / шлюза /"пропускающего трафик blinky box"...
Диагноз:
Как пользователь C# вам может понадобиться перевести мои команды / ответы для Mac/Unix в Windows land...
Когда я бегу: > ifconfig
из моего дома я получаю:
...
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
...
это имеет смысл, потому что я использую zeroconf, mDNS, услуги Bonjour и т. д. дома через беспроводное соединение. Когда я выполняю ту же самую вещь в коворкинг-пространстве, где не работает ни один из компонентов zeroconf, я также заметил ifconfig
Команда исключает флаг многоадресной рассылки.
...
en1: flags=963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX> mtu 1500
....
Для администраторов шлюза
Войдите в точку доступа и попробуйте включить многоадресную рассылку. Для справки, если вы используете ориентированный на потребителя "роутер", вам, возможно, придется перейти на вкладки "Дополнительно" (пример в формате PDF от Time Warner. Обязательно найдите "mulitcast")