1

Тема: Подключение к DLNA через VPN(L2TP)

Стояла задача передавать Hi-Res музыку на android-телефон(Samsung Galaxy S8) c домашнего HMS(Windows 7 x64), за пределами домашней Wi-Fi сети.
В домашней Wi-Fi сети всё работает как надо, на HMS установлен профиль SACD - на телефоне установлен Neutron, музыка играет.
Как получить тоже самое вне квартиры? (сразу проясню: у меня оператор Yota, со старым безлимитным тарифом, поэтому расход трафика не волнует, для справки: у меня во время тестов ушло 18ГБ за 4 дня ).

Способ №1

Если ваш роутер(маршрутизатор) имеет на борту VPN(L2TP) сервер (а не только клиент!), то вы - счастливчик, настраивайте сервер по инструкции к роутеру и подключайтесь к нему стандартными средствами Android (инструкция).
Мой роутер(DLink DIR824AC) таким функционалом не оснащён, но у него есть DynDNS updater, и мой белый динамический IP-адрес выдаваемый провайдером связан с мои доменным именем (имя.dlinkddns.com).
Идём дальше.

Способ №2

Используем встоенные средства Windows 7 и создаём входящее VPN(L2TP) подключение (инструкция).
IPsec в данном случае не обязателен.
На роутере(маршрутизаторе) пробрасываем нужные порты, ставим галки пропускать L2TP трафик.
Стандартными средствами Android подключаемся к созданному нами VPN серверу (инструкция).
Если безопасность VPN-сервера не PSK(по паролю), а RSA(сертификаты) загружаем соотвествующие сертификаты на телефон через настройки->безопасность.
Запускаем VPN подключение на телефоне (для удобства в дальнейшем, рекомендую установить VPN-ярлык чтобы меньше пробираться через дебри меню настроек).
Запускаем на Neutron на телефоне, находим устройство в HMS(настраиваем параметры транскодирования) и радуемся. Все работает.
На этом монжо было бы и становиться, но, что если вам одновременно нужно больше чем одно VPN подключение за раз?
В моём примере супруга тоже захотела слушать Hi-Res музыку за пределами квартиры.

Если у вас XP или Windows 7 x86, можно установить патч (на свой страх и риск, если версии совпадают).
У меня x64, так что капаем дальше.

Способ №3

Воспользуемся сторонним ПО - SoftEther VPN (свободно распространяемым естественно).
Скачать можно здесь, инструция по настройке(на английском).
Я настроил в режиме PSK(по паролю) и всё прекрасно работает.
Среди возможестей сервера есть собственный Dynamic DNS.

А почему не OpenVPN, спросите вы?

Я его ставил и 2 дня пытался получить результат, но в моём случае это не возможно.
Для проброса multicast требуется чтобы OVPN (сервер и клиент) работали в режиме TAP(на 2-ом уровне), а в android сторонее ПО(работает в виртуальной среде) может создавать подключения только на 3-м уровне, поэтому доступен только режим TUN.
Если вам нужно соеденить VPNом Windows <-> Linux/Windows, то OVPN в режиме TAP будет работать.

Естественно, вышеописанное справедливо не только для прослушивания Hi-Res музыки, но и для просмотра видео (не через Neutron конечно-же).

Не претендую на оптимальность или единственность решения, но оно работает.

video{ LG&Samsung<-(lan)->HMS<-(vpn)->Neutron s8&note8 }audio

2

Re: Подключение к DLNA через VPN(L2TP)

Настройка статики в SEVPN.

Чтобы HMS нормально работал с несколькими подключенными по VPN устройствами, нужно чтобы у этих устройств появился статический IP-адрес или "статический" MAC-адрес.
SEVPN присваивает подключенным устройствам "динамический" MAC-адрес начинающийся с 0xCA, а остальные байты вычисляются hash-функцией. Привязка MAC-адреса разработчиками не предусмотрена, во избежания коллизий и конфликтов MAC-адресов в сети.
Встроен простенький DHCP-сервер, но тоже без привязки.

+ 1. Cтандартные средства SEVPN ("статический" IP)

На каждого пользователя нужно создать отдельный Virtual Hub(например vpn1,vpn2...), в котором нужно завести пользователя(например user1, user2... соответственно) и настроить свой диапазон раздачи IP-адресов в DHCP(непересекающийся).
Далее, в каждом дополнительно созданном virtual hub'е нужно сделать cascade connection к первому virtual hub'у (в нашем примере vpn1) к которому настроен bridge к сетевой карте, имя пользователя и пароль вводятся для user1.
Для подключения устройств нужно указывать имя пользователя в формате user1@vpn1.
Этот вариант работает, но, если у вас включен DHCP-сервер на роутере, то в сети будут несколько DHCP-серверов, и во избежании путаницы нужно будет либо все домашние устройства перевести на статические IP-адреса(что довольно неудобно), либо настроить долосрочную аренду IP-адресов с привязкой к MAC.
Вобщем меня он не устроил.

+ 2. Доработка SEVPN под свои нужды (cтатический MAC)

Прелесть SEVPN в том, что актуальный исходный код есть на github'е. А значит немного смекалки и наличее Visual studio 2008 SP1 позволяют нам адаптировать его под себя.
Я исправил продцедуру назначения MAC-адресов таким образом, что если в настройках пользователя в графе "Note" указать MAC-адрес в формате XX-XX-XX-XX-XX-XX, то он и будет присвоен. Если же графа "Note" остается пустой, или содержит текст длинной не равной 17 символам, то SEVPN как и рнаьше будет сам генерировать MAC-адреса.
Рекомендую в настройках пользователя включить следующие политики:
    Deny MAC Addresses Duplication = Enabled;
    Maximum Number of MAC Addresses = 1;

+ Установка патча:

Нужен установленный SoftEtherVPN v4.27-9668-beta (Stable) 29.05.2018 windows-x86_x64;

0. Качаем патч;
1. Останавливаем службу SoftEther VPN Server;
2. Переименовываем %program files%\SoftEther VPN Server\vpnserver_x64.exe (*) в vpnserver_x64.bak;
3. Копируем пропаченый vpnserver_x64.exe (*) в %program files%\SoftEther VPN Server\;
4. Запускаем службу SoftEther VPN Server;
    (*) - vpnserver.exe для версии x86.

   
Теперь можно в один virtual hub завести всех пользователей и прописать им MAC-адреса, отключить встроеный в SEVPN DHCP-сервер.


У меня в HMS в настройках устройств в профиле телефона указан MAC-адрес wi-fi адаптера. Его же я указал в настройках SEVPN.
Таким образом, что для HMS, что для Neutron нет никакой разницы подключен ли я по wi-fi дома или черт знает где по VPN - все работает одинаково.

video{ LG&Samsung<-(lan)->HMS<-(vpn)->Neutron s8&note8 }audio

3 (2019.08.22 15:31:35 отредактировано Daeamon)

Re: Подключение к DLNA через VPN(L2TP)

Настроил vpn на mikrotik l2tp over ipsec., подключается компы пингуются, с компов тело тоже пингуется, но hms в сети я не вижу с телефона. Подсеть соответственно у телефона другая у hms 192.168.1.100 у телефона 192.168.2.2. Помогите пожалуйста...

4

Re: Подключение к DLNA через VPN(L2TP)

Так может дело как раз в разных подсетях? Где-то, возможно даже на этом форуме, была ссылка на эксперименты с пробросом dlna с помощью vpn на mikrotik. Насколько я помню, там автор увеличивал значение ttl, но лучше прочитать его заметку...

video{ LG&Samsung<-(lan)->HMS<-(vpn)->Neutron s8&note8 }audio

5

Re: Подключение к DLNA через VPN(L2TP)

Daeamon пишет:

Настроил vpn на mikrotik l2tp over ipsec., подключается компы пингуются, с компов тело тоже пингуется, но hms в сети я не вижу с телефона. Подсеть соответственно у телефона другая у hms 192.168.1.100 у телефона 192.168.2.2. Помогите пожалуйста...

DLNA работает по широковещательному трафику, который режется на vpn-соединении, не важно, какая там подсеть и адрес (при наличии маршрутов), лишь бы сегмент локальной сети был общим, т.е. помимо поднятого vpn нужно ещё EoIP, при наличии 2-х роутеров проблема легко решается, если нужно смотреть с устройства - то проще зайти по web на сервер (порт смотрите в настройках), та же структура, только без красивых картинок. Профиль устройства настраивается точно так же, пользуюсь, работает, на телефоне и ноутбуке в поездках.

Ну и в догонку, нафиг Вам ipsec? Какой микротик? Если 4011 или hap ac2 (на arm) то пофиг, там аппаратный ipsec, а на mipsbe или smips все ресурсы сожрёт. Стройте pptp.

BRAVIA KDL-40EX700, webos@LG-42LF650V, WDTVLive, Enigma@DM800, Enigma@GI-S8120, Android@LT-43T600F
Спасибо сказали: Daeamon1

6 (2019.08.29 12:19:40 отредактировано Daeamon)

Re: Подключение к DLNA через VPN(L2TP)

fctsu001 пишет:

Какой микротик?

hap ac2.
Через web качество звука не отличается качеством плюс невозможно будет передать поток на цап

7 (2019.08.29 12:30:01 отредактировано fctsu001)

Re: Подключение к DLNA через VPN(L2TP)

Daeamon пишет:

hap ac2.
Через web качество звука не отличается качеством плюс невозможно будет передать поток на цап

С другой стороны тоже микротик или устройство? Если микротик, то объединяйте 2 сети по EoIP (делаете интерфейсы на микротиках и засовываете их в локальный бридж) и будет Вам DLNA общий на всю сеть, только надо с mss разобраться.
Через web происходит то же самое, что и по DLNA, HMS транскодирует в соответствии с профилем устройства (только устройством будет узел маршрутизации, в Вашем случае адрес и MAC микротика), устройство получает ссылку на поток, если в профиле устройства задано получение прямых ссылок, то будет прямая ссылка на исходник минуя HMS, о каких отличиях качества Вы говорите, мне не понятно.

ЗЫ под устройством имел ввиду телефон или ноутбук, которые умеют нормально обрабатывать ссылки на потоки с web, если Вы телевизор или ресивер так подключаете, то только EoIP Вас спасёт.

BRAVIA KDL-40EX700, webos@LG-42LF650V, WDTVLive, Enigma@DM800, Enigma@GI-S8120, Android@LT-43T600F
Спасибо сказали: Daeamon1

8 (2019.08.29 12:33:34 отредактировано Daeamon)

Re: Подключение к DLNA через VPN(L2TP)

fctsu001 пишет:

С другой стороны тоже микротик или устройство?

С другой стороны телефон

fctsu001 пишет:

устройство получает ссылку на поток

А как я треки переключать буду?)))
Через hms если я подключен просто по вафле на телефоне я могу вытянуть библиотеку и спокойно переключать треки.

fctsu001 пишет:

EoIP Вас спасёт.

Хорошо, спасибо, попробую его настроить.

fctsu001 пишет:

Зачем вам ipsec.


ipsec вроде как шифрует трафик. VPN используется не только лишь для прослушивания музыки. Планируется его использовать с целью администрирования сервера и пр.

9 (2019.08.29 13:30:49 отредактировано fctsu001)

Re: Подключение к DLNA через VPN(L2TP)

Daeamon пишет:

А как я треки переключать буду?)))

Так же через web, вариантов нет.

Что значит - вытянуть библиотеку, по DLNA у Вас просто структура, ссылки треков отдельно, ну может интерфейс у DLNA-клиента более дружественный, тут согласен. Ну или попробуйте на телефоне EoIP настроить, но это уже извращение.
EoIP - проприетарная технология микротика и больше Вы её нигде не найдёте. Есть методы маршрутизации широковещательного трафика, почитайте про PIM и IGMP proxy, возможно прокинете широковещательный трафик через VPN.

И зачем делать было другую подсеть, я не понимаю, надо сделать адрес в той же подсети, выделять его тем же DHCP-сервером, просто нужно в профиле соединения на сервере добавить передачу маршрута клиенту в сеть (если на клиенте снята галка "получить интернет из этой сети") или на клиенте руками прописать, у меня так.

Daeamon пишет:

ipsec вроде как шифрует трафик. VPN используется не только лишь для прослушивания музыки. Планируется его использовать с целью администрирования сервера и пр.

pptp тоже шифрует (если правильно настроено), шифрование менее строгое и меньше грузит, в Вашем случае всё равно, но я бы убедился, что на телефоне работает аппаратная поддержка IPSEC (она там скорее всего есть, но может не использоваться), иначе будет жрать батарею.

BRAVIA KDL-40EX700, webos@LG-42LF650V, WDTVLive, Enigma@DM800, Enigma@GI-S8120, Android@LT-43T600F

10 (2019.08.29 12:49:16 отредактировано Daeamon)

Re: Подключение к DLNA через VPN(L2TP)

fctsu001 пишет:

надо сделать адрес в той же подсети

Интернет из этой сети я получаю))  Да и адрес в той же подсети пробовал делать но это не особо помогает да еще и интерфейс на это соединение почему то слетает.

fctsu001 пишет:

Что значит - вытянуть библиотеку

Hms сканирует мою библиотеку с музыкой. Составляет списки треков(сортированные/несортированные/по жанрам и т.д.). Такой список можно вытянуть в плеер на телефоне bubble upnp player помоему такое позволяет сделать, по крайней мере через вафлю так сделать получается.
Погуглил на тему eoip, на первый взгляд упоминаний о применении данной технологии в андройде вроде как нету...

Вообще вся идея в том что сейчас я тяну музыку через WebDav. Он весьма медлителен. Пересканирование библиотеки занимает определенное время. Один из плееров вообще повисает на долго во время этого процесса. Поэтому я посмотрел в сторону HMS и поднятия впн соединения. Конечно можно попробовать создать нешифрованное соединение но это отягощается геморроем с закрытием всей сети кроме HMS(при том на том же сервере еще крутится куча всего)

fctsu001 пишет:

иначе будет жрать батарею.

До жора батареи я еще как бы и не добрался... Достучаться то до hms не получается.

11 (2019.08.29 13:11:42 отредактировано fctsu001)

Re: Подключение к DLNA через VPN(L2TP)

Daeamon пишет:

Да и адрес в той же подсети пробовал делать но это не особо помогает да еще и интерфейс на это соединение почему то слетает.

Где, в клиенте? У меня ничего не слетает.

Daeamon пишет:

Hms сканирует мою библиотеку с музыкой. Составляет списки треков(сортированные/несортированные/по жанрам и т.д.). Такой список можно вытянуть в плеер на телефоне bubble upnp player помоему такое позволяет сделать, по крайней мере через вафлю так сделать получается.

Ну так у Вас всё то же и останется, просто web интерфейс к HMS, ссылки с web кликаете и они в плеере открываются. Не совсем удобно, но работает.

Без шифрования никто не предлагал. Если на телефоне поддерживается аппаратный ipsec, то вообще это оптимальный вариант, если нет, то pptp.

Daeamon пишет:

Интернет из этой сети я получаю))

зачем лишний трафик гонять через туннель, проще маршрут до подсети на клиенте вписать (прямо в свойствах VPN, дополнительно).

BRAVIA KDL-40EX700, webos@LG-42LF650V, WDTVLive, Enigma@DM800, Enigma@GI-S8120, Android@LT-43T600F

12

Re: Подключение к DLNA через VPN(L2TP)

fctsu001 пишет:

pptp.

Pptp не работает в режиме постоянной впн. И он проблему видимости hms не решает

13

Re: Подключение к DLNA через VPN(L2TP)

Daeamon пишет:

Pptp не работает в режиме постоянной впн.

Что за режим такой? 

Daeamon пишет:

И он проблему видимости hms не решает

Проблему видимости решает eoip, но на телефоне этого не сделать, проблема в том, что любое ppp соединение не пропускает широковещательные пакеты, на которых основана работа dlna, для решения этой проблемы я использую web доступ. Pptp относительно l2tp+ipsec предлагается для уменьшения нагрузки на сервер и клиент, что бы трафик не резался.

BRAVIA KDL-40EX700, webos@LG-42LF650V, WDTVLive, Enigma@DM800, Enigma@GI-S8120, Android@LT-43T600F

14

Re: Подключение к DLNA через VPN(L2TP)

fctsu001 пишет:

Что за режим такой?

Это что бы когда интернет пропадет соединение с впн восстановилось

15

Re: Подключение к DLNA через VPN(L2TP)

Daeamon пишет:

Это что бы когда интернет пропадет соединение с впн восстановилось

А что, l2tp восстанавливается?
У меня на телефоне pptp периодически отваливается, соединение активно, трафик не идёт. Keepalive телефон не поддерживает.

BRAVIA KDL-40EX700, webos@LG-42LF650V, WDTVLive, Enigma@DM800, Enigma@GI-S8120, Android@LT-43T600F

16

Re: Подключение к DLNA через VPN(L2TP)

fctsu001 пишет:

А что, l2tp восстанавливается?
У меня на телефоне pptp периодически отваливается, соединение активно, трафик не идёт. Keepalive телефон не поддерживает.

Да, для l2tp можно включить функцию "постоянная vpn" и подключение будет восстанавливаться, для pptp если соединение отвалится то само не восстановится.

Прикреплённые файлы сообщения

Screenshot_20190911-114243_Settings.jpg 83.31 kb, скачивалось 10 раз, начиная с 2019.09.11

17

Re: Подключение к DLNA через VPN(L2TP)

Daeamon пишет:

Да, для l2tp можно включить функцию "постоянная vpn

посмотрел, действительно так, мне как раз нужее сейчас такой режим. Спасибо за наводку.

BRAVIA KDL-40EX700, webos@LG-42LF650V, WDTVLive, Enigma@DM800, Enigma@GI-S8120, Android@LT-43T600F