Области связи IPv6 Многоадресные пакеты внезапно не маршрутизируются на MacBook Pro?

Это немного неясный вопрос, но я в тупике, и я подумал, что, возможно, кто-то там может иметь больше информации по этому вопросу.

Мой сотрудник успешно запускает собственное приложение, которое использует многоадресную рассылку IPv6 на своем MacBook Pro в течение нескольких месяцев, но сегодня Mac решил прекратить маршрутизацию пакетов многоадресной передачи. В частности, программа печатает эту ошибку:

SendDataUDP (ff02 :: bead: cede: deed: feed @ 4) failed at Network interface [Name = [en0] Описание = [] IP = [fe80 :: 222: 41ff: fe21: dfd4 @ 4] Netmask = [ffff: ffff: ffff: ffff ::] Broadcast = [::]] (errno = 65 / No route to host).

… который довольно хорошо описывает, что пошло не так … он попытался отправить () пакет UDP на указанный IP-адрес и отправить () с ошибкой = EHOSTUNREACH.

Я не понимаю, что может привести к тому, что адрес многоадресной рассылки IPv6 будет «недоступен»? Если мое понимание многоадресной рассылки ссылок правильное, пакет должен выйти из локального Ethernet-порта (en0 в этом случае, который работает и работает на этом компьютере).

Есть ли какой-то аспект для многоадресной рассылки, который мне не хватает, или его машина просто разорвана? Он говорит, что ничего не изменил, он просто таинственно прекратил работать.

    Это может помочь посмотреть на источник ядра . (В частности, исходящий путь выхода IPv6-пакета, ip6_output.c) Пока вы там, вы также можете взглянуть на вызовы сокета, ведущие к нему, и т. Д.

    Для многоадресной рассылки, предполагая, что вы делаете ее в ip6_output() , похоже, что единственный возможный способ получить эту ошибку – не указывать интерфейс для отправки. (что нечетно, поскольку ваше сообщение об ошибке явно упоминает интерфейс)

    Возможно ли, что беспроводной интерфейс на этом MacBook был включен, когда это было не раньше, и теперь идея многоадресной передачи «link-local» неоднозначна? Вы явно указываете интерфейс при использовании сокета? @ 4 в конце адреса выглядит странно для меня. (Является ли это индексом интерфейса?) Обычно соглашение обычно использует % для идентификатора области интерфейса, но, как отмечено в предыдущем ответе и его комментариях, он не поддерживается повсеместно.

    Чтобы проверить, действительно ли функция en0 может передавать запросы локальной локальной многоадресной передачи, попробуйте

     ping6 ff02::1%en0 

    Это касается всех хостов, поэтому вы должны получить множество ответов (для удовольствия, попробуйте добавить -w).