Вопрос или проблема
У меня есть проблема с тем, чтобы сделать Spotify Connect доступным в моей локальной сети. Я почти уверен, что это проблема с multicast, но мне трудно выяснить, как это исправить.
У меня запущен LibreSpot на моем Raspberry Pi (и колонки подключены к нему). Он подключен через проводное соединение к локальному (не беспроводному) маршрутизатору (Маршрутизатор A), который обеспечивает подключение к интернету. Этот Маршрутизатор A также подключен через проводное соединение к (беспроводному) Маршрутизатору B.
Большинство моих локальных устройств (мой телефон, ноутбук и т. д.) подключены к Маршрутизатору B. Проблема в том, что эти устройства не могут видеть службу librespot в Spotify (ни на моем телефоне, ни на ноутбуке).
Раньше я находил устройство librespot, вводя свое имя пользователя и пароль непосредственно в librespot, и тогда оно обнаруживалось на моем телефоне, но поддержка этого была отменена, и я не могу использовать это больше. Правильным решением будет позволить librespot аутентифицироваться через клиента с помощью zeroconf.
Подсеть Маршрутизатора A — 192.168.88.XXX, а подсеть Маршрутизатора B — 192.168.1.XXX.
Сервер zeroconf для Librespot работает на 192.168.88.226 и порту 37901. Это определенно работает, так как, когда я запускаю этот URL в браузере, он предоставляет основную информацию:
{
accountReq: "PREMIUM",
activeUser: "",
availability: "",
brandDisplayName: "librespot",
clientID: "[id]",
deviceID: "[id]",
deviceType: "Speaker",
groupStatus: "NONE",
libraryVersion: "0.5.0",
modelDisplayName: "librespot",
productID: 0,
publicKey: "[redacted]",
remoteName: "RPi",
resolverVersion: "1",
scope: "streaming",
spotifyError: 0,
status: 101,
statusString: "OK",
supported_capabilities: 1,
supported_drm_media_formats: [ ],
tokenType: "default",
version: "2.9.0"
}
Поэтому я думаю, что это проблема с multicast, и что она неправильно передается в подсеть Маршрутизатора B. Я полагаю, что если бы я подключил свой Pi к Маршрутизатору B, это бы сработало нормально, но я предпочел бы оставить свою сеть в том же состоянии.
Я не знаю, как это отладить или даже исправить. Нужно ли мне как-то настроить Маршрутизатор B для перенаправления multicast zeroconf? Нужно ли мне по-другому настроить LibreSpot?
Спасибо за любую помощь.
mDNS (“zeroconf”) использует link-local multicast. Его пакеты никогда не пересекут маршрутизаторы, независимо от того, включена ли маршрутизация multicast на маршрутизаторе или нет.
Чтобы это заработало, вам нужен mDNS прокси, работающий на маршрутизаторе B (или, возможно, на каком-то другом устройстве, которое подключено к обеим сетям). В последних версиях RouterOS есть встроенный прокси mDNS; устройства на Linux могут запускать avahi-daemon в режиме “отражателя”.
Ответ или решение
Решение проблемы с обнаружением LibreSpot в локальной сети
Введение
Проблема, которая стоит перед вами, заключается в невозможности обнаружения устройства LibreSpot, работающего на Raspberry Pi, в вашей локальной сети. Судя по всему, это связано с особенностями работы протокола mDNS (Multicast DNS), который используется для автоматического обнаружения устройств в локальных сетях.
Описание проблемы
LibreSpot находится в подсети 192.168.88.XXX, связанной с маршрутизатором A, в то время как ваши устройства (телефон, ноутбук и т.д.) подключены к маршрутизатору B с подсетью 192.168.1.XXX. Протокол mDNS, используемый для обнаружения LibreSpot, как правило, не проходит через маршрутизаторы, что и вызывает вашу проблему. Пакеты mDNS, как правило, являются многокастовыми и предназначены только для передачи в пределах одной сети, таким образом, они не могут перейти из одной подсети в другую.
Потенциальные решения
Для решения вашей проблемы есть несколько подходов, рассмотрим их подробнее:
1. Настройка mDNS-прокси
mDNS-прокси является одним из наиболее подходящих решений для передачи mDNS сообщений между двумя разными подсетями. Вы можете установить и настроить mDNS-прокси на маршрутизаторе B (если он поддерживает эту функцию) или на другом устройстве, подключенном к обеим сетям.
-
Маршрутизатор B: Новейшие версии RouterOS подразумевают наличие встроенного mDNS-прокси. В таком случае, вам просто нужно включить данную функцию в настройках маршрутизатора.
-
Linux-устройство: Если ваш маршрутизатор B не поддерживает mDNS-прокси, вы можете установить
avahi-daemon
на любом устройстве, подключенном к обеим подсетям, и настроить его в режиме "reflector". Таким образом, вы сможете перенаправлять multicast запросы от одной подсети к другой.
2. Перемещение На Raspberry Pi
Второй вариант, хотя и менее желательный, — это подключить ваш Raspberry Pi непосредственно к маршрутизатору B. Это позволит LibreSpot и вашим устройствам находиться в одной подсети, тем самым устраняя проблему с многокастом. Однако, вы указали, что хотите сохранить текущее сетевое строение, поэтому это решение не идеальное в вашем случае.
3. Изучение параметров маршрутизаторов
Подумайте о возможности использования функции IGMP Snooping и настройки маршрутизаторов на поддержку моста между вашими сетями. Тем не менее, успешность этого варианта может быть ограничена моделью маршрутизаторов и их конфигурацией.
Выводы
Ваши главные шаги должны включать настройку mDNS-прокси на маршрутизаторе B или на другом устройстве, подключенном к обеим подсетям. Это наиболее эффективное и менее затруднительное решение проблемы обнаружения LibreSpot для ваших устройств в локальной сети.
Если у вас возникнут трудности с настройкой или потребуется дополнительная информация, не стесняйтесь обратиться за помощью к специалистам в области сетевых технологий либо в интернет-сообщества, специализирующиеся на решении подобных проблем.
Поддержание хорошего соединения и доступности сервисов в вашей сети поможет улучшить качество вашего опыта использования Spotify и других сетевых услуг.