Так что, кажется, этот вопрос много раз обсуждался в Интернете, но ответы чаще всего неполные. (Я прочитал этот вопрос, но я не удовлетворен ответами)
Вот ситуация, которая у меня есть (и, похоже, я не одинок). У меня дома есть 2 Wi-Fi, они дают доступ к различным VLAN в целях безопасности.
VLAN 10: Основная VLAN. IP-адреса: 192.168.10.x/24
VLAN 20: IP гостевой VLAN: 192.168.20.x/24
У меня есть Chromecast (2-го поколения), подключенный к VLAN 10, и я хотел бы сделать его доступным и для VLAN 20. Мой маршрутизатор - это Netgate SG-3100 с питанием от PfSense.
Я нашел этот поток Reddit, предлагающий использовать пакет Avahi для пересылки mDNS-запроса, что я и сделал. В целях тестирования я также разрешил прохождение всего трафика IPv4 и IPv6 из VLAN 20–10 и наоборот в брандмауэре.
Сначала avahi вообще не работал, но я обнаружил, что пакет не работает из коробки:
- Ошибка PfSense # 3972 (запуск команды
dbus-daemon --system
исправляет это) - Avahi dameon не запускается после перезагрузки : ручной перезапуск работает. В данной ветке форума предлагается добавить сторожевой сервис
Как только это решилось, я получил большое улучшение. Я взял пакетный трафик в VLAN 20 и увидел, что mDNS пересекает VLAN.
Так ууу! Я получил свой маршрутизатор, чтобы сообщить VLAN 20, что на VLAN 10 есть IP-адрес 192.168.10.20. Но это не делает это ...
Несмотря на это, мой телефон Android не распознает Chromecast. Я пытался понять больше о протоколе chromecast, но я заметил, что после публикации mDNS и chromecast, и устройство начинают общаться с Google API по протоколу шифрованной связи (TLSV1.2). Я не наблюдаю обмена пакетами между двумя устройствами в работающей сети.
Итак, мой телефон знает, что доступен Chromecast, а также знает, что это уникальный идентификатор (опубликован в сообщении mDNS). Оба устройства активно общаются с сервером Google VPN. Я думаю, этого было бы достаточно, но, похоже, этого нет.
Либо я что-то здесь упускаю, либо сервер Google по какой-то причине блокирует связь (скорее всего, обнаружение другой сети).
Вот захват пакета сообщения, когда мой телефон подключен к правильной сети, и это обнаружение работает. Мы видим, что мой телефон Android открывает зашифрованный канал с Google API. Вскоре после этого chromecast начинает общаться и с Google API, и они оба делают это поочередно.
Есть идеи, на что еще я мог посмотреть?